Утверждения в SoapUI: учебник по сценариям, XQuery, типам XPath
Что такое утверждение?
Утверждение означает акт подтверждения или утверждения чего-либо. Его также можно интерпретировать как контрольную точку или точку проверки.
После отправки запроса на веб-сервер поступает ответ. Нам нужно проверить, содержит ли ответ ожидаемые нами данные. Чтобы проверить ответ, нам нужно использовать утверждения.
Типы утверждений
Существуют различные способы утверждения ответа; однако мы сосредоточимся на часто используемых типах утверждений SoapUI при проверке ответа. Ниже приведены те, которые доступны в версии SoapUI с открытым исходным кодом.
- Содержание недвижимости
- Статус соответствия Стандарт
- Сценарий
- SLA
- JMS
- Охрана
Помимо перечисленных выше, версия PRO также имеет встроенное утверждение JDBC, с помощью которого мы можем проверить, правильно ли веб-сервис обновил базу данных.
СОДЕРЖИТ УТВЕРЖДЕНИЕ
Ищет существование указанной строки. Он также поддерживает регулярные выражения.
Мы продолжим использовать тот же пример из предыдущего руководства с запросом WSDL, как http://www.dneonline.com/calculator.asmx.
Шаг 1: По умолчанию утверждений нет.
- Количество утверждений показано на вкладке «Утверждения».
- Чтобы добавить новое утверждение, нажмите кнопку «Добавить новое утверждение».
Шаг 2: Теперь,
- Выберите категорию утверждения.
- Выберите тип утверждения.
- Нажмите "Добавить".
Шаг 3: Давайте проверим, существует ли в ответе строка «46». Нажмите «ОК»
Примечание. Мы также можем игнорировать регистр и добавлять регулярное выражение.
Шаг 4: После его добавления немедленно выполняется утверждение и показывает, ДЕЙСТВИТЕЛЬНО или НЕДЕЙСТВИТЕЛЬНО.
Шаг 5: Теперь допустим, что мы изменили содержимое «Содержит утверждение в SoapUI» на «47» и посмотрим, что произойдет.
Шаг 6: Утверждение выполняется, и результат передается пользователю. Поскольку в ответе нет строки «47», утверждение не удалось.
НЕ СОДЕРЖИТ УТВЕРЖДЕНИЕ
Ищет отсутствие указанной строки. Он также поддерживает регулярные выражения.
Шаг 1: Теперь, после нажатия кнопки «Добавить новые утверждения»,
- Выберите категорию утверждения.
- Выберите тип утверждения — в данном случае «НЕ содержит».
- Нажмите "Добавить".
Шаг 2: Давайте проверим, существует ли в ответе строка «intA». Введите строку «FromCurrency» и нажмите «ОК».
Шаг 3: Как только утверждение добавляется, оно выполняется и отображает результат. На данный момент мы добавили два утверждения, поэтому оба утверждения выполняются и отображают результат.
Шаг 4: Теперь давайте изменим содержимое утверждения «Не содержит» и посмотрим, что произойдет. Мы проверим отсутствие строки «AddResult».
Шаг 5: Строка «AddResult» фактически присутствует в ответе, поэтому утверждение «НЕ содержит» не будет выполнено, как показано ниже.
УТВЕРЖДЕНИЕ XPATH MATCH
Пользы XPath выражение для выбора целевого узла и его значений. XPath — это язык запросов XML для выбора узлов из XML-документа.
Шаг 1: Теперь, после нажатия кнопки «Добавить новые утверждения»,
- Выберите категорию утверждения.
- Выберите тип утверждения — в данном случае «XPath Match».
- Нажмите "Добавить".
Шаг 2: Откроется окно добавления XPath.
Прежде чем добавлять SoapUI XPath, нам нужно объявить NameSpace. Пространство имен XML — это набор имен, идентифицируемых ссылкой на универсальный идентификатор ресурса (URI), которые используются в документах XML в качестве имен элементов и атрибутов. То же самое используется в утверждении SOAP UI XPath.
Для объявления пространства имен XML нам просто нужно нажать кнопку «Объявить», которая выполнит всю работу за нас, иначе мы также можем вручную объявить пространство имен самостоятельно.
После объявления пространства имен нам нужно сослаться на XPath, используя созданное пространство имен.
При нажатии кнопки «Объявить» появятся два пространства имен, поскольку у нас есть два URI. Один из них — это URL-адрес схемы, а другой соответствует фактическому URL-адресу веб-службы. При ссылке на XPath нам нужно использовать фактическое пространство имен, в котором расположен веб-сервис, а НЕ пространство имен схемы.
объявить пространство имен мыло='http://schemas.xmlsoap.org/soap/envelope/';
объявить пространство имен ns1='http://tempuri.org/';
Шаг 3: Теперь нам нужно ввести XPath узла XML, который нам нужно проверить.
//ns1:AddResult дает нам значение узла, заключенного между & и ns1 соответствует объявленному пространству имен, которое указывает на http://tempuri.org/.
После ввода XML нам нужно нажать «Выбрать из текущего», чтобы значение из текущего ответа было выбрано для дальнейшего сравнения.
Шаг 4: До сих пор,
- После объявления пространств имен мы ввели узел XPath XML, который нам необходимо проверить.
- Нам нужно нажать «Выбрать из текущего», чтобы сделать текущее значение ожидаемым.
- Пользователю отображается текущее значение, которое мы можем изменить при необходимости.
- Щелкните "Сохранить".
Шаг 5: Добавленное утверждение в SoapUI будет отображаться, как показано ниже.
Утверждения сценариев
Этот метод утверждений является наиболее широко используемым, поскольку чрезвычайно сложно управлять сотнями утверждений и поддерживать их.
SOAP UI использует либо Groovy Сценарии или JavaСценарий для сценариев утверждений. Техника сценариев принята для разработки среды тестирования SOAP. Утверждения сценария используются при следующих обстоятельствах.
Сценарии позволяют пользователю выполнять некоторые операции до и после выполнения TestCase, используя методы настройки и удаления соответственно. Настройка — это процедура, которая выполняется перед выполнением определенного метода (пример — создание и инициализация объекта), а снятие — это процедура, которая выполняется после выполнения метода (например: уничтожение объектов и очистка). Эта функция недоступна в других типах утверждений и может быть реализована только посредством написания кода.
Он позволяет пользователям открывать/закрывать проект для инициализации или очистки настроек, связанных с проектом, а также работать с переменными среды, что очень полезно во время написания сценариев.
Это помогает нам утверждать динамический контент ответа.
Утверждения сценариев используются для создания пользовательских утверждений, которые НЕ предопределены пользовательским интерфейсом SOAP.
Для демонстрации утверждения сценария в SoapUI мы будем использовать калькулятор WSDL, тестовый пример «Добавить», который мы создали ранее.
Шаг 1: Шаги по добавлению отличного сценария такие же, как и для других утверждений, за исключением того, что утверждение не является предопределенным. Вместо этого это пользовательское утверждение, которое предлагает большую гибкость, чем встроенные.
Выберите шаг проверки, к которому необходимо добавить утверждение.
Нажмите кнопку «Добавить утверждение», как показано ниже.
Шаг 2: Теперь выберите категорию «Утверждение».
- В данном случае это сценарий.
- Выберите «Утверждение сценария SoapUI», и с ним не связаны никакие подтипы.
- Нажмите «Добавить».
Шаг 3: Откроется диалоговое окно сценариев, в котором пользователь сможет написать определенный пользователем сценарий для проверки XML-ответа.
Шаг 4: Теперь давайте напишем отличный скрипт для проверки коэффициента конверсии. Сценарий прикреплен ниже со встроенными комментариями. Рекомендуется иметь знания по Java Скрипт или Groovy Script, прежде чем пытаться написать свой собственный сценарий.
//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"}
- Нажмите кнопку «Выполнить», чтобы запустить выполнение.
- Вывод сценария отображается на панели «Вывод». Он напечатал как ценность конверсии, так и конечный результат (прошел или не прошел).
- Отображается информация о том, что «Утверждение сценария пройдено». Нажмите ОК.
Примечание. Всплывающее окно с окончательной информацией всегда будет отображаться с сообщением «Утверждение сценария выполнено», если сценарий синтаксически правильный. Это не имеет никакой корреляции с вашим утверждением в сценарии.
нажмите OK
Шаг 5: Теперь на вкладке утверждений отображаются все утверждения, которые мы добавили для этого набора тестов, со статусом для каждого из них.
Шаг 6: Теперь
- Выберите набор тестов в дереве навигатора.
- Нажмите кнопку «Выполнить».
- Результаты будут отображаться для всего набора тестов.
Утверждение соответствия Xquery
Он использует выражение Xquery для выбора содержимого из целевого свойства. Нам нужен гораздо больший XML-ответ ответа, чтобы лучше понять утверждение XQuery в SoapUI. Давайте импортируем еще один WSDL, как показано ниже: http://www.webservicex.net/medicareSupplier.asmx?WSDL
Шаг 1: Щелкните правой кнопкой мыши существующий проект и выберите «Добавить WSDL».
Шаг 2: Щелкните правой кнопкой мыши существующий проект и выберите «Добавить WSDL». Остальные параметры оставьте по умолчанию и нажмите кнопку «ОК».
Шаг 3: Все операции перечислены, как показано ниже.
Шаг 4: Теперь давайте добавим Тестовый кейс в том же наборе тестов, который мы создали для Тестирование конвертер валют.
Шаг 5: Введите имя тестового примера и нажмите кнопку «ОК».
Шаг 6: Тестовый пример создается, как показано ниже.
Шаг 7: Добавить
новый этап тестирования типа «Запрос теста мыла», как показано ниже.
Шаг 8: Введите название шага теста. Скажем, «Поставщик_по_городу», что будет более информативным. Нажмите «ОК».
Шаг 9: Выберите Operation, который мы хотели бы проверить. В данном случае это 'MedicareSupplierSoap -> GetSupplierByCity'. Нажмите 'OK'.
Шаг 10: Введите имя тестового примера и нажмите «ОК».
Шаг 11: Структура запроса XML будет отображаться, как показано ниже.
Шаг 12: Теперь давайте найдем всю информацию о поставщиках для города «Нью-Йорк».
Для этого добавьте в свой код следующие строки.
<GetSupplierByCity xmlns="http://www.webservicex.net/"> <City>New York</City> </GetSupplierByCity>
WSDL в URL-адресе ниже – http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity
Шаг 13: После выполнения теста мы получаем ответ ниже
Шаг 14: Допустим, нам нужно проверить все номера поставщиков. Мы не можем использовать утверждения XPath, поскольку нам нужны сотни утверждений XPath. Следовательно, использование XQuery в этом случае неизбежно.
Утверждение XQuery помогает нам проверить группу ответов XML, которые повторяются по своей природе.
Шаг 15: Теперь нажмите «Добавить утверждение»,
- В данном случае выберите «Категорию утверждения» — «Содержимое свойства».
- Выберите тип утверждения как «Утверждение XQuery».
- Нажмите «Добавить».
Шаг 16: Подобно утверждению XPath, нам нужно объявить пространство имен.
-
Нажмите кнопку «Объявить», чтобы автоматически разрешить пользовательскому интерфейсу SOAP объявить пространство имен. При нажатии на кнопку объявления пользователю будет отображено всплывающее окно с сообщением «вместо этого объявить пространство имен из схемы». Нажмите «Да», чтобы продолжить, как показано ниже.
Примечание: При нажатии кнопки «Объявить» вы можете получить разные URL-адреса в качестве объявления пространства имен, однако для кодирования будет учитываться фактическое пространство имен местоположения веб-службы.
- Чтобы получить все номера поставщиков, нам нужно написать запрос XPath, и мы поместим его в <SupplierNumber> и Теги.
- Нажмите «Выбрать из текущего», который будет выполнен из текущего ответа.
- При нажатии кнопки «Выбрать из текущих» отображаются все номера поставщиков.
- Щелкните "Сохранить".
// Namespace declaration declare namespace soap='http://schemas.xmlsoap.org/soap/envelope/'; declare namespace ns1='http://www.webservicex.net/'; declare namespace x = ''; // Placing the result in Myresult Tags{ // Iterating through all the supplier number for $x in //ns1:GetSupplierByCityResponse/ns1:SupplierDataLists/ns1:SupplierDatas/ns1:SupplierData //Return all the Supplier number within ‘SupplierNumber’ Tags. return {data($x/ns1:SupplierNumber)} }
Шаг 17: Утверждение XQuery выполняется и отображает окончательный результат на панели «Утверждение», как показано ниже. Теперь мы успешно добавили утверждение Xquery, с помощью которого мы проверили всю информацию о номере поставщика. То же самое будет сравниваться с фактическими данными каждый раз, когда запрос отправляется на веб-сервер.
Примечание. Фактические значения не будут отображаться. Если все фактические значения совпадают с ожидаемыми значениями, отображается значение «ДЕЙСТВИТЕЛЬНО», в противном случае отображается «Не удалось».
Когда использовать встроенное утверждение?
- Когда ответ короткий и его можно проверить с помощью одного из этих встроенных утверждений.
- Мы также можем использовать встроенное утверждение, если ответ, отправленный с веб-сервера, всегда является статическим по своей природе. Если он динамический, мы не сможем утверждать его, используя встроенные утверждения.
- Когда использование встроенных утверждений, таких как утверждения тайм-аута и утверждения безопасности, становится неизбежным.
- Встроенные утверждения очень хорошо подходят для одноразового использования, когда тесты не нужно повторять.
Параметры утверждений
Созданными утверждениями лучше всего управлять с помощью панели управления, показанной ниже.
Созданные утверждения позволяют тестировщикам настраивать следующие параметры из набора инструментов утверждений.
Опция | Описание |
---|---|
Выбранное утверждение перемещается вверх по порядку. | |
Выбранное утверждение перемещается вниз по порядку. | |
Удаляет выбранное утверждение | |
Перенастройте/измените выбранное утверждение. |
- Ниже приведены функции, доступные исключительно в PRO-версии SOAP UI. Версия PRO также помогает нам группировать утверждения, чтобы мы могли добавить еще один уровень проверки к созданным утверждениям.
- Pro-версия также позволяет Клонирование утверждений: этот параметр позволяет тестировщикам разрешить копирование утверждения на другой этап теста в том же или другом проекте.
- Отключить/включить утверждения: этот параметр позволяет отключить или включить любое сгруппированное или несгруппированное утверждение. Если утверждение отключено, оно отображается серым цветом, и при выполнении тестового примера отключенные утверждения не будут выполняться.
- Разгруппировать утверждения. Любые сгруппированные утверждения можно разгруппировать, если тестировщики решат это сделать.
И: Все утверждения оцениваются как ДЕЙСТВИТЕЛЬНЫЕ утверждения, что приводит к групповому условию ПРОЙДЕНО. ИЛИ: По крайней мере одно из утверждений внутри группы должно быть ДЕЙСТВИТЕЛЬНЫМ, чтобы утверждать групповое условие ПРОЙДЕНО.
Полный список методов, доступных в различных типах утверждений
Утверждающий механизм |
Описание |
СОДЕРЖАНИЕ НЕДВИЖИМОСТИ | |
Комплект | Ищет существование указанной строки. Он также поддерживает регулярные выражения. |
Не содержит | Ищет отсутствие указанной строки. Он также поддерживает регулярные выражения. |
XPath-соответствие | Использует выражение XPath для выбора целевого узла и его значений. |
Соответствие XQuery | Использует выражение Xquery для выбора содержимого из целевого свойства. |
Соответствие, Статус, Стандарты | |
HTTP Загрузить весь ресурс | Проверяет HTML-документ после загрузки и сохраняет его силу для любого свойства, содержащего HTML. |
Неверные коды состояния HTTP | Проверяет, содержит ли ответ HTML код состояния, которого нет в списке определенных кодов. |
Не ошибка SOAP | Проверяет, не является ли последнее полученное сообщение ошибкой SOAP. Совершенно очевидно, что он применим только для этапов тестирования SOAP. |
Соответствие схемы | Проверяет, соответствует ли последнее полученное сообщение определению стандартной схемы WSDL или WADL. Подходит для этапов тестирования SOAP и REST. |
SOAP-ошибка | Проверяет, является ли последнее полученное сообщение ошибкой SOAP. Это противоположность утверждениям об ошибке «NOT SOAP». |
Ответ SOAP | Проверяет, является ли последний полученный ответ действительным ответом SOAP и действителен только для шагов тестового запроса SOAP. |
Действительные коды состояния HTTP | Проверяет, содержит ли ответ HTML код состояния, который находится в списке определенных кодов. Это противоположность утверждению «Неверные коды состояния HTTP». |
Запрос WS-адресации | Проверяет, содержит ли последний полученный запрос соответствующие заголовки WS-Addressing. |
Ответ WS-адресации | Проверяет, содержит ли последний полученный ответ соответствующие заголовки WS-адресации. |
Статус WS-безопасности | Проверяет, содержит ли последнее полученное сообщение действительные заголовки WS-Security и действует только для запросов SOAP. |
Сценарий | |
Утверждение сценария | Позволяет пользователям выполнять собственный сценарий для выполнения определенных пользователем проверок. |
SLA | |
Ответное соглашение об уровне обслуживания | Проверяет, находилось ли время ответа последнего полученного ответа в пределах заданного предела. |
JMS | |
Статус JMS | Проверяет, успешно ли выполнен запрос JMS шага теста и действует ли он для шагов теста с конечной точкой JMS. |
Тайм-аут JMS | Проверяет, не занял ли ответ JMS на этапе тестирования больше указанного времени. |
Охрана | |
Разоблачение конфиденциальной информации | Проверяет, не раскрывает ли ответное сообщение конфиденциальную информацию о целевой системе. Мы можем использовать это утверждение для этапов тестирования REST, SOAP и HTTP. |
СКАЧАТЬ ПРОЕКТ SOAPUI, СОДЕРЖАЩИЙ ВЫШЕУТОЧНЕННЫЕ УТВЕРЖДЕНИЯ
Распространенные ошибки и устранение неполадок
Используйте правильное пространство имен. Пространство имен должно представлять собой URL-адрес, по которому находится веб-служба.
Если при разработке утверждения сценария возникла ошибка, используйте log.info для печати содержимого переменных.
Если вы не получили желаемый результат, проверьте, переданы ли в запросе действительные входные данные.
Например, в конвертере валют, если вы вводите «intA» как «x», которое не является целым числом, на выходе выдается код ошибки как «SOAP-Client», что означает, что проблема связана с параметром, который передается из сторона клиента.
Убедитесь, что вы используете правильный синтаксис при использовании утверждений XPATH и XQuery. НЕ следует использовать точку (.) вместо двоеточия (:) при использовании приведенного выше утверждения. Синтаксис: //пространство имен:Имя тега и НЕ //пространство имен.имя тега. При этом вы можете получить сообщение «НЕТ совпадения в текущем ответе», даже если имя тега правильное.