SoapUI: тестирование SOAP и REST API

Что такое API

По стандартному определению, «программный интерфейс приложения», программный «посредник» между приложениями. API состоит из набора правил взаимодействия, описывающих как приложение работает с другими приложениями. Иначе говоря, API — это механизм обмена данными (функциями) между приложениями.

Что такое API
Что такое API

Когда приложению нужны данные из другого приложения (или нужно отправить свои данные в другое приложение), происходит взаимодействие через API. Чаще всего приложению нужно запросить срабатывание сервиса (то есть какой-то «внешней функции») другого приложения. Суть API — не в взаимодействии с пользователем через пользовательский интерфейс, а в взаимодействии на уровне программа-программа.

Тестирование API

Тестирование API типологически относится к интеграционному тестированию. Оно подтверждает, что качество работы API соответствует сформулированным требованиям к продукту. Тестирование API работает на уровне бизнес-логики приложения.

Тестирование API не затрагивает пользовательский интерфейс, не касается «вида и ощущений» от продукта. Тестировщик программно эмулирует данные и сценарии взаимодействий. Фокус — на функциональности, а не на user experience, как в других видах тестирования, «обращенных к пользователю».

Почему тестирование API сейчас востребовано в QA

  • Растущая взаимосвязанность ИТ-сервисов, зависимость множества приложений от API-сервисов крупных компаний
  • При тестировании API возможно автоматизированное тестирование, что экономит усилия
  • А также параллелизация тестов
  • Независимость от языка программирования (данными обмениваются в формате JSON или XML, следовательно тестировать API-ответы можно на любом общеупотребительном в QA языке)
  • Простая интеграция с GUI-инструментами тестирования, и наличие удобных инструментов, и в частности SoapUI

Инструменты

Кроме Soap UI (его официальный сайт здесь):

Что такое Soap UI

Заявляется владельцем как «самый часто применяемый инструмент для тестирования API в мире». С открытыми исходниками, годится в принципе для всех видов тестирования API: функциональное, регрессионное, нагрузочное и тестирование совместимости.

  • Функциональное тестирование API. Проверка общей функциональности приложения (работает ли в соответствии с функциональными требованиями). 
  • Регрессионное тестирование API — проверка того, что изменения/багфиксы не повредили существовавшую функциональность системы.
  • Совместимости API — что система отвечает требованиям по совместимости API с другими системами и стандартами, возможности работы на других платформах и т.п.
  • Нагрузочное тестирование API — проверка работы API в условиях стандартной рабочей и повышенной нагрузки.

Доступен ли в России

Формально — нет, для пользователей с российским IP доступ к сайту закрыт (по крайней мере об этом пишут). С другой стороны, есть VPN, или можно просто попросить кого-то переслать установочный файл.

Применение Soap UI

Разумеется, это в первую очередь функциональное тестирование, как один из необходимых видов тестирования на интеграционном уровне. Проверяющее, что каждая функция в приложении, зависящая от API, работает как прописано в требованиях. Подход черного ящика (код сообщающихся по API модулей неизвестен тестировщику). Также пенетрационное тестирование (пентесты), исследование уязвимости API к проникновению злоумышленников. Далее подробнее.

Функциональное тестирование

  • Очень мощный инструмент функционального тестирования API
  • Перетаскивание мышкой, ускоряющее создание скриптов
  • Поддерживает дебаг автотестов
  • Поддержка Data-Driven-тестирования
  • Поддержка нескольких тестовых окружений: переключение между QA-, Dev- и Prod-окружениями
  • Продвинутые тестовые сценарии с кастомным кодом

Тестирование безопасности

  • Есть возможности делать полный набор тестов проверки уязвимостей
  • Предотвращает SQL-инъекции
  • Проверка на переполнение буфера большими документами
  • Проверка на XSS-уязвимости при передаче параметров
  • Поддержка fuzzy-сканирования и сканирования граничных значений

Нагрузочное тестирование

  • Нагрузочное тестирование при помощи LoadUI-Агентов
  • Режимы объемного и нагрузочного тестирования
  • Продвинутые функции репортов и записи параметров нагрузки
  • Сквозное нагрузочное тестирование

Тестирование совместимости

Тестирование аутентификации (сертификатов) и совместимости в различных системах.

Регрессионное 

Анализ багов и проблем в веб-сервисах (повторная верификация после модификаций сервисов).

Архитектура SoapUI

SoapUI - Архитектура
Архитектура типичной конфигурации SoapUI

Архитектура SoapUI сравнительно проще, чем у других подобных инструментов тестирования.

  • Файлы конфигурации тестов. Тестовые данные, ожидаемые результаты, переменные для подключения к базам данных, и другие переменные и данные для тестирования.
  • Third-party API. Сторонние API для оптимизации тестового фреймворка. В частности JExcel API для интеграции с Microsoft Excel, для создания DDT-фреймворка.
  • Selenium. JAR-файл Selenium для автоматизации
  • SoapUI Runner для запуска автотестов из командной строки.
  • Groovy-библиотека для написания сценариев на Groovy.
  • Свойства (Properties). В Свойствах хранятся динамически генерируемые данные. Например, для конфигурирования SSL и других параметров безопасности.
  • Репорты (отчеты), в стиле JUnit, плюс JasperReports для оформления.
Soap UI - Технологии

Какие протоколы поддерживает SoapUI

  • SOAP
  • WSDL
  • REST
  • HTTP(S)
  • AMF
  • JDBC
  • JMS

Интеграция Soap UI с другими инструментами

  • Maven, инструментом управления билдами, репортами и документацией из центрального репозитория. Также Maven может выполнять SoapUI-тесты при помощи простых команд Maven Build.
  • Hudson, Java-инструмент для Continuous Integration, подключающийся к CVS, Subversion, Git, Perforce, Clearcase, RTC. И SoapUI, что помогает быстро находить баги в каждом коммите.
  • JUnit, Java-фреймворк для юнит-тестирования, управляющий выполнением из SoapUI.
  • Apache Ant, Java-библиотека, позволяющая запускать API-тесты при помощи Ant Automated Build.

SoapUI и Selenium — сравнение

SoapUISelenium
Не предназначен для тестирования UI приложений и сайтов. Широко применяют для тестирования интерфейса 
Тестирует отправляемые и принимаемые данные между браузером и сервером, через протоколы REST и SOAPНе тестирует как работают протоколы, а как работает интерфейс
Для функционального, нагрузочного и безопасного тестированияВ целом только функциональное тестирование. Может и для нагрузочного, оценивая время отклика, но не поддерживает множественных пользователей. Не годится для тестирования безопасности.
Построен «вокруг протоколов» и не зависит от браузеровПостроен «вокруг браузеров»

SoapUI и Postman — сравнение

SoapUIPostman
Для SOAP, REST, Graph QLДля REST API
Data-driven-тестированиеНе поддерживает DDT
Кастомизация репортов в разные форматыРепорты только в JSON и HTML
Для тестирования APIДля ручного и исследовательского тестирования REST API
Сценарии легко использовать повторноREST-вызовы сохраняются для повторного использования
Поддерживает асинхронное тестированиеПоддерживает форматы Swagger (OpenAPI) и RAML API
JavaScript и GroovyJavaScript
Есть платная (с расширенной функциональностью) и бесплатная кроссплатформенная версия с открытым кодомНативное приложение кроссплатформенное приложение. Postman-плагин для Chrome не обновляется с 2017 
Более широкая функциональность, сравнивая с PostmanОграниченный набор функций (впрочем достаточный для распространенных задач)
Продукт рассчитан на тестирование SOAPСоздание SOAP-запросов возможно, но довольно сложное

Импорт коллекций из Postman

В Postman можно создавать описания API, и группировать их в коллекции. Эти коллекции легко импортируются в Soap UI. Postman — отличное средство тестирования API, однако SoapUI (и тем более платный ReadyAPI) — лучше.

Сначала экспортируем коллекцию, сохранив ее в файле:

Указываем Collection v1.

И сохраняем.

Теперь в SoapUI находим в главном меню File > Import Postman Collection.

В диалоговом окне нажимаем Browse и находим сохраненную коллекцию.

Soap UI создаст новый проект и импортирует все описания API из коллекции. Если в коллекции есть тесты, автоматически создаются тестовые этапы (действия) SOAP или REST-запросов. Нужно будет уточнить тест-кейсы и действия по каждому запросу.

Правила преобразования из Postman в SoapUI

Структура проекта в SoapUI отличается от Postman. 

  •  API-запросы преобразуются в API-описания в Проектах.
  • Глобальные переменные, заданные в элементах preRequestScript и tests, преобразуются в кастомные свойства проекта.
  • Все property-элементы в URL запросов и globals[«property»] в скриптах заменяются на расширенные свойства.
  • Базовая авторизация преобразуется в заголовок запроса, содержащий данные по авторизации.
  • Заголовки преобразуются в параметры запроса HEADER.
  • Если в коллекции есть тесты, SoapUI создаст тест-кейс для них (см. выше).
  • SoapUI создает assertions для соответствующих элементов в тестах Postman. Например:
  • tests[«Status code is 200»] = responseCode.code === 200 конвертируется в assertion “Valid HTTP Status Codes”.
  • tests[«Status code is not 401»] = responseCode.code !== 401 будет преобразован в assertion “Invalid HTTP Status Codes”.
  • tests[«Response time is less than 300ms»] = responseTime < 300 преобразуется в assertion “Response SLA”.
  • tests[«Body matches string»] = responseBody.has(«abc») преобразуется в assertion “Contains”.
  • tests[«Content Type is present»] = postman.getResponseHeader(«Content-Type») преобразуется в assertion “Script”.

Установка SoapUI в Windows

Есть два варианта — бесплатная и платная версии SoapUI (платная версия c расширенной функциональностью называется ReadyAPI). Работаем с бесплатной версией [скачать отсюда, около 200 Мб]:

Скачать последний стабильный релиз SoapUI с официального сайта
Скачать последний стабильный релиз SoapUI с официального сайта, сейчас 5.7.0

Системные требования для установки

  • Процессор — хотя бы 1 ГГц
  • Места на диске — минимум 300 Мб
  • Память — минимум 1 Гб
  • Java — Java 6+
  • ОС — MacOS 10.4+, Windows XP+

Устанавливаем.

  1. Нажимаем “Run”.
  2. Проходим все этапы установки (“Next”).
  3. Жмем “Finish”.

После установки запускаем SoapUI. Скипаем диалог регистрации (сейчас не нужна) и выбора REST-эндпойнта:

Главный экран SoapUI
Главный экран SoapUI

Тестирование SOAP и REST в Soap UI

Есть два типа архитектуры веб-сервисов, которые тестирует SoapUI: SOAP и REST.

SOAP

То есть SOAP-протокол поверх HTTP. Эти сервисы типа HTTP POST, передающие данные в XML-формате в запросе и ответе. Все запросы идут на один и тот же URL, и могут быть добавлены специальные заголовки или XML-элементы в тело запроса, выполняющие нужные операции. SOAP-сервисы используют WDSL-описания (о них далее).

REST

Использует HTTP. Операции выполняются с использованием комбинаций HTTP-методов и имени запрошенного ресурса.

POST/GET-запросы могут добавлять информацию или доставлять данные из/в базу данных.

SOAP-сервисы используют WADL-описания (о них далее), Swagger (Open API) и другие.

Тестирование SOAP-запросов в SoapUI

Создаем SOAP-проект.

Создать новый проект SOAP
Создаем новый проект SOAP

(Нажимаем “New SOAP Project” в меню)

  1. В диалоге настройки заполняем необходимые поля:
Новый SOAP-проект
Заполняем

Заполняем “Название проекта”.

Поле “Initial WSDL”. Способ первый: взять готовый WSDL-файл в интернете. (Можно здесь, просто для ознакомления как это работает). Копируем этот URL и вставляем в поле ‘Initial WDSL’ (комбинацией Ctrl-V).

Способ 2. Файл уже есть где-то на рабочем компьютере, тогда просто указать путь к нему (‘Browse’).

Что такое WSDL

Web Services Description Language — язык описания веб-сервисов, указывающий путь к сервису и его методы, используя XML-элементы <types>, <message>, <portType> и <binding>.

Не обязательно указывать WSDL-сервисы в SOAP-проектах, но WSDL используется во многих SOAP-проектах, поэтому о нем нужно знать. Он может быть добавлен или при создании нового проекта, или после создания проекта. Если WSDL добавлен в проект, процесс проще, поскольку WSDL-файл обычно содержит всю нужную информацию о тестируемом веб-сервисе.

Структура WSDL-файла:

Формат WSDL
Формат WSDL

Если при создании SOAP-проекта применяется способ с добавлением внешнего WSDL-файла в проект, нужно заполнить поля.

Этап 3. Жмем ‘ОК’, завершая создание проекта.

Настройка нового SOAP-проекта
Настройка нового SOAP-проекта
Иерархия Soap-проекта после добавления WSDL-файла
Иерархия Soap-проекта после добавления WSDL

SoapUI: иерархия тест-свит > тест-кейсы > тестовые действия (этапы):

Тест-свит > тест-кейсы > тестовые этапы в SoapIU
Тест-свит > тест-кейсы > тестовые этапы в SoapIU

4. Создаем тестовый набор (тест-сьют).

Кликаем правой кнопкой на имени проекта и в выпавшем меню нажимаем ‘New Test Suite’:

Создаем новый TestSuite
Добавление тест-сьюта в проект

Этап 5. Добавление тест-кейса в сьют

Кликаем правой кнопкой на созданном только что тест-сьюте и выбираем ‘Новый тест-кейс’: 

Добавляем тест-кейс в сьют
Добавляем тест-кейс в сьют

Теперь проект выглядит так:

Структура после добавления тест-кейса
Структура после добавления тест-кейса

Этап 6. Добавляем тестовые действия в тест-кейсе.

Добавление этапов в тест-кейс SoapUI
Добавление этапов в тест-кейс SoapUI

Этап 7. Теперь добавляем релевантный эндпойнт в запрос. Эндпойнты у нас есть, потому что мы их добавили в WSDL-файле (выше).

Добавляем эндпойнт
Добавляем эндпойнт

Этап 8. Выполняем тестовые действия (запуск — зеленая кнопка со стрелкой):

Выполнение тестового действия
Выполнение тестового действия

Выполнение действия, запрос и ответ в XML и raw-форматах:

Форматы

Иконка будет зеленой, если все прошло без проблем.

SoapUI отображает как XML- так и raw-формат (переключение слева вверху).

Тестирование REST-запросов в SoapUI

Этап 1. Создаем REST-проект:

Создание REST-проекта
Создание REST-проекта

Этап 2. В появившемся окне нужно ввести URL к WADL-файлу:

Путь к WADL-файлу
Путь к WADL-файлу
  1. Способ 1. Указываем WADL-файл в поле. Копируем где-то URL и вставляем в поле (через Ctrl-V). (URL например здесь: http://petstore.swagger.io/v2/swagger.json )
  1. Способ 2. Если WADL-файл уже есть на машине, нажимаем ‘Import WADL… > Browse’ и указываем путь к нему.

Что такое WADL

Язык Web Application Description Language. Аналог WSDL-файла из примера выше. Применяется для REST-сервисов. 

Нажимаем ‘ОК’ и создаем новый REST-проект:

Приписываем WADL-файл
Прописываем WADL-файл

Структура REST-проекта:

Иерархия REST-проекта
Иерархия REST-проекта

Сервисы, ресурсы, и запросы:

Сервисы, ресурсы и запросы в REST-проекте SoapUI
Сервисы, ресурсы и запросы в REST-проекте SoapUI

Этап 4. Добавляем ресурс (для примера http://petstore.swagger.io/#/ ):

Добавляем ресурс в SoapUI
Добавляем ресурс в SoapUI

Ресурс добавлен:

Добавлен ресурс в REST-проект
Добавлен ресурс в REST-проект

Этап 5. Генерируем тест-сьют:

Генерируем тест-сьют
Генерируем тест-сьют

Структура тест-сьюта:

Этап 6. Добавляем действия в тест-кейс:

Добавляем действия в тест-кейс
Добавляем действия в тест-кейс

Этап 7. Добавляем эндпойнт в запрос:

Добавление тестовых действий
Добавление тестовых действий

Этап 8. Запускаем: 

Выполняем REST-запрос
Запускаем тестовый запрос

9. Добавление эндпойнтов

Что такое эндпойнт?

Это «один из концов канала коммуникации» в API, проще говоря конечная точка API.

Добавление эндпойнта:

Добавление эндпойнта в REST-запрос
Добавление эндпойнта в REST-запрос
  1. Нажимаем ‘Endpoint Explorer’.
  2. Указываем метод (например GET).
  3. Добавляем эндпойнт (например http://petstore.swagger.io )
  4. Нажимаем ‘Отправить’ и смотрим raw-ответ.
  5. Нажимаем ‘Сохранить запрос’.
Сохраняем REST-запрос
Сохраняем REST-запрос

Кастомные свойства

  1. Кастомные HTTP-заголовки. При нажатии зеленой кнопки ‘+’ откроется диалог ‘Добавить HTTP-заголовок’, вводим имя.
Кастомный HTTP-заголовок
Кастомный HTTP-заголовок

До ввода заголовка тело запроса не имеет поля ‘key’.

Имя кастомного HTTP-заголовка
Заполняем

После получения заголовка тело запроса — поле ‘key’ и значение.

Заполненные поля кастомного HTTP-заголовка
Заполненные поля кастомного HTTP-заголовка
До добавления заголовка
После добавления заголовка

Параметризация

Добавляются свойства на любом уровне проекта (уровне тест-сьюта или тест-кейса).

Добавляем свойство на уровне сьюта:

Кастомное свойство на уровне сьюта
Кастомное свойство на уровне сьюта
Свойство добавлено
Свойство добавлено
Запрос после параметризации заголовка
Запрос после параметризации заголовка

Также можно добавить на уровне проекта. 

Assertions

Нажимаем зеленый ‘+’ в окне запроса ‘Request 1’:

Добавление assertion в запрос
Добавление assertion в запрос

Окно с вариантами assertions.

Assertions в SoapUI
Assertions в SoapUI

Далее сценарий с assertions. Должен быть http-статус 200, тогда считается валидным.

HTTP 200
HTTP 200

Выбираем ‘Valid HTTP Status Code’:

Тип Assertion в запросе
Тип Assertion в запросе

Указываем валидный http-статус

Указываем валидный статус-код
Указываем валидный статус-код

Если в ответе будет статус 200, он подходит для этого assertion, тест-кейс пройдет:

Сценарий 200 ОК
Сценарий 200 ОК

А если не 200, а допустим 400:

Сценарий 400 не ОК
Сценарий 400 не ОК

Об Assertions подробнее

Assertion (или assert, или утверждение) — утверждение/предположение о правильности какого-либо условия. В QA эта концепция применяется в качестве «точки проверки» условия (точка валидации). 

Например, на сервер отправлен запрос и получен ответ. Нужно проверить (валидировать), что в запросе содержатся нужные данные. Это удобно делать с помощью assertions.

Типы Assertions в SoapUI

  • Property Content
  • Compliance Status Standard
  • Script
  • SLA
  • JMS
  • Security

В Pro-версии продукта (readyAPI) есть еще встроенный JDBC-assertion, проверяющий правильность обновления базы данных; в SoapUI недоступен.

Сейчас сосредоточимся на следующих Assertions:

  • Contains Assertion
  • Not contains Assertion
  • XPath Match Assertion
  • Scripting Assertion

Contains

Производит поиск указанной строки. Также поддерживает регулярные выражения.

Для примера поработаем с WSDL-запросом на сайт http://www.dneonline.com/calculator.asmx.

  1. По умолчанию нет assertions.
  • Количество Assertions отображается в соответствующей вкладке.
  • Добавить assertion: кнопка ‘+’.
  1. Теперь: 

Выбираем категорию ‘Property Content’, тип ‘Contains’, и нажимаем ‘Add’:

  1. Теперь валидируем, что в ответе есть например строка ‘46’. Нажимаем ОК.

(Можно игнорить регистр и добавлять регулярные выражения)

  1. Assertion выполняется и показывает, VALID или INVALID.
  1. Теперь изменим в поле ‘Contains Assertion’ на ‘47’ и посмотрим результат.
  1. Assertion выполнен, результат передан. В ответе нет строки ‘47’, поэтому assertion FAILED.

NOT CONTAINS

Проверяет отсутствие указанной строки в ответе. И также с регулярными выражениями.

  1. Нажимаем ‘Добавить Assertion’, выбираем категорию ‘Property Content’, ‘Добавить’.
  1. Проверяем, что в ответе нет строки ‘intA’. Вводим строку ‘FromCurrency’ и жмем ОК.
  1. После добавления и выполнения assertion-а, он выполнится и выведет результат. В примере ниже добавлены два assertion-а, оба выполнятся и покажут VALID.
  1. Теперь изменим содержимое (поле Content) и посмотрим результат. Проверим отсутствие строки ‘AddResult’:
  1. Строка ‘AddResult’ есть в ответе, поэтому утверждение ‘НЕ содержит’ FAILED:

XPATH MATCH

Xpath-выражение, выбирающее нужный узел и его значения. 

  1. Нажимаем ‘Add new assertion’, выбираем категорию ‘Property Content’ и тип ‘XPath Match’, ‘Add’
  1. Откроется окно XPath Window.

Сначала нужно объявить XML NameSpace — коллекцию имен, идентифицируемых по URI, которые используются в XML-документах как имена элементов и атрибутов. Нажимаем ‘Declare’ (можно также вручную объявить ). Далее появятся два пространства имен (потому что у нас два URI). Одно из них schema-URL, второе реальный URL ресурса. При обращении к XPath нам нужен реальное пространство (не schema-namespace).

declare namespace soap=’http://schemas.xmlsoap.org/soap/envelope/’;

declare namespace ns1=’http://tempuri.org/’;

  1. Теперь вводим XPath XML-узла, который нужно валидировать.

//ns1:AddResult дает значение узла между <AddResult> & </AddResult>, ns1 соответствует объявленному пространству имен, указывающему на ‘http://tempuri.org/’.

После введения XML нажимаем ‘Select from current’, чтобы для assertion-а было выбрано значение из текущего ответа.

  1. Итак, после объявления namespace-ов мы ввели XPath нужного XML-узла. Далее нажали ‘Select from Current’, задав текущее значение как ожидаемое. Текущее значение выводится и его можно изменять, если понадобится. Нажимаем ‘Сохранить’.
  1. Добавленные assertion-ы показаны на рисунке.

SCRIPTING ASSERTIONS

Этот тип не применяется так широко как предыдущие, так как очень сложный в создании и обслуживании (десятки и сотни assertions). 

Как мы уже знаем, в SoapUI поддерживаются языки Groovy (предпочтительный) и JavaScript. Методика рассчитана на создание фреймворка тестирования SOAP. 

Сценарии дают возможность выполнять некие операции до и после тест-кейса, применяя методы set-up и tear-down. Set-up — процедура, выполняемая перед выполнением какого-то метода (пример: создание и инициализация объекта), соответственно tear-down — после метода (пример: уничтожение объекта и очистка). Таких функций нет в других типах assertions, доступны только через написание кода сценария.

Частые функции: открытие/закрытие проекта, инициализация/очистка настроек проекта, переменные окружения.

Применяется для валидации контента с динамическим ответом, а также для создания кастомных assertions, которых нет в SoapUI. 

Для примера возьмем тот же сайт что в начале (‘Contains’) и тест-кейс созданный выше.

  1. Этапы по добавлению Groovy-скриптов те же, только assertion-а нет в списке предустановленных, он user-defined. Это дает бОльшую гибкость.

Выбираем в дереве проекта Test Step, в котором создадим кастомный assertion:

Нажимаем добавление assertion:

  1. Выбираем категорию (Script), далее ‘Script Assertion’, жмем ‘Add’.
  1. Откроется диалоговое окно для ввода сценария (валидации XML-ответа).
  1. Теперь копируем groovy-скрипт (валидации курса валют). Код ниже, с комментариями. 
//Define Groovy Utils and holder for validating the XML reponse content
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder(messageExchange.responseContent)

//Define the NameSpace
holder.namespaces["ns1"] = "http://tempuri.org/"

//Get the Value of the Node 'AddResult' and assign to a variable
def addResult = holder.getNodeValue("//ns1:AddResult")

//print the value of the result in the Output panel
log.info "The result value for integers is " + addResult

//Comparing the value to print 'Pass' or 'Fail'
if(addResult=="46")
{ log.info "Pass" }
else
{ log.info "fail"}

Нажимаем кнопку ‘Execute’. В окне вывода появится результат (конвертированное число и pass/fail). Нажимаем ОК.

(Примечание: последнее сообщение всегда будет ‘Script Assertion Passed’, поскольку скрипт синтаксически корректный. Это не имеет отношения к нашим assertion-ам.)

Нажимаем ОК.

  1. Теперь во вкладке отображены все наши assertion-ы, добавленные в тестовый набор (в примерах выше).
  1. В дереве проектов выбираем Test Suite, нажимаем ‘Run’, видим результаты запуска всего набора:

На этом пока всё. Если нужно что-то дополнить, исправить, уточнить — пишите в комментариях, или в ТГ-канале «Тестировщик от бога».

Источники: 1,2,3,4,5

***

Исследовательское тестирование

Сквозное тестирование

Какой была ваша первая зарплата в QA и как вы искали первую работу?

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Мы в Telegram

Наш официальный канал
Полезные материалы и тесты
Готовимся к собеседованию
Project- и Product-менеджмент

? Популярное

? Telegram-обсуждения

Наши подписчики обсуждают, как искали первую работу в QA. Некоторые ищут ее прямо сейчас.
Наши подписчики рассказывают о том, как не бояться задавать тупые вопросы и чувствовать себя уверенно в новой команде.
Обсуждаем, куда лучше податься - в менеджмент или по технической ветке?
Говорим о конфликтных ситуациях в команде и о том, как их избежать
$1100*
медианная зарплата в QA в июне 2023

*по результатам опроса QA-инженеров в нашем телеграм-канале

Собеседование

19%*
IT-специалистов переехало или приняло решение о переезде из России по состоянию на конец марта 2022

*по результатам опроса в нашем телеграм-канале

live

Обсуждают сейчас