Твердження в SoapUI: підручник зі сценаріїв, XQuery, типів XPath

Що таке твердження?

Твердження означає акт ствердження або ствердження чогось. Його також можна інтерпретувати як контрольну точку або точку перевірки.

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

Типи тверджень

Існують різні способи стверджувати відповідь; однак під час перевірки відповіді ми зосередимося на типових затвердженнях SoapUI. Нижче наведено ті, які доступні у версії SoapUI з відкритим кодом.

  1. Вміст власності
  2. Стандарт статусу відповідності
  3. Script
  4. SLA
  5. J.M.S.
  6. Безпека
Типи тверджень у SoapUI
Типи тверджень у SoapUI

Окрім перерахованих вище, PRO-версія також має вбудовану JDBC Assertion, за допомогою якої ми можемо підтвердити, чи веб-служба оновила базу даних правильно.

МІСТИТЬ ТВЕРДЖЕННЯ

Шукає існування вказаного рядка. Він також підтримує регулярні вирази.

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

Крок 1: За замовчуванням немає тверджень.

  • Кількість тверджень показано на вкладці Твердження.
  • Щоб додати нове твердження, натисніть кнопку «Додати нове твердження».

Містить твердження

Крок 2: тепер,

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

Містить твердження

Крок 3: Давайте перевіримо, чи існує рядок "46" у відповіді. Натисніть "OK"

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

Містить твердження

Крок 4: Після додавання твердження негайно виконується та показує, ДІЙСНИЙ або НЕВІДПОВІДНИЙ.

Містить твердження

Крок 5: Тепер припустімо, що ми змінимо вміст «Contains Assertion in SoapUI» на «47» і подивимося, що станеться.

Містить твердження

Крок 6: Твердження виконується, а результат надсилається користувачеві. Оскільки ми не маємо рядка "47" у відповіді, твердження не виконано.

Містить твердження

НЕ МІСТИТЬ ТВЕРДЖЕНЬ

Шукає Неіснування зазначеного рядка. Він також підтримує регулярні вирази.

Крок 1: Після натискання кнопки «додати нові твердження»

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

Не містить твердження

Крок 2: Давайте перевіримо, чи існує рядок 'intA' у відповіді. Введіть рядок «FromCurrency» і натисніть «OK»

Не містить твердження

Крок 3: Як тільки твердження додається, воно виконується та відображає результат. Поки що ми додали два твердження, тому обидва твердження виконуються та відображаються результат.

Не містить твердження

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

Не містить твердження

Крок 5: Рядок «AddResult» фактично присутній у відповіді, тому твердження «НЕ містить» не вдасться виконати, як показано нижче.

Не містить твердження

УТВЕРДЖЕННЯ ВІДПОВІДНОСТІ XPATH

Використовує XPath вираз для вибору цільового вузла та його значень. XPath — мова запитів XML для вибору вузлів із документа XML.

Крок 1: Після натискання кнопки «Додати нові твердження»

  1. Виберіть категорію твердження.
  2. Виберіть тип твердження – у цьому випадку "Збіг XPath"
  3. Натисніть "Додати"

Затвердження відповідності XPath

Крок 2: Відкриється вікно Add XPath.

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

Щоб оголосити простір імен XML, нам просто потрібно натиснути кнопку «Оголосити», яка зробить цю роботу за нас, інакше ми також можемо вручну оголосити простір імен самостійно.

Після оголошення простору імен нам потрібно посилатися на XPath, використовуючи створений простір імен.

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

Затвердження відповідності XPath

оголосити простір імен soap='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 Сценарії або JavaScript для сценаріїв тверджень. Техніка створення сценаріїв використовується для розробки основи для тестування SOAP. Твердження сценаріїв використовуються за таких обставин.

Сценарій дозволяє користувачеві виконувати деякі операції до та після виконання TestCase за допомогою методів налаштування та розриву відповідно. Налаштування – це процедура, яка виконується перед виконанням певного методу (приклад – створення та ініціалізація об’єкта), тоді як знесення – це процедура, яка виконується після виконання методу (наприклад: знищення об’єктів і очищення). Ця функція недоступна в інших типах тверджень і може бути виконана лише за допомогою кодування.

Це дозволяє користувачам відкривати/закривати проект, щоб ініціалізувати або очистити налаштування, пов’язані з проектом, а також працювати зі змінними середовища, що дуже корисно під час створення сценаріїв.

Це допомагає нам затверджувати динамічний вміст відповіді.

Твердження сценаріїв використовуються для створення визначених користувачем тверджень, які НЕ попередньо визначені SOAP UI.

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

Крок 1: Кроки для додавання сценарію groovy такі ж, як і для інших тверджень, за винятком того, що твердження не є попередньо визначеним. Натомість це визначене користувачем твердження, яке пропонує більшу гнучкість, ніж вбудовані.

Виберіть крок перевірки, щодо якого потрібно додати твердження.

Твердження сценаріїв

Натисніть кнопку «Додати твердження», як показано нижче.

Твердження сценаріїв

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

  1. У цьому випадку це сценарій.
  2. Виберіть SoapUI Script Assertion, і з ним не пов’язано жодних підтипів.
  3. Натисніть «Додати».

Твердження сценаріїв

Крок 3: Відкриється діалогове вікно створення сценаріїв, у якому користувач зможе написати визначений користувачем сценарій для перевірки XML відповіді.

Твердження сценаріїв

Крок 4: Тепер давайте напишемо чудовий сценарій для перевірки коефіцієнта конверсії. Сценарій додається нижче з коментарями. Рекомендується мати знання по Java Сценарій або 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"}
  1. Натисніть кнопку «Виконати», щоб запустити виконання.
  2. Вихідні дані сценарію відображаються на панелі «Вивід». Він надрукував як значення конверсії, так і кінцевий результат (пройшов або не пройшов)
  3. Відображається інформація про те, що «Затвердження сценарію пройдено». Натисніть OK.

Примітка. Спливаюче вікно остаточної інформації завжди відображатиметься з повідомленням «Затвердження сценарію прийнято», якщо сценарій синтаксично правильний. Це не має жодної кореляції з вашим твердженням у сценарії.

Твердження сценаріїв

натисніть 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: Тепер додамо a Тестовий випадок в тому самому наборі тестів, для якого ми створили Тестування конвертер валют.

Затвердження відповідності Xquery

Крок 5: Введіть назву тесту та натисніть кнопку «ОК».

Затвердження відповідності Xquery

Крок 6: Тестовий приклад створюється, як показано нижче.

Затвердження відповідності Xquery

Крок 7: додавати
новий тестовий крок типу "Запит на тестування мила", як показано нижче.

Затвердження відповідності Xquery

Крок 8: Введіть назву кроку тесту. Скажімо – Supplier_by_City, що було б більш значущим Натисніть «ОК».

Затвердження відповідності Xquery

Крок 9: Оберіть Operaте, що ми хотіли б перевірити. У цьому випадку це «MedicareSupplierSoap -> GetSupplierByCity». Натисніть «OK».

Затвердження відповідності Xquery

Крок 10: Введіть назву тесту та натисніть «OK».

Затвердження відповідності 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 Assertion, оскільки нам потрібні сотні XPath Assertion. Тому в цьому випадку використання XQuery неминуче.

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

Затвердження відповідності Xquery

Крок 15: Тепер натисніть «Додати твердження»,

  1. Виберіть «Категорію твердження» – у цьому випадку вміст властивості.
  2. Виберіть тип твердження як "твердження XQuery"
  3. Натисніть «Додати».

Затвердження відповідності Xquery

Крок 16: Подібно до XPath Assertion, нам потрібно оголосити простір імен.

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

    Примітка: Після натискання кнопки «Оголосити» ви можете отримати різні 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 Assertion виконується та відображає кінцевий результат на панелі «Assertion», як показано нижче. Тепер ми успішно додали твердження Xquery, за допомогою якого ми перевірили всю інформацію про номер постачальника. Те саме порівнюється з фактичними даними щоразу, коли запит надсилається веб-серверу.

Примітка. Фактичні значення не відображатимуться. Якщо всі фактичні значення збігаються з очікуваними значеннями, тоді відображається VALID, інакше буде відображено «Failed».

Затвердження відповідності Xquery

Коли використовувати вбудоване твердження?

  • Коли відповідь коротка, її можна перевірити за допомогою одного з цих вбудованих тверджень.
  • Ми також можемо використовувати Inbuilt Assertion, якщо відповідь, надіслана з веб-сервера, завжди є статичною за своєю природою. Якщо він динамічний, ми не зможемо стверджувати його за допомогою вбудованих тверджень.
  • Коли використання вбудованих тверджень, таких як твердження Time-out і твердження безпеки, стає неминучим.
  • Вбудовані твердження досить добре підходять для одноразового використання, коли тести не потрібно повторювати.

Параметри тверджень

Створені твердження можна найкраще контролювати за допомогою панелі керування, яка виділена нижче.

Параметри тверджень

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

варіант Опис

Параметри тверджень

Вибране твердження переміщується вгору.

Параметри тверджень

Вибране твердження переміщається вниз.

Параметри тверджень

Вилучає вибране твердження

Параметри тверджень

Повторно налаштувати/відредагувати вибране твердження.
  • Нижче наведено функції, доступні виключно в PRO-версії SOAP UI. Версія PRO також допомагає нам групувати твердження, щоб ми могли додати ще один рівень перевірки до створених твердження.
  • І: Усі твердження оцінюються як ДІЙСНІ твердження, що призведе до ВИХОДЕННОЇ умови групи. АБО: принаймні одне з твердження в групі має бути ДІЙСНИМ, щоб стверджувати умову ВИХІДНОЇ групи.

  • Pro версія також дозволяє Клонування тверджень: ця опція дозволяє тестувальникам дозволити копіювання твердження на інший крок тесту в тому самому чи іншому проекті.
  • Вимкнути/ввімкнути твердження: цей параметр дозволяє вимкнути або ввімкнути будь-яке згруповане чи незгруповане твердження. Якщо твердження вимкнено, воно виділено сірим кольором, і коли тестовий приклад виконується, вимкнені твердження не виконуватимуться.
  • Розгрупувати твердження: будь-які згруповані твердження можна розгрупувати, якщо тестувальники вирішать це зробити.

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

Механізм ствердження

Опис

МАЙНОВИЙ ЗМІСТ
Містить Шукає існування вказаного рядка. Він також підтримує регулярні вирази.
Не містить Шукає Неіснування зазначеного рядка. Він також підтримує регулярні вирази.
Збіг XPath Використовує вираз XPath для вибору цільового вузла та його значень.
Збіг XQuery Використовує вираз Xquery для вибору вмісту з цільової властивості.
Відповідність, статус, стандарти
HTTP Завантажити весь ресурс Перевіряє HTML-документ після завантаження та підтримує будь-яку властивість, що містить HTML.
Недійсні коди стану HTTP Перевіряє, чи містить відповідь HTML код стану, якого немає у списку визначених кодів.
Не помилка SOAP Перевіряє, чи останнє отримане повідомлення не є помилкою SOAP. Цілком очевидно, що він застосовний лише для етапів тестування SOAP.
Відповідність схеми Перевіряє, чи останнє отримане повідомлення відповідає визначенню стандартної схеми WSDL або WADL. Добре підходить для етапів тестування SOAP і REST.
Помилка SOAP Перевіряє, чи останнє отримане повідомлення є помилкою SOAP. Це протилежність заявам про помилку «НЕ SOAP».
Відповідь SOAP Перевіряє, чи остання отримана відповідь є дійсною відповіддю SOAP і діє лише для кроків запиту на тестування SOAP.
Дійсні коди стану HTTP Перевіряє, чи HTML-відповідь містить код стану, який є у списку визначених кодів. Це протилежне до твердження «Недійсні коди стану HTTP».
Запит WS-адресації Перевіряє, чи останній отриманий запит містить відповідні заголовки WS-адресації.
Відповідь WS-адресації Перевіряє, чи містить остання отримана відповідь відповідні заголовки WS-адресації.
WS-Статус безпеки Перевіряє, чи останнє отримане повідомлення містить дійсні заголовки WS-Security, і діє лише для запитів SOAP.
Script
Твердження сценарію Дозволяє користувачам виконувати спеціальний сценарій для виконання визначених користувачем перевірок.
SLA
Відповідь SLA Перевіряє, чи час відповіді останньої отриманої відповіді був у межах визначеного ліміту.
J.M.S.
Статус JMS Перевіряє, чи запит JMS тестового кроку виконано успішно та чи придатний для тестових кроків із кінцевою точкою JMS.
Час очікування JMS Перевіряє, чи відповідь JMS на тестовий крок не тривала довше, ніж указана тривалість.
Безпека
Викриття конфіденційної інформації Перевіряє, чи повідомлення відповіді не розкриває конфіденційну інформацію про цільову систему. Ми можемо використовувати це твердження для етапів тестування REST, SOAP і HTTP.

ЗАВАНТАЖИТИ ПРОЕКТ SOAPUI, ЯКИЙ МІСТИТЬ ВИЩЕКАЗАННІ ТВЕРДЖЕННЯ

Поширені помилки та усунення несправностей

Використовуйте правильний простір імен. Простір імен має бути URL-адресою веб-служби.

Якщо під час розробки твердження сценарію сталася помилка, використовуйте 'log.info', щоб надрукувати вміст змінних

Якщо ви не отримали потрібний вихід, перевірте, чи в запиті передано дійсний вхід.

Наприклад, у конвертері валют, якщо ви вводите «intA» як «x», який не є цілим числом, вихід видає код помилки як «SOAP-клієнт», який означає, що проблема пов’язана з параметром, який передається з клієнтська сторона.

Поширені помилки та усунення несправностей

Поширені помилки та усунення несправностей

Переконайтеся, що ви використовуєте правильний синтаксис під час використання твердження XPATH і XQuery. Ви НЕ повинні використовувати крапку (.) замість двокрапки (:) під час використання наведеного вище твердження. Синтаксис: //простір імен:ім’я тегу, а НЕ //простір імен.ім’я тегу. У такому разі ви можете отримати повідомлення «НЕМАЄ відповідності в поточній відповіді», навіть якщо назва тегу правильна.

Поширені помилки та усунення несправностей