Afirmații în SoapUIScripturi, XQuery, tipuri XPath
⚡ Rezumat inteligent
Afirmații în SoapUI sunt punctele de control care decid dacă răspunsul unui serviciu web este corect, transformând o cerere care se execută doar într-un test care trece sau eșuează pe conținut real, verificabil.

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 cerere 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. Fără o aserțiune, un pas de testare dovedește doar că serviciul a răspuns, nu că a răspuns corect, motiv pentru care fiecare Testarea API-ului ar trebui să poarte cel puțin unul.
Tipuri de afirmații
Există diverse modalități de a afirma un răspuns; cu toate acestea, ne vom concentra asupra celor utilizate în mod obișnuit SoapUI tipuri de afirmații în timpul validării unui răspuns. Mai jos sunt categoriile disponibile în versiunea Open Source a SoapUI.
- Conținutul proprietății
- Standard de stare de conformitate
- Scenariu
- SLA
- JMS
- Securitate
Dialogul grupează fiecare afirmație în aceste categorii, așa cum se arată în captura de ecran de mai jos.

Pe lângă cele enumerate mai sus, versiunea Pro are și o aserțiune JDBC încorporată, prin care putem confirma dacă serviciul web a actualizat corect baza de date.
Notă privind versiunea: curent SoapUI documentația enumeră, de asemenea, o JDBC categorie (Stare JDBC și Expirare JDBC) alături de categoriile de mai sus și o Continutul mesajului afirmație în interiorul conținutului proprietății pentru o comparație XML mai bogată. Ediția comercială denumită aici „Pro” este acum vândută ca ReadyAPI de SmartBear, astfel încât etichetele meniurilor din versiunile mai noi se pot citi diferit, în timp ce comportamentul aserțiunilor rămâne același.
Conține Aserțiune
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.asmxDacă nu ați construit încă acel proiect, continuați crearea unui proiect, a unei suite de teste și a unui caz de testare mai întâi.
Pasul 1: În mod implicit, nu există aserțiuni.
- 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ăugare, aserțiunea este executată imediat și arată dacă este VALIDĂ sau INVALIDĂ.
Pasul 5: Acum să presupunem că modificăm conținutul lui „Conține aserțiunea” în SoapUIla „47” și vedem ce se întâmplă.
Pasul 6: Aserțiunea este executată, iar rezultatul este afișat utilizatorului. Deoarece nu avem șirul de caractere „47” în răspuns, aserțiunea a eșuat.
Nu Conține Aserțiune
Omologul său funcționează invers. Caută inexistența șirului specificat. De asemenea, acceptă expresii regulate.
Pasul 1: 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, „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 este adăugată o aserțiune, aceasta se execută și afișează rezultatul. Până acum am adăugat două aserțiuni, prin urmare ambele aserțiuni sunt executate și afișează rezultatul.
Pasul 4: Acum haideți să modificăm conținutul aserțiunii „Not Contains” și să vedem ce se întâmplă. Vom verifica dacă șirul de caractere „AddResult” nu există.
Pasul 5: Șirul „AddResult” este prezent în răspuns, prin urmare, aserțiunea „NOT Contains” va eșua, așa cum se arată mai jos.
Afirmația de potrivire XPath
Potrivirea șirurilor de caractere este directă, așa că următoarea aserțiune vizează un singur nod. Se folosește expresia XPath pentru a selecta nodul țintă și valorile sale. XPath, este un limbaj de interogare XML pentru selectarea nodurilor dintr-un document XML.
Pasul 1: 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ăugare XPath.
Înainte de a adăuga un SoapUI XPath, trebuie să declarăm spațiul de nume. 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 și în SoapUI Afirmație XPath.
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 un spațiu de nume.
După declararea spațiului de nume, trebuie să facem referire la XPath folosind spațiul de nume creat.
La clicul pe butonul „Declarare”, vor apărea două spații de nume, deoarece avem două URI-uri. Unul dintre ele este schema. URL iar celălalt corespunde serviciului web propriu-zis URLTrebuie să folosim spațiul de nume real în care se află serviciul web și NU spațiul de nume al schemei atunci când facem referire la XPath. Liniile declarate apar în partea de sus a casetei XPath, așa cum se arată mai jos.
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: Până 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.
SoapUI folosește fie Groovy Scripting sau JavaScenariu pentru aserțiuni de scriptare. Tehnica de scriptare este adoptată pentru dezvoltareping un cadru pentru testarea SOAP. Aserțiunile de scripting sunt utilizate în următoarele circumstanțe.
- Scriptarea permite utilizatorului să efectueze anumite operațiuni înainte și după executarea unui caz de testare folosind metodele de configurare și respectiv demontare. Configurarea este o procedură care se execută înainte de executarea unei anumite metode (exemplu - crearea și inițializarea obiectului), în timp ce demontarea este o procedură care se execută după executarea metodei (de exemplu: distrugerea obiectelor și curățarea). Această funcționalitate nu este disponibilă în alte tipuri de aserțiuni și poate fi realizată doar prin codare.
- Permite utilizatorilor să deschidă/închidă un proiect, pentru a inițializa sau curăța setările aferente proiectului și, de asemenea, să lucreze 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 scriptare sunt utilizate pentru crearea de aserțiuni definite de utilizator care NU sunt predefinite de SoapUI.
Pentru demonstrarea unei afirmații Script în SoapUI, vom folosi calculatorul WSDL, cazul de test „Add” pe care l-am creat anterior.
Pasul 1: Pașii pentru adăugarea unui script groovy sunt aceiași ca și pentru alte aserțiuni, cu excepția faptului că aserțiunea nu este una predefinită. În schimb, este o aserțiune 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 Afirmație.
- În acest caz este Script.
- Selectați SoapUI Aserțiune de script și nu există subtipuri asociate cu aceasta.
- Faceți clic pe „Adăugați”.
Pasul 3: Se deschide caseta de dialog Scripting, unde utilizatorul va putea scrie un script definit de utilizator pentru a valida fișierul XML al răspunsului.
Pasul 4: Acum haideți să scriem un script groovy pentru a valida rata de conversie. Scriptul este atașat mai jos cu comentariile încorporate. Se recomandă 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 Aserțiuni afișează toate aserțiunile pe care le-am adăugat pentru această suită de teste cu starea pentru 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.
Aserțiune de potrivire XQuery
Folosește o expresie XQuery pentru a selecta conținut din proprietatea țintă. Avem nevoie de un XML de răspuns mult mai mare pentru a înțelege mai bine aserțiunea XQuery din SoapUISă importăm un alt fișier WSDL, așa cum se arată mai jos: http://www.webservicex.net/medicareSupplier.asmx?WSDL
Notă: Punctele finale demo publice webservicex.net utilizate în această demonstrație nu mai sunt accesibile în mod fiabil, așa că capturile de ecran cu cererea și răspunsul de mai jos sunt păstrate ca exemplu de referință. Orice WSDL care returnează un set de noduri repetitive va exercita aserțiunea XQuery exact în același mod.
Pasul 1: Faceți clic dreapta pe proiectul existent și selectați „Adăugare WSDL”.
Pasul 2: Se deschide caseta de dialog Adăugare WSDL. Lăsați celelalte opțiuni implicite și faceți clic pe butonul „OK”.
Pasul 3: Toate operațiunile sunt listate așa cum se arată mai jos.
Pasul 4: Acum să adăugăm un 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ți un nou pas de testare de tip „Soap Test Request”, așa cum se arată mai jos.
Pasul 8: Introduceți numele etapei de testare. Să zicem – Furnizor_după_Oraș, 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: Schița XML a cererii 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 cele de mai jos URL – http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity
Pasul 13: La executarea testului, primim următorul răspuns
Pasul 14: Să presupunem că trebuie să validăm toate numerele furnizorilor. Nu putem folosi aserțiuni XPath deoarece avem nevoie de sute de aserțiuni XPath. 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 afirmația XPath, trebuie să declarăm spațiul de nume.
- Faceți clic pe butonul „Declarare” pentru a permite automat SoapUI pentru a declara spațiul de nume. La clic pe butonul de declarare, utilizatorului i se va afișa o fereastră „POP-up” cu mesajul „declarați spațiul de nume din schemă”. Faceți clic pe „Da” pentru a continua așa cum se arată mai jos.
- 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.
- La clic pe „Selectare din curent”, sunt listate toate numerele furnizorilor.
- Faceți clic pe „Salvați”.
Notă: După apăsarea butonului „Declarare”, este posibil să obțineți informații diferite URLca declarație de spațiu de nume, însă spațiul de nume al locației serviciului web real este cel care ar fi luat în considerare pentru codare.
Expresia XQuery finalizată, cu declarațiile sale de spațiu de nume, arată astfel.
// 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: Aserțiunea XQuery este executată și afișează rezultatul final în panoul „Aserțiune”, așa cum se arată mai jos. Acum am adăugat cu succes o aserțiune XQuery folosind care am validat toate informațiile despre numărul furnizorului. Aceleași informații vor fi comparate cu datele reale, de fiecare dată când solicitarea este trimisă către 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ă?
Având în vedere că atât opțiunile point-and-click, cât și cele scriptate sunt acoperite, întrebarea practică este pe care să o alegeți.
- 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 | Descriere |
| 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 funcțiile disponibile exclusiv în versiunea Pro a SoapUI, acum expediat ca ReadyAPIVersiunea Pro ne ajută și să grupăm aserțiunile, astfel încât să putem adăuga încă un nivel de validare aserțiunilor create.
- ȘI: Toate aserțiunile sunt evaluate ca aserțiuni VALIDE, ceea ce va duce la o condiție de grup PASSED (ADMISĂ).
- SAU: Cel puțin una dintre aserțiunile din cadrul grupului trebuie să fie VALIDĂ pentru a afirma o condiție PASSED pentru grup.
- Versiunea Pro permite, de asemenea Clonarea aserțiilorAceastă opțiune permite testerilor să permită copierea unei aserțiuni într-un alt pas de testare în același proiect sau într-unul diferit.
- Dezactivare/Activare aserțiuni: Această opțiune permite dezactivarea sau activarea oricărei aserțiuni grupate sau negrupate. Dacă o aserțiune este dezactivată, aceasta devine gri și, atunci când se execută un caz de testare, aserțiunile dezactivate nu vor fi executate.
- Degruparea aserțiunilor: Orice aserțiuni grupate pot fi degrupate dacă testerii decid să facă acest lucru.
Lista completă a metodelor disponibile în diferite tipuri de afirmații
Tabelul de mai jos colectează fiecare aserțiune discutată mai sus, grupată după categoria în care apare în caseta de dialog Adăugare aserțiune.
| Mecanismul de afirmare | Descriere |
| 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 | Folosește o expresie XQuery pentru a selecta conținut din proprietatea țintă. |
| Conformitate, Statut, Standarde | |
| HTTP Descărcați toate resursele | Validează documentul HTML după descărcare și este valabil pentru orice proprietate care conține HTML. |
| Stare HTTP nevalidă Codes | 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. |
| Stare HTTP validă Codes | Verifică dacă răspunsul HTML conține un cod de stare care se află în lista de coduri definite. Este inversul lui „Stare HTTP invalidă” CodeAfirmația lui s. |
| 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
Majoritatea eșecurilor de afirmație tracNe întoarcem la un mic set de greșeli, așa că verificați-le înainte de a rescrie o expresie.
- Folosește spațiul de nume corect. Spațiul de nume ar trebui să fie URL unde se află serviciul web.
- Dacă apare o eroare în timpul dezvoltăriiping o aserțiune de scripting, utilizați „log.info” pentru a afișa 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 număr întreg, ieșirea generează un cod de eroare de tip „SOAP-Client”, ceea ce înseamnă că problema este legată de parametrul transmis de partea clientului. Cererea care conține valoarea nevalidă este afișată prima.
Răspunsul returnează codul de eroare în loc de un rezultat, așa cum se arată mai jos.
Asigurați-vă că utilizați sintaxa corectă atunci când utilizați aserțiuni XPath și XQuery. NU ar trebui să utilizați punct(.) în loc de două puncte(:) atunci când utilizați aserțiunea de mai sus. Sintaxa este //namespace:Tagname și NOT //namespace.tagname. Procedând astfel, este posibil să primiți un mesaj care spune „NO match in current response” (NU există o potrivire în răspunsul curent), chiar dacă numele etichetei este corect.














































