Утвърждения в SoapUI: Урок за скриптове, XQuery, типове XPath

Какво е твърдение?

Твърдението означава акт на потвърждаване или заявяване на нещо. Може също да се тълкува като контролна точка или точка за валидиране.

След като заявка бъде изпратена до уеб сървър, се получава отговор. Трябва да проверим дали отговорът съдържа данните, които очакваме. За да потвърдим отговора, трябва да използваме твърдения.

Видове твърдения

Има различни начини за отстояване на отговор; ние обаче ще се съсредоточим върху често използваните типове твърдения на SoapUI, докато валидираме отговор. По-долу са тези, които са налични във версията с отворен код на SoapUI.

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

Освен изброените по-горе, PRO версията има и вграден JDBC Assertion, чрез който можем да потвърдим дали уеб услугата е актуализирала правилно базата данни.

СЪДЪРЖА ТВЪРДЕНИЕ

Търси съществуването на посочения низ. Той също така поддържа регулярен израз.

Ще продължим със същия пример от предишния урок с WSDL заявка като http://www.dneonline.com/calculator.asmx.

Стъпка 1: По подразбиране няма твърдения.

  • Броят на твърденията се показва в раздела Твърдения.
  • За да добавите ново твърдение, щракнете върху бутона „Добавяне на ново твърдение“.

Съдържа твърдение

Стъпка 2: Сега,

  1. Изберете категорията на твърдението.
  2. Изберете Тип твърдение.
  3. Щракнете върху "Добавяне"

Съдържа твърдение

Стъпка 3: Нека проверим дали низът „46“ съществува в отговора. Щракнете върху „OK“

Забележка: Можем също да игнорираме малки и големи букви и да добавим регулярен израз.

Съдържа твърдение

Стъпка 4: При добавянето му незабавно се изпълнява assertion и се показва дали е ВАЛИДЕН или НЕВАЛИДЕН.

Съдържа твърдение

Стъпка 5: Нека сега да кажем, че променяме съдържанието на „Contains Assertion in SoapUI“ на „47“ и да видим какво ще се случи.

Съдържа твърдение

Стъпка 6: Твърдението се изпълнява и резултатът се хвърля на потребителя. Тъй като нямаме низа „47“ в отговора, твърдението е неуспешно.

Съдържа твърдение

НЕ СЪДЪРЖА ТВЪРДЕНИЕ

Търси несъществуването на посочения низ. Той също така поддържа регулярен израз.

Стъпка 1: След като щракнете върху бутона „добавяне на нови твърдения“,

  1. Изберете категорията на твърдението.
  2. Изберете типа твърдение – в този случай „НЕ съдържа“
  3. Щракнете върху "Добавяне"

Не съдържа твърдение

Стъпка 2: Нека проверим дали низът 'intA' съществува в отговора. Въведете низа „FromCurrency“ и щракнете върху „OK“

Не съдържа твърдение

Стъпка 3: Веднага щом бъде добавено твърдение, то се изпълнява и показва резултата. Досега сме добавили две твърдения, следователно и двете твърдения се изпълняват и показват резултата.

Не съдържа твърдение

Стъпка 4: Сега нека променим съдържанието на 'Not Contains Assertion' и да видим какво ще се случи. Ще проверим за несъществуването на низа „AddResult“.

Не съдържа твърдение

Стъпка 5: Низът „AddResult“ действително присъства в отговора, следователно твърдението „НЕ съдържа“ ще се провали, както е показано по-долу.

Не съдържа твърдение

УТВЪРЖДЕНИЕ ЗА СЪОТВЕТСТВИЕ НА XPATH

Можете да използвате XPath израз, за ​​да изберете целевия възел и неговите стойности. XPath е език за XML заявки за избор на възли от XML документ.

Стъпка 1: След като щракнете върху бутона „Добавяне на нови твърдения“,

  1. Изберете категорията на твърдението.
  2. Изберете типа твърдение – в този случай „XPath Match“
  3. Щракнете върху "Добавяне"

Твърдение за съответствие на XPath

Стъпка 2: Отваря се прозорец за добавяне на XPath.

Преди да добавим SoapUI XPath, трябва да декларираме NameSpace. XML пространството от имена е колекция от имена, идентифицирани чрез препратка към Uniform Resource Identifier (URI), които се използват в XML документи като имена на елементи и атрибути. Същото се използва в SOAP UI XPath Assertion.

За да декларираме пространство от имена на XML, просто трябва да щракнем върху бутона „Деклариране“, което ще свърши работата вместо нас, в противен случай можем също ръчно да декларираме пространство от имена сами.

След като декларираме пространството от имена, трябва да препратим XPath, използвайки създаденото пространство от имена.

При щракване върху бутона „Деклариране“ ще изскочат две пространства от имена, тъй като имаме два URI. Единият от тях е URL адресът на схемата, а другият съответства на действителния URL адрес на уеб услугата. Трябва да използваме действителното пространство от имена, където се намира уеб услугата, а НЕ пространството от имена на схемата, докато препращаме към XPath.

Твърдение за съответствие на XPath

декларирайте namespace 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 Скриптиране или JavaСценарий за скриптови твърдения. Скриптовата техника е възприета за разработване на рамка за тестване на SOAP. Скриптовите твърдения се използват при следните обстоятелства.

Скриптовете позволяват на потребителя да извършва някои операции преди и след изпълнението на TestCase, като използва съответно методи за настройка и разрушаване. Настройването е процедура, която се изпълнява преди изпълнението на конкретен метод (пример – създаване и инициализация на обект), докато събарянето е процедура, която се изпълнява след изпълнение на метода (напр.: Унищожаване на обекти и почистване). Тази функция не е налична в други типове твърдения и може да се направи само чрез кодиране.

Той позволява на потребителите да извършват отваряне/затваряне на проект, за да инициализират или изчистят свързаните с проекта настройки, както и да работят с променливи на средата, което е много полезно по време на скриптове.

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

Скриптовите твърдения се използват за създаване на дефинирани от потребителя твърдения, които НЕ са предварително дефинирани от SOAP UI.

За демонстриране на твърдение на скрипт в SoapUI ще използваме калкулатора WSDL, тестовия случай „Добавяне“, който създадохме по-рано.

Стъпка 1: Стъпките за добавяне на groovy скрипт са същите като тези на други твърдения, с изключение на това, че твърдението не е предварително дефинирано. Вместо това е дефинирано от потребителя твърдение, което предлага по-голяма гъвкавост от вградените.

Изберете тестовата стъпка, спрямо която трябва да се добави твърдението.

Скриптови твърдения

Щракнете върху бутона „Добавяне на твърдение“, както е показано по-долу.

Скриптови твърдения

Стъпка 2: Сега изберете категорията Assertion.

  1. В този случай това е скрипт.
  2. Изберете SoapUI Script Assertion и няма свързани с него подтипове.
  3. Кликнете върху „Добавяне“.

Скриптови твърдения

Стъпка 3: Отваря се диалоговият прозорец за скриптове, където потребителят ще може да напише дефиниран от потребителя скрипт, за да потвърди XML отговора.

Скриптови твърдения

Стъпка 4: Сега нека напишем groovy скрипт за валидиране на процента на реализация. Сценарият е приложен по-долу с вградени коментари. Препоръчително е да имате познания по 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. Показва се информацията, че „Script Assertion Passed“. Натиснете OK.

Забележка: Последният изскачащ прозорец с информация винаги ще се показва със съобщението „Утвърждението на скрипта е преминало“, стига скриптът да е синтактично правилен. Няма връзка с вашето твърдение в сценария.

Скриптови твърдения

натиснете ОК

Стъпка 5: Сега разделът за твърдения показва всички твърдения, които сме добавили за този пакет от тестове, със състоянието спрямо всяко едно от тях.

Скриптови твърдения

Стъпка 6: Сега

  1. Изберете пакета за тестване от дървото на навигатора
  2. Щракнете върху бутона „Изпълни“.
  3. Резултатите ще бъдат показани за целия набор от тестове.

Скриптови твърдения

Твърдение за съвпадение на Xquery

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

Стъпка 1: Щракнете с десния бутон върху съществуващия проект и изберете „Добавяне на WSDL“.

Твърдение за съвпадение на Xquery

Стъпка 2: Щракнете с десния бутон върху съществуващия проект и изберете „Добавяне на WSDL“. Оставете другите опции по подразбиране и щракнете върху бутона „OK“.

Твърдение за съвпадение на Xquery

Стъпка 3: Всички операции са изброени, както е показано по-долу.

Твърдение за съвпадение на Xquery

Стъпка 4: Сега нека добавим a Тестов случай в рамките на същия тестов пакет, за който създадохме Тестване валутен конвертор.

Твърдение за съвпадение на Xquery

Стъпка 5: Въведете името на тестовия случай и щракнете върху бутона „OK“.

Твърдение за съвпадение на Xquery

Стъпка 6: Тестовият случай се създава, както е показано по-долу.

Твърдение за съвпадение на Xquery

Стъпка 7: Добави
нова тестова стъпка от тип „Заявка за тест за сапун“, както е показано по-долу.

Твърдение за съвпадение на Xquery

Стъпка 8: Въведете името на тестовата стъпка. Да кажем – Supplier_by_City, което би било по-смислено Кликнете върху „OK“.

Твърдение за съвпадение на 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 да декларира пространството от имена. При щракване върху бутона за деклариране на потребителя ще се покаже „POP up“ със съобщение „вместо това декларирайте пространство от имена от схема“. Щракнете върху „Да“, за да продължите, както е показано по-долу.

    Забележка: При натискане на бутона „Деклариране“ може да се окажете с различни 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, в противен случай ще се покаже „Неуспешно“.

Твърдение за съвпадение на Xquery

Кога да използвате вградено твърдение?

  • Когато отговорът е кратък, така че да може да бъде валидиран с помощта на едно от тези вградени твърдения.
  • Можем също да използваме Inbuilt Assertion, ако отговорът, изпратен от уеб сървъра, винаги е статичен по природа. Ако е динамичен, няма да можем да го потвърдим с помощта на вградени твърдения.
  • Когато използването на вградени твърдения като твърдения за изчакване и твърдения за сигурност стане неизбежно.
  • Вградените твърдения се държат доста добре за еднократна употреба, когато тестовете не трябва да се повтарят.

Опции за твърдения

Създадените твърдения могат да се контролират най-добре с помощта на контролния панел, който е маркиран по-долу.

Опции за твърдения

Създадените твърдения позволяват на тестерите да конфигурират следните неща от кутията с инструменти за твърдения.

Опция Descriptйон

Опции за твърдения

Избраното твърдение се придвижва нагоре в реда.

Опции за твърдения

Избраното твърдение се придвижва надолу по реда.

Опции за твърдения

Премахва избраното твърдение

Опции за твърдения

Преконфигурирайте/редактирайте избраното твърдение.
  • По-долу са функциите, налични изключително в PRO версията на SOAP UI. PRO версията също ни помага да групираме твърдения, така че да можем да добавим още един слой на валидиране към създадените твърдения.
  • И: Всички твърдения се оценяват като ВАЛИДНИ твърдения, което ще доведе до ПРЕМИНАТО групово условие. ИЛИ: Поне едно от твърденията в рамките на групата трябва да бъде ВАЛИДНО, за да се потвърди ПРЕМИНАТО групово условие.

  • Pro версия също позволява Клониране на твърдения: Тази опция позволява на тестерите да разрешат копиране на твърдение в различна тестова стъпка в същия или различен проект.
  • Деактивиране/Разрешаване на твърдения: Тази опция позволява всяко групирано или негрупирано твърдение да бъде деактивирано или разрешено. Ако дадено твърдение е забранено, то е оцветено в сиво и когато се изпълни тестов случай, забранените твърдения няма да бъдат изпълнени.
  • Разгрупиране на твърдения: Всички групирани твърдения могат да бъдат разгрупирани, ако тестерите решат да го направят.

Пълен списък с методи, налични в различни типове твърдения

Утвърждаващ механизъм

Descriptйон

СЪДЪРЖАНИЕ НА ИМОТА
Съдържа Търси съществуването на посочения низ. Той също така поддържа регулярен израз.
Не съдържа Търси несъществуването на посочения низ. Той също така поддържа регулярен израз.
Съвпадение на XPath Използва XPath израз за избор на целевия възел и неговите стойности.
Съвпадение на XQuery Използва Xquery израз за избор на съдържание от целевото свойство.
Съответствие, статус, стандарти
HTTP Изтегляне на целия ресурс Валидира HTML документа след изтегляне и се отнася добре за всяко свойство, съдържащо HTML.
Невалидни HTTP кодове за състояние Проверява дали HTML отговорът съдържа код на състояние, който не е в списъка с дефинирани кодове.
Не е SOAP грешка Проверява дали последното получено съобщение не е SOAP грешка. Много очевидно е, че е приложимо само за SOAP Test Steps.
Съответствие на схемата Проверява дали последното получено съобщение е съвместимо с дефиницията на стандартната схема на WSDL или WADL. Поддържа се добре за SOAP и REST тестови стъпки.
SOAP грешка Проверява дали последното получено съобщение е SOAP грешка. Това е обратното на твърденията за грешка „НЕ SOAP“.
SOAP отговор Проверява дали последният получен отговор е валиден SOAP отговор и е валиден само за SOAP Test Request Steps.
Валидни HTTP статус кодове Проверява дали HTML отговорът съдържа код на състояние, който е в списъка с дефинирани кодове. Това е обратното на твърдението „Невалидни HTTP кодове за състояние“.
WS-заявка за адресиране Проверява дали последната получена заявка съдържа подходящи заглавки за WS-адресиране.
WS-адресиращ отговор Проверява дали последният получен отговор съдържа подходящи заглавки за WS-адресиране.
WS-Състояние на сигурността Проверява дали последното получено съобщение съдържа валидни заглавки на WS-Security и е валидно само за SOAP заявки.
Сценарий
Твърдение на скрипта Позволява на потребителите да изпълняват персонализиран скрипт за извършване на дефинирани от потребителя проверки.
SLA
SLA за отговор Потвърждава дали времето за отговор на последния получен отговор е в рамките на дефинирания лимит.
JMS
Състояние на JMS Проверява дали JMS заявката на тестовата стъпка е изпълнена успешно и е валидна за тестови стъпки с JMS крайна точка.
Време за изчакване на JMS Проверява дали отговорът на JMS на тестова стъпка не е отнел повече от определената продължителност.
Охрана
Излагане на чувствителна информация Проверява дали съобщението за отговор не разкрива поверителна информация за целевата система. Можем да използваме това твърдение за REST, SOAP и HTTP тестови стъпки.

ИЗТЕГЛЕТЕ ПРОЕКТА SOAPUI, СЪДЪРЖАЩ ГОРНИТЕ ТВЪРДЕНИЯ

Често срещани грешки и отстраняване на неизправности

Използвайте правилното пространство от имена. Пространството за имена трябва да бъде URL адресът, където се намира уеб услугата.

Ако възникне грешка при разработването на твърдение за скрипт, използвайте 'log.info', за да отпечатате съдържанието на променливите

Ако не сте получили желания изход, проверете дали в заявката е подаден валиден вход.

Например, в конвертора на валута, ако въведете „intA“ като „x“, което не е цяло число, изходът извежда код за грешка като „SOAP-клиент“, което означава, че проблемът е с параметъра, който се предава от клиентска страна.

Често срещани грешки и отстраняване на неизправности

Често срещани грешки и отстраняване на неизправности

Уверете се, че използвате правилния синтаксис, докато използвате XPATH и XQuery твърдение. НЕ трябва да използвате точка(.) вместо двоеточие(:), докато използвате горното твърдение. Синтаксисът е //пространство от имена:Име на маркер, а НЕ //пространство от имена.име на маркер. Като направите това, може да получите съобщение, че „НЯМА съвпадение в текущия отговор“, въпреки че името на маркера е правилно.

Често срещани грешки и отстраняване на неизправности