Твердження в SoapUIСкрипти, XQuery, типи XPath
⚡ Розумний підсумок
Твердження в SoapUI – це контрольні точки, які вирішують, чи є відповідь веб-сервісу правильною, перетворюючи запит, який просто виконується, на тест, який фактично проходить або не проходить на реальному, перевіреному контенті.

Що таке твердження?
Твердження означає акт ствердження або ствердження чогось. Його також можна інтерпретувати як контрольну точку або точку перевірки.
Після надсилання запиту на веб-сервер отримується відповідь. Нам потрібно перевірити, чи містить відповідь очікувані дані. Для перевірки відповіді нам потрібно використовувати твердження. Без твердження крок тестування лише доводить, що сервіс відповів, а не те, що він відповів правильно, тому кожен Тест API повинен мати при собі хоча б один.
Типи тверджень
Існує кілька способів стверджувати відповідь; проте ми зосередимося на найпоширеніших SoapUI типи тверджень під час перевірки відповіді. Нижче наведено категорії, доступні у версії з відкритим кодом SoapUI.
- Вміст власності
- Стандарт статусу відповідності
- Script
- SLA
- J.M.S.
- Безпека
Діалогове вікно групує кожне твердження за цими категоріями, як показано на скріншоті нижче.

Окрім перелічених вище, Pro-версія також має вбудоване JDBC-твердження, за допомогою якого ми можемо перевірити, чи веб-сервіс оновив базу даних правильно.
Примітка до версії: ток SoapUI документація також містить перелік JDBC категорію (Стан JDBC та Час очікування JDBC) поряд із категоріями вище, а також Вміст повідомлення твердження всередині вмісту властивостей для більш повного порівняння XML. Комерційна версія, яку тут називають «Pro», тепер продається як ReadyAPI від SmartBear, тому підписи меню в новіших збірках можуть читатися по-різному, тоді як поведінка тверджень залишається незмінною.
Містить твердження
Шукає існування вказаного рядка. Він також підтримує регулярні вирази.
Ми продовжимо той самий приклад із попереднього підручника із запитом WSDL http://www.dneonline.com/calculator.asmxЯкщо ви ще не реалізували цей проєкт, попрацюйте над ним створення проєкту, набору тестів та тестового випадку перший.
Крок 1: За замовчуванням немає тверджень.
- Кількість тверджень показано на вкладці Твердження.
- Щоб додати нове твердження, натисніть кнопку «Додати нове твердження».
Крок 2: Зараз,
- Виберіть категорію твердження.
- Виберіть тип твердження.
- Натисніть "Додати"
Крок 3: Перевіримо, чи рядок «46» існує у відповіді. Натисніть «ОК».
Примітка. Ми також можемо ігнорувати регістр і додати регулярний вираз.
Крок 4: Після додавання негайно виконується твердження, яке показує, чи є воно ДІЙСНИМ (VALID) чи НЕДІЙСНИМ (INVALID).
Крок 5: Тепер припустимо, що ми змінили вміст «Містить твердження» в SoapUI' до '47' і подивіться, що станеться.
Крок 6: Твердження виконується, і результат передається користувачеві. Оскільки у відповіді немає рядка '47', твердження не вдалося.
Не містить твердження
Його аналог працює навпаки. Шукає неіснування зазначеного рядка. Він також підтримує регулярні вирази.
Крок 1: Тепер, після натискання кнопки «додати нові твердження»,
- Виберіть категорію твердження.
- Виберіть тип твердження – у цьому випадку "НЕ містить"
- Натисніть "Додати"
Крок 2: Перевіримо, чи існує рядок 'intA' у відповіді. Введіть рядок 'FromCurrency' та натисніть 'OK'.
Крок 3: Щойно додається твердження, воно виконується та відображає результат. Досі ми додали два твердження, отже обидва твердження виконуються та відображають результат.
Крок 4: Тепер змінимо вміст твердження «Not Contains Assertion» і подивимося, що станеться. Ми перевіримо відсутність рядка «AddResult».
Крок 5: Рядок «AddResult» насправді присутній у відповіді, тому твердження «NOT Contains» не спрацює, як показано нижче.
Затвердження відповідності XPath
Зіставлення рядків є прямолінійним, тому наступне твердження націлене на один вузол. Використовується вираз XPath для вибору цільового вузла та його значень. XPath, — це мова запитів XML для вибору вузлів з XML-документа.
Крок 1: Тепер, після натискання кнопки «Додати нові твердження»,
- Виберіть категорію твердження.
- Виберіть тип твердження – у цьому випадку "Збіг XPath"
- Натисніть "Додати"
Крок 2: Відкриється вікно додавання XPath.
Перш ніж додавати SoapUI XPath, нам потрібно оголосити простір імен. Простір імен XML — це набір імен, ідентифікованих посиланням URI (уніфікований ідентифікатор ресурсу), які використовуються в XML-документах як імена елементів та атрибутів. Те саме використовується в SoapUI Твердження XPath.
Для оголошення простору імен XML нам просто потрібно натиснути кнопку «Оголосити», яка виконає роботу за нас, інакше ми можемо оголосити простір імен вручну самостійно.
Після оголошення простору імен нам потрібно звернутися до XPath, використовуючи створений простір імен.
Після натискання кнопки «Оголосити» з’являться два простори імен, оскільки у нас є два URI. Один з них — це схема. URL а інший відповідає фактичному веб-сервісу URLПід час посилання на XPath нам потрібно використовувати фактичний простір імен, де розташований веб-сервіс, а НЕ простір імен схеми. Оголошені рядки відображаються у верхній частині поля XPath, як показано нижче.
оголосити простір імен soap='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 буде відображатися, як показано нижче.
Твердження сценаріїв
Ця техніка тверджень є найбільш широко використовуваною, оскільки надзвичайно важко керувати сотнями тверджень і підтримувати їх.
SoapUI використовує будь-який Groovy Сценарії або JavaScript для скриптових тверджень. Метод скриптового написання застосовується для розробкиping фреймворк для тестування SOAP. Твердження сценаріїв використовуються за таких обставин.
- Скрипти дозволяють користувачеві виконувати деякі операції до та після виконання тестового випадку за допомогою методів set up та dealer відповідно. Set up – це процедура, яка виконується перед виконанням певного методу (наприклад, створення та ініціалізація об'єкта), тоді як dealer – це процедура, яка виконується після виконання методу (наприклад, знищення об'єктів та очищення). Ця функція недоступна в інших типах тверджень і може бути реалізована лише за допомогою кодування.
- Це дозволяє користувачам виконувати відкриття/закриття проекту, щоб ініціалізувати або очистити налаштування, пов'язані з проектом, а також працювати зі змінними середовища, що дуже корисно під час написання сценаріїв.
- Це допомагає нам затверджувати динамічний вміст відповіді.
- Твердження сценаріїв використовуються для створення визначених користувачем тверджень, які НЕ є попередньо визначеними SoapUI.
Для демонстрації твердження Script у SoapUI, ми скористаємося калькулятором WSDL, тестовим випадком «Додати», який ми створили раніше.
Крок 1: Кроки для додавання groovy-скрипту такі ж, як і для інших тверджень, за винятком того, що твердження не є попередньо визначеним. Натомість це користувацьке твердження, яке пропонує більшу гнучкість, ніж вбудовані.
Виберіть крок перевірки, щодо якого потрібно додати твердження.
Натисніть кнопку «Додати твердження», як показано нижче.
Крок 2: Тепер виберіть категорію «Твердження».
- У цьому випадку це сценарій.
- Виберіть SoapUI Твердження скрипту та жодних пов'язаних з ним підтипів.
- Натисніть «Додати».
Крок 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"}
- Натисніть кнопку «Виконати», щоб запустити виконання.
- Вихідні дані сценарію відображаються на панелі «Вивід». Він надрукував як значення конверсії, так і кінцевий результат (пройшов або не пройшов)
- Відображається інформація про те, що «Затвердження сценарію пройдено». Натисніть OK.
Примітка. Спливаюче вікно остаточної інформації завжди відображатиметься з повідомленням «Затвердження сценарію прийнято», якщо сценарій синтаксично правильний. Це не має жодної кореляції з вашим твердженням у сценарії.
натисніть OK
Крок 5: Тепер вкладка «Асертименти» відображає всі додані нами для цього набору тестів твердження разом зі статусом кожного з них.
Крок 6: зараз
- Виберіть набір тестів у дереві навігатора
- Натисніть кнопку «Виконати».
- Результати відображатимуться для всього набору тестів.
Твердження про збіг XQuery
Він використовує вираз XQuery для вибору вмісту з цільової властивості. Нам потрібен набагато більший XML-файл відповіді, щоб краще зрозуміти твердження XQuery в SoapUIІмпортуємо ще один WSDL, як показано нижче: http://www.webservicex.net/medicareSupplier.asmx?WSDL
Примітка: Публічні демонстраційні кінцеві точки webservicex.net, що використовуються в цьому покроковому посібнику, більше не є надійно досяжними, тому наведені нижче скріншоти запитів і відповідей зберігаються як довідковий приклад. Будь-який WSDL, який повертає повторюваний набір вузлів, виконає твердження XQuery точно так само.
Крок 1: Клацніть правою кнопкою миші на існуючому проекті та виберіть «Додати WSDL».
Крок 2: Відкриється діалогове вікно «Додати WSDL». Залиште інші параметри за замовчуванням і натисніть кнопку «OK».
Крок 3: Усі операції перелічені, як показано нижче.
Крок 4: Тепер додамо Тестовий випадок в тому самому наборі тестів, для якого ми створили Тестування конвертер валют.
Крок 5: Введіть назву тестового випадку та натисніть кнопку «ОК»
Крок 6: Тестовий випадок створюється, як показано нижче.
Крок 7: Додайте новий крок тестування типу «Запит на тестування SOAP», як показано нижче.
Крок 8: Введіть назву кроку тестування. Скажімо, Supplier_by_City, що було б більш зрозуміло. Натисніть «OK».
Крок 9: виберіть Operaте, що ми хотіли б перевірити. У цьому випадку це «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 Assertion, оскільки нам потрібні сотні XPath Assertion. Тому використання XQuery в цьому випадку неминуче.
XQuery Assertion допомагає нам перевірити групу відповідей XML, які повторюються за своєю природою.
Крок 15: Тепер натисніть кнопку «Додати твердження».
- Виберіть «Категорію твердження» – у цьому випадку вміст властивості.
- Виберіть тип твердження як "твердження XQuery"
- Натисніть «Додати».
Крок 16: Подібно до XPath Assertion, нам потрібно оголосити простір імен.
- Натисніть кнопку «Оголосити», щоб автоматично дозволити SoapUI щоб оголосити простір імен. Після натискання кнопки «Оголосити» користувачеві буде відображено спливаюче вікно з повідомленням «Оголосити простір імен зі схеми замість цього». Натисніть «Так», щоб продовжити, як показано нижче.
- Щоб отримати всі номери постачальників, нам потрібно написати запит XPath, і ми розмістимо його в < SupplierNumber> і Теги.
- Натисніть «Вибрати з поточного», який буде виконано з поточної відповіді.
- Після натискання кнопки «Вибрати з поточних» буде відображено список усіх номерів постачальників.
- Натисніть «Зберегти».
Примітка: Після натискання кнопки «Оголосити» ви можете отримати різні URLОднак, для кодування буде враховано фактичний простір імен розташування веб-сервісу.
Готовий вираз XQuery з оголошеннями простору імен виглядає ось так.
// 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, за допомогою якого перевірили всю інформацію про номер постачальника. Ці дані порівнюватимуться з фактичними щоразу, коли запит надсилатиметься на вебсервер.
Примітка. Фактичні значення не відображатимуться. Якщо всі фактичні значення збігаються з очікуваними значеннями, тоді відображається VALID, інакше буде відображено «Failed».
Коли використовувати вбудоване твердження?
З огляду на те, що розглянуто як варіанти «вкажи та клацни», так і сценарні, практичне питання полягає в тому, який з них обрати.
- Коли відповідь коротка, її можна перевірити за допомогою одного з цих вбудованих тверджень.
- Ми також можемо використовувати Inbuilt Assertion, якщо відповідь, надіслана з веб-сервера, завжди є статичною за своєю природою. Якщо він динамічний, ми не зможемо стверджувати його за допомогою вбудованих тверджень.
- Коли використання вбудованих тверджень, таких як твердження Time-out і твердження безпеки, стає неминучим.
- Вбудовані твердження досить добре підходять для одноразового використання, коли тести не потрібно повторювати.
Параметри тверджень
Створені твердження можна найкраще контролювати за допомогою панелі керування, яка виділена нижче.
Створені твердження дозволяють тестувальникам налаштовувати наступні речі з панелі інструментів твердження.
| варіант | Опис |
| Вибране твердження переміщується вгору. | |
| Вибране твердження переміщається вниз. | |
| Вилучає вибране твердження | |
| Повторно налаштувати/відредагувати вибране твердження. |
Нижче наведено функції, доступні виключно у Pro-версії SoapUI, тепер постачається як ReadyAPIПрофесійна версія також допомагає нам групувати твердження, щоб ми могли додати ще один рівень перевірки до створених тверджень.
- І: Усі твердження оцінюються як ДІЙСНІ, що призведе до групової умови PASSED.
- АБО: Принаймні одне з тверджень у групі має бути ДІЙСНИМ, щоб стверджувалася умова групи PASSED.
- Pro версія також дозволяє Клонування твердженьЦя опція дозволяє тестувальникам копіювати твердження на інший крок тестування в тому ж або іншому проєкті.
- Вимкнути/Увімкнути твердження: Цей параметр дозволяє вимикати або вмикати будь-яке згруповане або незгруповане твердження. Якщо твердження вимкнено, воно неактивне, і під час виконання тестового випадку вимкнені твердження не виконуватимуться.
- Розгрупування тверджень: Будь-які згруповані твердження можна розгрупувати, якщо тестувальники вирішать це зробити.
Повний список методів, доступних у різних типах тверджень
У таблиці нижче зібрано всі твердження, обговорені вище, згруповані за категорією, в якій вони відображаються в діалоговому вікні «Додати твердження».
| Механізм ствердження | Опис |
| МАЙНОВИЙ ЗМІСТ | |
| Містить | Шукає існування вказаного рядка. Він також підтримує регулярні вирази. |
| Не містить | Шукає Неіснування зазначеного рядка. Він також підтримує регулярні вирази. |
| Збіг XPath | Використовує вираз XPath для вибору цільового вузла та його значень. |
| Збіг XQuery | Використовує вираз XQuery для вибору вмісту з цільової властивості. |
| Відповідність, статус, стандарти | |
| HTTP Завантажити весь ресурс | Перевіряє HTML-документ після завантаження та підтримує будь-яку властивість, що містить HTML. |
| Недійсний HTTP-статус Codes | Перевіряє, чи містить відповідь HTML код стану, якого немає у списку визначених кодів. |
| Не помилка SOAP | Перевіряє, чи останнє отримане повідомлення не є помилкою SOAP. Цілком очевидно, що він застосовний лише для етапів тестування SOAP. |
| Відповідність схеми | Перевіряє, чи останнє отримане повідомлення відповідає визначенню стандартної схеми WSDL або WADL. Добре підходить для етапів тестування SOAP і REST. |
| Помилка SOAP | Перевіряє, чи останнє отримане повідомлення є помилкою SOAP. Це протилежність заявам про помилку «НЕ SOAP». |
| Відповідь SOAP | Перевіряє, чи остання отримана відповідь є дійсною відповіддю SOAP і діє лише для кроків запиту на тестування SOAP. |
| Дійсний HTTP-статус Codes | Перевіряє, чи містить HTML-відповідь код стану, який є у списку визначених кодів. Це інверсія до «Недійсний HTTP-статус». CodeТвердження. |
| Запит WS-адресації | Перевіряє, чи останній отриманий запит містить відповідні заголовки WS-адресації. |
| Відповідь WS-адресації | Перевіряє, чи містить остання отримана відповідь відповідні заголовки WS-адресації. |
| WS-Статус безпеки | Перевіряє, чи останнє отримане повідомлення містить дійсні заголовки WS-Security, і діє лише для запитів SOAP. |
| Script | |
| Твердження сценарію | Дозволяє користувачам виконувати спеціальний сценарій для виконання визначених користувачем перевірок. |
| SLA | |
| Відповідь SLA | Перевіряє, чи час відповіді останньої отриманої відповіді був у межах визначеного ліміту. |
| J.M.S. | |
| Статус JMS | Перевіряє, чи запит JMS тестового кроку виконано успішно та чи придатний для тестових кроків із кінцевою точкою JMS. |
| Час очікування JMS | Перевіряє, чи відповідь JMS на тестовий крок не тривала довше, ніж указана тривалість. |
| Безпека | |
| Викриття конфіденційної інформації | Перевіряє, чи повідомлення відповіді не розкриває конфіденційну інформацію про цільову систему. Ми можемо використовувати це твердження для етапів тестування REST, SOAP і HTTP. |
ЗАВАНТАЖИТИ ПРОЕКТ SOAPUI, ЯКИЙ МІСТИТЬ ВИЩЕКАЗАННІ ТВЕРДЖЕННЯ
Поширені помилки та усунення несправностей
Більшість невдалих тверджень tracповертаємося до невеликої кількості помилок, тому перевірте їх, перш ніж переписувати вираз.
- Використовуйте правильний простір імен. Простір імен має бути URL де розташований веб-сервіс.
- Якщо під час розробки виникає помилкаping скриптове твердження, використовуйте 'log.info' для виведення вмісту змінних.
- Якщо ви не отримали потрібний вихід, перевірте, чи в запиті передано дійсний вхід.
Наприклад, у конвертері валют, якщо ввести «intA» як «x», що не є цілим числом, на виході буде виведено код помилки «SOAP-Client», що означає, що проблема пов'язана з параметром, який передається з боку клієнта. Запит, що містить недійсне значення, відображається першим.
Відповідь повертає код помилки замість результату, як показано нижче.
Переконайтеся, що ви використовуєте правильний синтаксис під час використання тверджень XPath та XQuery. НЕ слід використовувати dot(.) замість cop(:) під час використання наведеного вище твердження. Синтаксис такий: //простір імен:Тег, а НЕ //простір імен.тег. Роблячи це, ви можете отримати повідомлення «НЕМАЄ збігу в поточній відповіді», навіть якщо ім'я тегу правильне.














































