Утверждения в SoapUI: учебник по сценариям, XQuery, типам XPath

Что такое утверждение?

Утверждение означает акт подтверждения или утверждения чего-либо. Его также можно интерпретировать как контрольную точку или точку проверки.

После отправки запроса на веб-сервер поступает ответ. Нам нужно проверить, содержит ли ответ ожидаемые нами данные. Чтобы проверить ответ, нам нужно использовать утверждения.

Типы утверждений

Существуют различные способы утверждения ответа; однако мы сосредоточимся на часто используемых типах утверждений SoapUI при проверке ответа. Ниже приведены те, которые доступны в версии SoapUI с открытым исходным кодом.

  1. Содержание недвижимости
  2. Статус соответствия Стандарт
  3. Сценарий
  4. SLA
  5. JMS
  6. Охрана
Типы утверждений в SoapUI
Типы утверждений в SoapUI

Помимо перечисленных выше, версия PRO также имеет встроенное утверждение JDBC, с помощью которого мы можем проверить, правильно ли веб-сервис обновил базу данных.

СОДЕРЖИТ УТВЕРЖДЕНИЕ

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

Мы продолжим использовать тот же пример из предыдущего руководства с запросом WSDL, как http://www.dneonline.com/calculator.asmx.

Шаг 1: По умолчанию утверждений нет.

  • Количество утверждений показано на вкладке «Утверждения».
  • Чтобы добавить новое утверждение, нажмите кнопку «Добавить новое утверждение».

Содержит утверждение

Шаг 2: Теперь,

  1. Выберите категорию утверждения.
  2. Выберите тип утверждения.
  3. Нажмите "Добавить".

Содержит утверждение

Шаг 3: Давайте проверим, существует ли в ответе строка «46». Нажмите «ОК»

Примечание. Мы также можем игнорировать регистр и добавлять регулярное выражение.

Содержит утверждение

Шаг 4: После его добавления немедленно выполняется утверждение и показывает, ДЕЙСТВИТЕЛЬНО или НЕДЕЙСТВИТЕЛЬНО.

Содержит утверждение

Шаг 5: Теперь допустим, что мы изменили содержимое «Содержит утверждение в SoapUI» на «47» и посмотрим, что произойдет.

Содержит утверждение

Шаг 6: Утверждение выполняется, и результат передается пользователю. Поскольку в ответе нет строки «47», утверждение не удалось.

Содержит утверждение

НЕ СОДЕРЖИТ УТВЕРЖДЕНИЕ

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

Шаг 1: Теперь, после нажатия кнопки «Добавить новые утверждения»,

  1. Выберите категорию утверждения.
  2. Выберите тип утверждения — в данном случае «НЕ содержит».
  3. Нажмите "Добавить".

Не содержит утверждения

Шаг 2: Давайте проверим, существует ли в ответе строка «intA». Введите строку «FromCurrency» и нажмите «ОК».

Не содержит утверждения

Шаг 3: Как только утверждение добавляется, оно выполняется и отображает результат. На данный момент мы добавили два утверждения, поэтому оба утверждения выполняются и отображают результат.

Не содержит утверждения

Шаг 4: Теперь давайте изменим содержимое утверждения «Не содержит» и посмотрим, что произойдет. Мы проверим отсутствие строки «AddResult».

Не содержит утверждения

Шаг 5: Строка «AddResult» фактически присутствует в ответе, поэтому утверждение «НЕ содержит» не будет выполнено, как показано ниже.

Не содержит утверждения

УТВЕРЖДЕНИЕ XPATH MATCH

Пользы XPath выражение для выбора целевого узла и его значений. XPath — это язык запросов XML для выбора узлов из XML-документа.

Шаг 1: Теперь, после нажатия кнопки «Добавить новые утверждения»,

  1. Выберите категорию утверждения.
  2. Выберите тип утверждения — в данном случае «XPath Match».
  3. Нажмите "Добавить".

Утверждение соответствия XPath

Шаг 2: Откроется окно добавления XPath.

Прежде чем добавлять SoapUI XPath, нам нужно объявить NameSpace. Пространство имен XML — это набор имен, идентифицируемых ссылкой на универсальный идентификатор ресурса (URI), которые используются в документах XML в качестве имен элементов и атрибутов. То же самое используется в утверждении SOAP UI XPath.

Для объявления пространства имен XML нам просто нужно нажать кнопку «Объявить», которая выполнит всю работу за нас, иначе мы также можем вручную объявить пространство имен самостоятельно.

После объявления пространства имен нам нужно сослаться на XPath, используя созданное пространство имен.

При нажатии кнопки «Объявить» появятся два пространства имен, поскольку у нас есть два URI. Один из них — это URL-адрес схемы, а другой соответствует фактическому URL-адресу веб-службы. При ссылке на XPath нам нужно использовать фактическое пространство имен, в котором расположен веб-сервис, а НЕ пространство имен схемы.

Утверждение соответствия XPath

объявить пространство имен мыло='http://schemas.xmlsoap.org/soap/envelope/';

объявить пространство имен ns1='http://tempuri.org/';

Утверждение соответствия XPath

Шаг 3: Теперь нам нужно ввести XPath узла XML, который нам нужно проверить.

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

После ввода XML нам нужно нажать «Выбрать из текущего», чтобы значение из текущего ответа было выбрано для дальнейшего сравнения.

Утверждение соответствия XPath

Шаг 4: До сих пор,

  1. После объявления пространств имен мы ввели узел XPath XML, который нам необходимо проверить.
  2. Нам нужно нажать «Выбрать из текущего», чтобы сделать текущее значение ожидаемым.
  3. Пользователю отображается текущее значение, которое мы можем изменить при необходимости.
  4. Щелкните "Сохранить".

Утверждение соответствия XPath

Шаг 5: Добавленное утверждение в SoapUI будет отображаться, как показано ниже.

Утверждение соответствия XPath

Утверждения сценариев

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

SOAP UI использует либо Groovy Сценарии или JavaСценарий для сценариев утверждений. Техника сценариев принята для разработки среды тестирования SOAP. Утверждения сценария используются при следующих обстоятельствах.

Сценарии позволяют пользователю выполнять некоторые операции до и после выполнения TestCase, используя методы настройки и удаления соответственно. Настройка — это процедура, которая выполняется перед выполнением определенного метода (пример — создание и инициализация объекта), а снятие — это процедура, которая выполняется после выполнения метода (например: уничтожение объектов и очистка). Эта функция недоступна в других типах утверждений и может быть реализована только посредством написания кода.

Он позволяет пользователям открывать/закрывать проект для инициализации или очистки настроек, связанных с проектом, а также работать с переменными среды, что очень полезно во время написания сценариев.

Это помогает нам утверждать динамический контент ответа.

Утверждения сценариев используются для создания пользовательских утверждений, которые НЕ предопределены пользовательским интерфейсом SOAP.

Для демонстрации утверждения сценария в SoapUI мы будем использовать калькулятор WSDL, тестовый пример «Добавить», который мы создали ранее.

Шаг 1: Шаги по добавлению отличного сценария такие же, как и для других утверждений, за исключением того, что утверждение не является предопределенным. Вместо этого это пользовательское утверждение, которое предлагает большую гибкость, чем встроенные.

Выберите шаг проверки, к которому необходимо добавить утверждение.

Утверждения сценариев

Нажмите кнопку «Добавить утверждение», как показано ниже.

Утверждения сценариев

Шаг 2: Теперь выберите категорию «Утверждение».

  1. В данном случае это сценарий.
  2. Выберите «Утверждение сценария SoapUI», и с ним не связаны никакие подтипы.
  3. Нажмите «Добавить».

Утверждения сценариев

Шаг 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"}
  1. Нажмите кнопку «Выполнить», чтобы запустить выполнение.
  2. Вывод сценария отображается на панели «Вывод». Он напечатал как ценность конверсии, так и конечный результат (прошел или не прошел).
  3. Отображается информация о том, что «Утверждение сценария пройдено». Нажмите ОК.

Примечание. Всплывающее окно с окончательной информацией всегда будет отображаться с сообщением «Утверждение сценария выполнено», если сценарий синтаксически правильный. Это не имеет никакой корреляции с вашим утверждением в сценарии.

Утверждения сценариев

нажмите OK

Шаг 5: Теперь на вкладке утверждений отображаются все утверждения, которые мы добавили для этого набора тестов, со статусом для каждого из них.

Утверждения сценариев

Шаг 6: Теперь

  1. Выберите набор тестов в дереве навигатора.
  2. Нажмите кнопку «Выполнить».
  3. Результаты будут отображаться для всего набора тестов.

Утверждения сценариев

Утверждение соответствия Xquery

Он использует выражение Xquery для выбора содержимого из целевого свойства. Нам нужен гораздо больший XML-ответ ответа, чтобы лучше понять утверждение XQuery в SoapUI. Давайте импортируем еще один WSDL, как показано ниже: http://www.webservicex.net/medicareSupplier.asmx?WSDL

Шаг 1: Щелкните правой кнопкой мыши существующий проект и выберите «Добавить WSDL».

Утверждение соответствия Xquery

Шаг 2: Щелкните правой кнопкой мыши существующий проект и выберите «Добавить WSDL». Остальные параметры оставьте по умолчанию и нажмите кнопку «ОК».

Утверждение соответствия Xquery

Шаг 3: Все операции перечислены, как показано ниже.

Утверждение соответствия Xquery

Шаг 4: Теперь давайте добавим Тестовый кейс в том же наборе тестов, который мы создали для Тестирование конвертер валют.

Утверждение соответствия Xquery

Шаг 5: Введите имя тестового примера и нажмите кнопку «ОК».

Утверждение соответствия Xquery

Шаг 6: Тестовый пример создается, как показано ниже.

Утверждение соответствия Xquery

Шаг 7: Добавить
новый этап тестирования типа «Запрос теста мыла», как показано ниже.

Утверждение соответствия Xquery

Шаг 8: Введите название шага теста. Скажем, «Поставщик_по_городу», что будет более информативным. Нажмите «ОК».

Утверждение соответствия Xquery

Шаг 9: Выберите Operation, который мы хотели бы проверить. В данном случае это 'MedicareSupplierSoap -> GetSupplierByCity'. Нажмите 'OK'.

Утверждение соответствия Xquery

Шаг 10: Введите имя тестового примера и нажмите «ОК».

Утверждение соответствия Xquery

Шаг 11: Структура запроса XML будет отображаться, как показано ниже.

Утверждение соответствия Xquery

Шаг 12: Теперь давайте найдем всю информацию о поставщиках для города «Нью-Йорк».

Для этого добавьте в свой код следующие строки.

<GetSupplierByCity xmlns="http://www.webservicex.net/">

<City>New York</City>

</GetSupplierByCity>

WSDL в URL-адресе ниже – http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity

Утверждение соответствия Xquery

Шаг 13: После выполнения теста мы получаем ответ ниже

Утверждение соответствия Xquery

Шаг 14: Допустим, нам нужно проверить все номера поставщиков. Мы не можем использовать утверждения XPath, поскольку нам нужны сотни утверждений XPath. Следовательно, использование XQuery в этом случае неизбежно.

Утверждение XQuery помогает нам проверить группу ответов XML, которые повторяются по своей природе.

Утверждение соответствия Xquery

Шаг 15: Теперь нажмите «Добавить утверждение»,

  1. В данном случае выберите «Категорию утверждения» — «Содержимое свойства».
  2. Выберите тип утверждения как «Утверждение XQuery».
  3. Нажмите «Добавить».

Утверждение соответствия Xquery

Шаг 16: Подобно утверждению XPath, нам нужно объявить пространство имен.

  1. Нажмите кнопку «Объявить», чтобы автоматически разрешить пользовательскому интерфейсу SOAP объявить пространство имен. При нажатии на кнопку объявления пользователю будет отображено всплывающее окно с сообщением «вместо этого объявить пространство имен из схемы». Нажмите «Да», чтобы продолжить, как показано ниже.

    Примечание: При нажатии кнопки «Объявить» вы можете получить разные URL-адреса в качестве объявления пространства имен, однако для кодирования будет учитываться фактическое пространство имен местоположения веб-службы.

    Утверждение соответствия Xquery

  2. Чтобы получить все номера поставщиков, нам нужно написать запрос XPath, и мы поместим его в <SupplierNumber> и Теги.
  3. Нажмите «Выбрать из текущего», который будет выполнен из текущего ответа.
  4. При нажатии кнопки «Выбрать из текущих» отображаются все номера поставщиков.
  5. Щелкните "Сохранить".
// 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)}
}

Утверждение соответствия Xquery

Шаг 17: Утверждение XQuery выполняется и отображает окончательный результат на панели «Утверждение», как показано ниже. Теперь мы успешно добавили утверждение 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. НЕ следует использовать точку (.) вместо двоеточия (:) при использовании приведенного выше утверждения. Синтаксис: //пространство имен:Имя тега и НЕ //пространство имен.имя тега. При этом вы можете получить сообщение «НЕТ совпадения в текущем ответе», даже если имя тега правильное.

Распространенные ошибки и устранение неполадок