Aserțiuni în SoapUI: Tutorial Scripturi, XQuery, XPath
Ce este o afirmație?
Aserțiune înseamnă act de afirmare sau afirmare a ceva. Poate fi interpretat și ca punct de verificare sau punct de validare.
Odată ce o solicitare este trimisă către un server web, se primește un răspuns. Trebuie să validăm dacă răspunsul conține datele pe care le așteptăm. Pentru a valida răspunsul, trebuie să folosim aserțiuni.
Tipuri de afirmații
Există diferite moduri de a afirma un răspuns; cu toate acestea, ne vom concentra pe tipurile de afirmații SoapUI utilizate în mod obișnuit în timp ce validăm un răspuns. Mai jos sunt cele care sunt disponibile în versiunea Open Source a SoapUI.
- Conținutul proprietății
- Standard de stare de conformitate
- Scenariu
- SLA
- JMS
- Securitate
În afară de cele enumerate mai sus, versiunea PRO are și o aserție JDBC încorporată prin care putem afirma dacă serviciul web a actualizat corect baza de date.
CONTINE ASERȚIE
Caută existența șirului specificat. De asemenea, susține expresia regulată.
Vom continua cu același exemplu din tutorialul anterior cu cerere WSDL ca http://www.dneonline.com/calculator.asmx.
Pasul 1: În mod implicit, nu există afirmații.
- Numărul de aserțiuni este afișat în fila Aserțiuni.
- Pentru a adăuga o nouă afirmație, faceți clic pe butonul „Adăugați o nouă afirmație”.
Pasul 2: Acum,
- Selectați Categoria de aserțiune.
- Selectați tipul de afirmație.
- Faceți clic pe „Adăugați”
Pasul 3: Să validăm dacă șirul „46” există în răspuns. Faceți clic pe „OK”
Notă: putem ignora, de asemenea, majuscule și litere și adăugați expresii regulate.
Pasul 4: La adăugarea acestuia, imediat este executată afirmația și arată dacă VALID sau INVALID.
Pasul 5: Acum Să presupunem că schimbăm conținutul „Conține afirmația în SoapUI” la „47” și vedem ce se întâmplă.
Pasul 6: Afirmația este executată și rezultatul este aruncat utilizatorului. Deoarece nu avem șirul „47” în răspuns, afirmația a eșuat.
NU CONTINE ASERTARE
Caută inexistența șirului specificat. De asemenea, susține expresia regulată.
Pasul 1: Acum, după ce faceți clic pe butonul „Adăugați noi afirmații”,
- Selectați Categoria de aserțiune.
- Selectați tipul de afirmație – În acest caz, „NU conține”
- Faceți clic pe „Adăugați”
Pasul 2: Să validăm dacă șirul „intA” există în răspuns. Introduceți șirul „FromCurrency” și faceți clic pe „OK”
Pasul 3: De îndată ce o aserțiune este adăugată, aceasta se execută și afișează rezultatul. Până acum am adăugat două aserțiuni, astfel încât ambele aserțiuni sunt executate și afișat rezultatul.
Pasul 4: Acum haideți să schimbăm conținutul „Afirmația „Nu conține” și să vedem ce se întâmplă. Vom verifica inexistența șirului „AddResult”.
Pasul 5: Șirul „AddResult” este de fapt prezent în răspuns, prin urmare afirmația „NU conține” va eșua, așa cum se arată mai jos.
ASERȚIUNEA MECIULUI XPATH
Utilizeaza XPath expresie pentru a selecta nodul țintă și valorile acestuia. XPath, este un limbaj de interogare XML pentru selectarea nodurilor dintr-un document XML.
Pasul 1: Acum, după ce faceți clic pe butonul „Adăugați afirmații noi”,
- Selectați Categoria de aserțiune.
- Selectați tipul de afirmație – În acest caz, „Potrivire XPath”
- Faceți clic pe „Adăugați”
Pasul 2: Se deschide fereastra Adăugați XPath.
Înainte de a adăuga SoapUI XPath, trebuie să declarăm NameSpace. Un spațiu de nume XML este o colecție de nume, identificate printr-o referință URI (Uniform Resource Identifier), care sunt utilizate în documentele XML ca nume de elemente și atribute. Același lucru este utilizat în Aserțiunea XPath UI SOAP.
Pentru a declara un spațiu de nume XML, trebuie doar să facem clic pe butonul „Declară”, care ar face treaba pentru noi, altfel putem declara manual și noi înșine un spațiu de nume.
După declararea spațiului de nume, trebuie să facem referire la XPath folosind spațiul de nume creat.
După ce faceți clic pe butonul „Declarare”, vor apărea două spații de nume, deoarece avem două URI. Una dintre ele este URL-ul schemei, iar celălalt corespunde URL-ului serviciului web real. Trebuie să folosim spațiul de nume real în care se află serviciul web și NU spațiul de nume al schemei în timp ce facem referință la XPath.
declare namespace soap='http://schemas.xmlsoap.org/soap/envelope/';
declare namespace ns1='http://tempuri.org/';
Pasul 3: Acum trebuie să introducem XPath-ul nodului XML pe care trebuie să-l validăm.
//ns1:AddResult Ne oferă valoarea nodului cuprins între & și ns1 corespunde spațiului de nume declarat care indică „http://tempuri.org/”
După introducerea XML-ului, trebuie să facem clic pe „Selectează din curent”, astfel încât valoarea din răspunsul curent să fie preluată pentru comparație în continuare.
Pasul 4: Pana acum,
- După declararea spațiilor de nume, am intrat în nodul XPath of XML pe care trebuie să-l validăm.
- Trebuie să facem clic pe „Selectați din curent” pentru a face ca valoarea curentă să fie valoarea așteptată.
- Valoarea curentă este afișată utilizatorului, pe care o putem modifica dacă este necesar.
- Faceți clic pe „Salvați”.
Pasul 5: Afirmația adăugată în SoapUI va fi afișată așa cum se arată mai jos.
Afirmații de scriptare
Această tehnică de aserțiune este cea mai utilizată, deoarece este extrem de dificil de gestionat și menținut sute de aserțiuni.
SOAP UI folosește fie Groovy Scripting sau JavaScenariu pentru scripting aserțiuni. Tehnica de scripting este adoptată pentru dezvoltarea unui cadru pentru testarea SOAP. Afirmațiile de scripting sunt utilizate în următoarele circumstanțe.
Scriptarea permite utilizatorului să efectueze unele operații înainte și după executarea unui TestCase folosind metode de configurare și, respectiv, de demontare. Configurarea este o procedură care este executată înainte de a executa o anumită metodă (de exemplu – Crearea obiectelor și inițializarea), în timp ce demolarea este o procedură care se execută după executarea metodei (de exemplu: Distrugerea obiectelor și curățarea). Această caracteristică nu este disponibilă în alte tipuri de afirmații și poate fi realizată numai prin codificare.
Permite utilizatorilor să efectueze deschiderea/închiderea unui proiect, pentru a inițializa sau curăța setările legate de proiect și, de asemenea, pentru a lucra cu variabile de mediu, ceea ce este foarte util în timpul scriptării.
Ne ajută să afirmăm un conținut dinamic de răspuns.
Aserțiunile de scripting sunt folosite pentru a crea aserțiuni definite de utilizator care NU sunt predefinite de SOAP UI.
Pentru demonstrarea aserției Scriptului în SoapUI, vom folosi calculatorul WSDL, cazul de testare „Add” pe care l-am creat mai devreme.
Pasul 1: Pașii pentru adăugarea unui script groovy sunt aceiași cu cei ai altor aserțiuni, cu excepția faptului că afirmația nu este una predefinită. În schimb, este o afirmație definită de utilizator care oferă flexibilități mai mari decât cele încorporate.
Selectați pasul Test față de care trebuie adăugată afirmația.
Faceți clic pe butonul „Adăugați o afirmație”, așa cum se arată mai jos.
Pasul 2: Acum selectați categoria Aserțiune.
- În acest caz este Script.
- Selectați SoapUI Script Assertion și nu există subtipuri asociate cu aceasta.
- Faceți clic pe „Adăugați”.
Pasul 3: Se deschide Dialogul de Scripting, unde utilizatorul va putea scrie un script definit de utilizator pentru a valida XML răspunsul.
Pasul 4: Acum să scriem un script groovy pentru a valida rata de conversie. Scriptul este atașat mai jos cu comentariile încorporate. Este recomandat să aveți cunoștințe despre Java Script sau Groovy Script înainte de a încerca să scrieți propriul 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"}
- Faceți clic pe butonul „Execute” pentru a declanșa execuția.
- Ieșirea Scriptului este afișată în panoul Ieșire. A tipărit atât valoarea conversiei, cât și rezultatul final (reușit sau eșuat)
- Se afișează informațiile că „Aserțiunea scriptului a fost trecută”. Faceți clic pe OK.
Notă: Fereastra pop-up finală cu informații va fi întotdeauna afișată cu mesajul „Aserțiune scriptura trecută”, atâta timp cât scriptul este corect din punct de vedere sintactic. Nu are nicio corelație cu afirmația dvs. din script.
Faceți clic pe OK
Pasul 5: Acum, fila de afirmații afișează toate aserțiunile pe care le-am adăugat pentru această suită de testare cu Status față de fiecare dintre acestea.
Pasul 6: Acum
- Selectați suita de teste din arborele Navigator
- Faceți clic pe butonul „Run”.
- Rezultatele vor fi afișate pentru întreaga suită de teste.
Afirmație de potrivire Xquery
Folosește o expresie Xquery pentru a selecta conținutul din proprietatea țintă. Avem nevoie de un XML de răspuns mult mai mare pentru a înțelege mai bine afirmația XQuery în SoapUI. Să importăm un alt WSDL, așa cum se arată mai jos: http://www.webservicex.net/medicareSupplier.asmx?WSDL
Pasul 1: Efectuați un clic dreapta pe proiectul existent și selectați „Adăugați WSDL”.
Pasul 2: Efectuați un clic dreapta pe proiectul existent și selectați „Adăugați WSDL”. Lăsați alte opțiuni ca implicite și faceți clic pe butonul „OK”.
Pasul 3: Toate operațiunile sunt enumerate după cum se arată mai jos.
Pasul 4: Acum să adăugăm o Caz de testare în aceeași suită de teste pentru care am creat-o Testarea convertorul valutar.
Pasul 5: Introduceți numele cazului de testare și faceți clic pe butonul „OK”.
Pasul 6: Cazul de testare este creat așa cum se arată mai jos.
Pasul 7: Adăuga
un nou pas de testare de tip „Soap Test Cerere”, după cum se arată mai jos.
Pasul 8: Introduceți numele pasului de testare. Să spunem – Supplier_by_City care ar fi mai semnificativ Faceți clic pe „OK”.
Pasul 9: selectaţi Operațiune pe care am dori să o validăm. În acest caz, este „MedicareSupplierSoap -> GetSupplierByCity”. Faceți clic pe „OK”.
Pasul 10: Introduceți numele cazului de testare și faceți clic pe „OK”.
Pasul 11: Request XML Outline va fi afișat așa cum se arată mai jos.
Pasul 12: Acum, să găsim toate informațiile despre furnizori pentru orașul „New York”.
Pentru a face acest lucru, adăugați următoarele rânduri la codul dvs.
<GetSupplierByCity xmlns="http://www.webservicex.net/"> <City>New York</City> </GetSupplierByCity>
WSDL în URL-ul de mai jos - http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity
Pasul 13: La executarea testului, primim răspunsul de mai jos
Pasul 14: Să presupunem că trebuie să validăm tot numărul furnizorului. Nu putem folosi XPath Assertion deoarece trebuie să avem sute de XPath Assertion. Prin urmare, utilizarea XQuery este inevitabilă în acest caz.
XQuery Assertion ne ajută să validăm un grup de răspunsuri XML care sunt de natură repetitivă.
Pasul 15: Acum faceți clic pe „Adăugați o afirmație”,
- Selectați „Categoria afirmației” – Conținutul proprietății în acest caz.
- Selectați tipul de afirmație ca „Aserțiune XQuery”
- Faceți clic pe „Adăugați”.
Pasul 16: Similar cu XPath Assertion, trebuie să declarăm spațiul de nume.
-
Faceți clic pe butonul „Declarare” pentru a permite automat SOAP UI să declare spațiul de nume. După ce faceți clic pe butonul de declarare, utilizatorului va fi afișat un „POP up” cu mesajul „declare namespace from schema instead”. Faceți clic pe „Da” pentru a continua așa cum se arată mai jos.
Notă: La apăsarea „butonul Declarare”, s-ar putea să ajungeți cu adrese URL diferite ca declarație de spațiu de nume, totuși, spațiul de nume al locației serviciului web real este ceea ce ar fi luat în considerare pentru codare.
- Pentru a prelua tot numărul furnizorului, trebuie să scriem o interogare XPath și o vom plasa în < SupplierNumber> și Etichete.
- Faceți clic pe „Selectați din curent”, care se va executa din răspunsul curent.
- După ce faceți clic pe „Selectați din curent”, sunt afișate toate numărul furnizorului.
- Faceți clic pe „Salvați”.
// 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)} }
Pasul 17: XQuery Assertion este executat și afișează rezultatul final în panoul „Assertion”, așa cum se arată mai jos. Acum am adăugat cu succes o afirmație Xquery folosind care am validat toate informațiile despre numărul furnizorului. Același lucru ar fi comparat cu datele reale, de fiecare dată când cererea este trimisă la serverul web.
Notă: Valorile reale nu vor fi afișate. Dacă toate valorile reale sunt aceleași cu cele așteptate, atunci se afișează VALID, altfel va afișa „Eșuat”.
Când să folosiți afirmația încorporată?
- Când un răspuns este scurt, astfel încât să poată fi validat utilizând una dintre acele aserțiuni încorporate.
- Putem folosi, de asemenea, Inbuilt Assertion dacă răspunsul trimis de la serverul web este întotdeauna de natură statică. Dacă este dinamic, nu îl vom putea afirma folosind aserțiuni încorporate.
- Când utilizarea aserțiilor încorporate, cum ar fi aserțiunile Time out și aserțiunile de securitate, devine inevitabilă.
- Afirmațiile încorporate se țin destul de bine pentru o utilizare unică, unde testele nu trebuie repetate.
Opțiuni pentru afirmații
Afirmațiile create pot fi controlate cel mai bine cu ajutorul panoului de control care este evidențiat mai jos.
Aserțiunile create permit testerilor să configureze următoarele lucruri din setul de instrumente pentru aserțiuni.
Opțiune | Description |
---|---|
Afirmația selectată se mută în sus în ordine. | |
Afirmația selectată se deplasează în jos în ordine. | |
Elimină afirmația selectată | |
Re-configurați/Editați afirmația selectată. |
- Mai jos sunt caracteristicile disponibile exclusiv în versiunea PRO a SOAP UI. Versiunea PRO ne ajută, de asemenea, să grupăm aserțiuni, astfel încât să putem adăuga încă un strat de validare la aserțiunile create.
- Versiunea Pro permite, de asemenea Clonarea aserțiilor: Această opțiune le permite testatorilor să permită copierea unei aserțiuni la un alt pas de testare în același proiect sau într-un alt proiect.
- Dezactivare/Activare aserțiuni: Această opțiune permite dezactivarea sau activarea oricărei afirmații grupate sau negrupate. Dacă o aserțiune este dezactivată, aceasta este inactivă și când este executat un caz de testare, aserțiile dezactivate nu vor fi executate.
- Degruparea aserțiilor: orice aserțiuni grupate pot fi degrupate dacă testerii decid să facă acest lucru.
ȘI: Toate aserțiunile sunt evaluate ca aserțiune VALIDE, ceea ce va avea ca rezultat condiția de grup PASSED. SAU: Cel puțin una dintre aserțiunile din cadrul grupului trebuie să fie VALIDĂ pentru a afirma o condiție de grup PASSED.
Lista completă a metodelor disponibile în diferite tipuri de afirmații
Mecanismul de afirmare |
Description |
CONȚINUT DE PROPRIETATE | |
conţine | Caută existența șirului specificat. De asemenea, susține expresia regulată. |
Nu Conține | Caută inexistența șirului specificat. De asemenea, susține expresia regulată. |
XPath Match | Utilizează expresia XPath pentru a selecta nodul țintă și valorile acestuia. |
Potrivire XQuery | Utilizează o expresie Xquery pentru a selecta conținutul din proprietatea țintă. |
Conformitate, Stare, Standarde | |
HTTP Descărcați toate resursele | Validează documentul HTML după descărcare și este valabil pentru orice proprietate care conține HTML. |
Coduri de stare HTTP nevalide | Verifică dacă răspunsul HTML conține un cod de stare care nu se află în lista de coduri definite. |
Nu este defect SOAP | Verifică dacă ultimul mesaj primit nu este o eroare SOAP. Este foarte evident că este aplicabil numai pentru pașii de testare SOAP. |
Conformitate cu schema | Verifică dacă ultimul mesaj primit este compatibil cu definiția schemei standard WSDL sau WADL. Se ține bine pentru pașii de testare SOAP și REST. |
Defect SOAP | Verifică dacă ultimul mesaj primit este o eroare SOAP. Este inversul afirmațiilor de eroare „NU SOAP”. |
Răspuns SOAP | Verifică dacă ultimul răspuns primit este un răspuns SOAP valid și este valabil numai pentru pașii de solicitare a testului SOAP. |
Coduri de stare HTTP valide | Verifică dacă răspunsul HTML conține un cod de stare care se află în lista de coduri definite. Este inversul afirmației „Coduri de stare HTTP nevalide”. |
WS-Solicitare de adresare | Verifică dacă ultima solicitare primită conține anteturi WS-Addressing adecvate. |
WS-Răspuns la adresare | Verifică dacă ultimul răspuns primit conține anteturi WS-Addressing adecvate. |
WS-Stare de securitate | Validează dacă ultimul mesaj primit conține anteturi WS-Security valide și este valabil numai pentru solicitările SOAP. |
Scenariu | |
Afirmația scriptului | Permite utilizatorilor să execute un script personalizat pentru a efectua validări definite de utilizator. |
SLA | |
SLA de răspuns | Validează dacă timpul de răspuns al ultimului răspuns primit a fost în limita definită. |
JMS | |
Stare JMS | Verifică dacă cererea JMS a pasului de testare s-a executat cu succes și este valabilă pentru pașii de testare cu un punct final JMS. |
JMS Timeout | Verifică dacă răspunsul JMS la un pas de testare nu a durat mai mult decât durata specificată. |
Securitate | |
Expunerea la informații sensibile | Verifică dacă mesajul de răspuns nu expune informații sensibile despre sistemul țintă. Putem folosi această afirmație pentru pașii de testare REST, SOAP și HTTP. |
DESCARCĂ PROIECTUL SOAPUI CARE CONȚINE ASERȚIILE DE MAI SUS
Erori comune și depanare
Utilizați spațiul de nume corect. Spațiul de nume ar trebui să fie adresa URL la care se află serviciul web.
Dacă apare o eroare în timpul dezvoltării unei afirmații de scripting, utilizați „log.info” pentru a imprima conținutul variabilelor
Dacă nu aveți rezultatul dorit, verificați dacă o intrare validă este transmisă în cerere.
De exemplu, în convertorul valutar, dacă introduceți „intA” ca „x”, care nu este un întreg, rezultatul afișează un cod de eroare ca „SOAP-Client”, ceea ce înseamnă că problema este legată de parametrul care este transmis de la partea clientului.
Asigurați-vă că utilizați sintaxa corectă în timp ce utilizați aserția XPATH și XQuery. NU ar trebui să utilizați punct(.) în loc de două puncte (:) în timp ce utilizați afirmația de mai sus. Sintaxa este //namespace:Tagname și NU //namespace.tagname. Procedând astfel, s-ar putea să primiți un mesaj că „NU se potrivește în răspunsul curent”, chiar dacă numele etichetei este corect.