Учебники

5) Утверждения

What Is an Assertion?

Assertion means act of affirming or stating something. It can also be interpreted as check point or a validation point.

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

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

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

  1. Содержание недвижимости
  2. Стандарт состояния соответствия
  3. скрипт
  4. ОАС
  5. JMS
  6. Безопасность

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

В этом уроке мы будем изучать

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

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

Мы продолжим с тем же примером из предыдущего урока.

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

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

Шаг 2: Теперь

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

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

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

Шаг 4: После его добавления выполняется немедленное утверждение, которое показывает, является ли VALID или INVALID.

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

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

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

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

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

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

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

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

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

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

XPATH MATCH ASSERTION

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

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

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

Шаг 2: Добавить окно XPath.

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

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

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

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

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

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

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

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

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

Шаг 4: Пока

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Шаг 2: Откроется диалоговое окно «Сценарии», где пользователь сможет написать определенный пользователем сценарий для проверки XML-ответа.

Шаг 3. Теперь давайте напишем отличный скрипт для проверки коэффициента конверсии. Сценарий прилагается ниже с вложенными комментариями. Рекомендуется иметь знания о Java Script или 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. Информация отображается как «Утверждение сценария прошло». Нажмите ОК.

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

Нажмите ОК

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

Шаг 5: сейчас

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

Xquery Match Assertion

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

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

Утверждения в SoapUI: полное руководство  

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

Утверждения в SoapUI: полное руководство  

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

Утверждения в SoapUI: полное руководство  

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

Утверждения в SoapUI: полное руководство  

Шаг 5: введите название контрольного примера и нажмите кнопку «ОК»

Утверждения в SoapUI: полное руководство  

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

Утверждения в SoapUI: полное руководство  

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

Утверждения в SoapUI: полное руководство  

Шаг 8: введите имя шага теста. Скажем так — Supplier_by_City, который был бы более значимым. Нажмите «ОК».  

Утверждения в SoapUI: полное руководство

Шаг 9: Выберите операцию, которую мы хотели бы проверить. В данном случае это «MedicareSupplierSoap -> GetSupplierByCity». Нажмите «ОК».

Утверждения в SoapUI: полное руководство

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

Утверждения в SoapUI: полное руководство

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

Утверждения в SoapUI: полное руководство  

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

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

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

<City> Нью-Йорк </ City>

</ GetSupplierByCity>

WSDL в приведенном ниже URL — http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity

Утверждения в SoapUI: полное руководство  

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

Утверждения в SoapUI: полное руководство  

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

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

Утверждения в SoapUI: полное руководство  

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

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

Утверждения в SoapUI: полное руководство  

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

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

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

    Утверждения в SoapUI: полное руководство  

  2. Для получения всего номера поставщика нам нужно написать запрос XPath, и мы поместим его в теги <SupplierNumber> и </ 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)}
}

Утверждения в SoapUI: полное руководство

Шаг 17: XQuery Assertion выполняется и отображает окончательный результат на панели «Assertion», как показано ниже. Теперь мы успешно добавили утверждение Xquery, с помощью которого мы проверили всю информацию о номере поставщика. То же самое будет сравниваться с фактическими данными каждый раз, когда запрос отправляется на веб-сервер.

Примечание. Фактические значения не отображаются. Если все фактические значения такие же, как и у ожидаемых значений, тогда он отображает VALID, иначе будет отображаться «Failed».

Утверждения в SoapUI: полное руководство

Когда использовать встроенное утверждение?

  • Когда Ответ короткий, так что его можно проверить с помощью одного из этих встроенных утверждений.
  • Мы также можем использовать встроенное утверждение, если ответ, отправленный с веб-сервера, всегда является статическим по своей природе. Если он динамический, мы не сможем утверждать его, используя встроенные утверждения.
  • Когда использование встроенных утверждений, таких как утверждения о превышении времени и безопасности, становится неизбежным.
  • Встроенные утверждения очень хороши для одноразового использования, когда тесты не нужно повторять.

Параметры утверждений

Созданные утверждения можно лучше контролировать с помощью панели управления, которая выделена ниже.

Созданные утверждения позволяют тестировщикам настраивать следующие элементы из панели инструментов утверждений.

вариант

Описание

Утверждения в SoapUI: полное руководство

Выбранное утверждение перемещается вверх на порядок.

Утверждения в SoapUI: полное руководство

Выбранное утверждение перемещается вниз по порядку.

Утверждения в SoapUI: полное руководство

Удаляет выбранное утверждение

Утверждения в SoapUI: полное руководство

Переконфигурировать / редактировать выбранное утверждение.

  • Ниже представлены функции, доступные исключительно в PRO версии SOAP UI. PRO версия также помогает нам группировать утверждения, чтобы мы могли добавить еще один уровень проверки к созданным утверждениям.
  • AND: Все утверждения оцениваются как VALID-утверждение, которое приведет к условию PASSED group. OR: По крайней мере одно из утверждений в группе должно быть VALID, чтобы утверждать условие PASSED группы.

  • Pro Version также позволяет клонировать утверждения : эта опция позволяет тестировщикам разрешить копирование подтверждения на другой шаг теста в том же или в другом проекте.
  • Disable / Enable Assertions: отключить или включить любое групповое или разгруппированное утверждение. Если утверждение отключено, оно отображается серым цветом, а при выполнении тестового примера отключенные утверждения не выполняются.
  • Разгруппировать утверждения. Любые сгруппированные утверждения могут быть разгруппированы, если тестировщики решат это сделать.

Полный список методов, доступных в различных типах утверждений

Механизм утверждения

Описание

СОДЕРЖАНИЕ НЕДВИЖИМОСТИ

Содержит

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

Не содержит

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

XPath Match

Использует выражение XPath для выбора целевого узла и его значений.

XQuery Match

Использует выражение Xquery для выбора содержимого из целевого свойства.

Соответствие, статус, стандарты

HTTP Скачать весь ресурс

Проверяет документ HTML после загрузки, и он сохраняет силу для любого свойства, содержащего HTML.

Неверные коды состояния HTTP

Проверяет, содержит ли ответ HTML код состояния, которого нет в списке определенных кодов.

Не ошибка SOAP

Проверяет, не является ли последнее полученное сообщение ошибкой SOAP. Совершенно очевидно, что оно применимо только для тестовых шагов SOAP.

Соответствие схемы

Проверяет, соответствует ли последнее полученное сообщение определению стандартной схемы WSDL или WADL. Хорошо для тестов SOAP и REST.

SOAP Fault

Проверяет, является ли последнее полученное сообщение ошибкой SOAP. Это обратное утверждение «НЕ МЫЛО».

SOAP-ответ

Проверяет, является ли последний полученный ответ действительным ответом SOAP и действителен только для шагов запроса SOAP Test.

Допустимые коды состояния HTTP

Проверяет, содержит ли ответ HTML код состояния, который находится в списке определенных кодов. Это обратное утверждение «Неверные коды состояния HTTP».

Запрос WS-адресации

Проверяет, содержит ли последний полученный запрос соответствующие заголовки WS-адресации.

WS-Addressing Response

Проверяет, содержит ли последний полученный ответ соответствующие заголовки WS-адресации.

WS-Security Status

Проверяется, если последнее полученное сообщение содержит действительные заголовки WS-Security и действует только для запросов SOAP.

скрипт

Сценарий Утверждение

Позволяет пользователям выполнять пользовательский сценарий для выполнения пользовательских проверок.

ОАС

Ответ SLA

Проверяется, было ли время ответа последнего полученного ответа в пределах установленного предела.

JMS

Статус JMS

Проверяет, успешно ли выполнен запрос JMS шага теста и подходит ли он для шагов теста с конечной точкой JMS.

JMS Timeout

Проверяет, что ответ JMS на шаг теста не занял больше времени, чем указано.

Безопасность

Конфиденциальная информация

Проверяет, не содержит ли ответное сообщение конфиденциальную информацию о целевой системе. Мы можем использовать это утверждение для тестовых шагов REST, SOAP и HTTP.

 

СКАЧАТЬ ПРОЕКТ SOAPUI, СОДЕРЖАЩИЙ ВЫШЕ ПОЛОЖЕНИЙ

Распространенные ошибки и устранение неисправностей

Используйте правильное пространство имен. Пространство имен должно быть URL-адресом, где расположен веб-сервис.

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

Если вы не получили желаемого результата, убедитесь, что в запросе переданы правильные данные.

Например, в конвертере валют, если вы введете «intA» как «x», которое не является целочисленным, выводит код ошибки как «SOAP-клиент», что означает, что проблема связана с параметром, который передается из сторона клиента.

Убедитесь, что вы используете правильный синтаксис при использовании утверждений XPATH и XQuery. Вы не должны использовать точку (.) Вместо двоеточия (:) при использовании вышеуказанного утверждения. Синтаксис: // namespace: Tagname и НЕ //namespace.tagname. В результате вы можете получить сообщение «НЕТ соответствия в текущем ответе», даже если имя тега верное.