Behauptungen in SoapUISkripte, XQuery, XPath-Typen

โšก Intelligente Zusammenfassung

Behauptungen in SoapUI sind die Kontrollpunkte, die entscheiden, ob eine Webdienstantwort korrekt ist, und verwandeln eine Anfrage, die lediglich ausgefรผhrt wird, in einen Test, der anhand realer, รผberprรผfbarer Inhalte tatsรคchlich bestanden oder fehlgeschlagen ist.

  • ๐Ÿ”˜ Kategorien: Eigenschaften, Compliance/Status/Standards, Skript, SLA, JMS und Sicherheit.
  • โ˜‘๏ธ Enthรคlt: Prรผft, ob eine Zeichenkette in der Antwort vorhanden ist, mit Unterstรผtzung fรผr regulรคre Ausdrรผcke.
  • โœ… Enthรคlt nicht: Bestรคtigt, dass eine Zeichenkette fehlt; nรผtzlich fรผr Fehlertoken und nicht vorhandene Felder.
  • ๐Ÿงช XPath-รœbereinstimmung: Deklarieren Sie zuerst den Namespace, wรคhlen Sie dann einen Knoten aus und vergleichen Sie dessen Wert.
  • ๏ธ XQuery-รœbereinstimmung: Validiert sich wiederholende Knotensรคtze, fรผr die andernfalls Hunderte von XPath-Prรผfungen erforderlich wรคren.
  • ๐Ÿ“Š Skript: Groovy Assertions verarbeiten dynamische Reaktionen und die Logik zum Einrichten oder Aufrรคumen.
  • ๐Ÿ” Fehlerbehebung: Falscher Namensraum und die Verwendung eines Punktes anstelle eines Doppelpunkts sind die hรคufigsten Fehlerursachen.

Behauptungen in SoapUI

Was ist eine Behauptung?

Unter Behauptung versteht man den Akt der Bestรคtigung oder Aussage. Es kann auch als Kontrollpunkt oder Validierungspunkt interpretiert werden.

Sobald eine Anfrage an einen Webserver gesendet wird, wird eine Antwort empfangen. Wir mรผssen รผberprรผfen, ob die Antwort die erwarteten Daten enthรคlt. Zur รœberprรผfung der Antwort benรถtigen wir Assertions. Ohne Assertions beweist ein Testschritt lediglich, dass der Dienst geantwortet hat, nicht aber, dass die Antwort korrekt war. API-Test sollte mindestens einen mitfรผhren.

Arten von Behauptungen

Es gibt verschiedene Mรถglichkeiten, eine Antwort zu formulieren; wir werden uns jedoch auf die gebrรคuchlichste konzentrieren. SoapUI Assertionstypen bei der Validierung einer Antwort. Nachfolgend sind die Kategorien aufgefรผhrt, die in der Open-Source-Version verfรผgbar sind. SoapUI.

  1. Eigenschaftsinhalt
  2. Compliance-Statusstandard
  3. Skript
  4. SLA
  5. JMS
  6. Sicherheit

Der Dialog gruppiert alle Aussagen in diese Kategorien, wie der untenstehende Screenshot zeigt.

Die in der SoapUI Dialog โ€žAssertion hinzufรผgenโ€œ
Arten von Assertions in SoapUI

Neben den oben aufgefรผhrten Funktionen verfรผgt die Pro-Version auch รผber eine integrierte JDBC-Assertion, mit der wir รผberprรผfen kรถnnen, ob der Webdienst die Datenbank korrekt aktualisiert hat.

Versionshinweis: Strom SoapUI Die Dokumentation listet auch eine auf JDBC Kategorie (JDBC-Status und JDBC-Timeout) neben den oben genannten Kategorien und ein Nachrichteninhalt Assertions innerhalb von Property Content fรผr einen umfassenderen XML-Vergleich. Die hier als โ€žProโ€œ bezeichnete kommerzielle Edition wird nun verkauft als ReadyAPI von SmartBear, daher kรถnnen Menรผbezeichnungen in neueren Versionen anders aussehen, wรคhrend das Verhalten der Assertions gleich bleibt.

Enthรคlt Behauptung

Sucht nach der Existenz der angegebenen Zeichenfolge. Es unterstรผtzt auch regulรคre Ausdrรผcke.

Wir werden mit dem gleichen Beispiel aus dem vorherigen Tutorial mit WSDL-Anfrage fortfahren http://www.dneonline.com/calculator.asmxFalls Sie dieses Projekt noch nicht erstellt haben, arbeiten Sie es durch Erstellung eines Projekts, einer Testsuite und eines Testfalls zuerst.

Schritt 1: StandardmรครŸig gibt es keine Zusicherungen.

  1. Die Anzahl der Behauptungen wird auf der Registerkarte โ€žBehauptungenโ€œ angezeigt.
  2. Um eine neue Behauptung hinzuzufรผgen, klicken Sie auf die Schaltflรคche โ€žNeue Behauptung hinzufรผgenโ€œ.

SoapUI Die Registerkarte โ€žAssertionsโ€œ zeigt keine Assertions an, und die Schaltflรคche โ€žNeue Assertion hinzufรผgenโ€œ ist vorhanden.

Schritt 2: Nun

  1. Wรคhlen Sie die Behauptungskategorie aus.
  2. Wรคhlen Sie den Behauptungstyp aus.
  3. Klicken Sie auf "Hinzufรผgen".

Dialogfeld โ€žAssertion hinzufรผgenโ€œ mit ausgewรคhlter Assertion-Kategorie und ausgewรคhltem Assertion-Typ hinzufรผgen

Schritt 3: Wir prรผfen nun, ob die Zeichenkette โ€ž46โ€œ in der Antwort enthalten ist. Klicken Sie auf โ€žOKโ€œ.

Hinweis: Wir kรถnnen die GroรŸ-/Kleinschreibung auch ignorieren und einen regulรคren Ausdruck hinzufรผgen.

Enthรคlt einen Konfigurationsdialog fรผr Assertions mit dem eingegebenen Wert 46.

Schritt 4: Nach dem Hinzufรผgen wird sofort eine Assertion ausgefรผhrt, die anzeigt, ob GรœLTIG oder UNGรœLTIG ist.

Die Registerkarte โ€žAssertionsโ€œ meldet, dass die โ€žContainsโ€œ-Assertion als GรœLTIG gemeldet wird.

Schritt 5: Nehmen wir nun an, wir รคndern den Inhalt der 'Contains Assertion in' SoapUI' bis '47 und schau, was passiert.

Bearbeiten des Inhalts der โ€žContainsโ€œ-Assertion von 46 bis 47

Schritt 6: Die Assertion wird ausgefรผhrt und das Ergebnis an den Benutzer zurรผckgegeben. Da die Zeichenkette โ€ž47โ€œ in der Antwort nicht enthalten ist, ist die Assertion fehlgeschlagen.

Die Registerkarte โ€žAssertionsโ€œ meldet, dass die โ€žContainsโ€œ-Assertion fehlgeschlagen ist.

Enthรคlt keine Behauptung

Das Gegenstรผck funktioniert umgekehrt. Es sucht nach dem Nichtvorhandensein der angegebenen Zeichenkette. Es unterstรผtzt auch regulรคre Ausdrรผcke.

Schritt 1: Nachdem Sie nun auf die Schaltflรคche โ€žNeue Assertions hinzufรผgenโ€œ geklickt haben,

  1. Wรคhlen Sie die Behauptungskategorie aus.
  2. Wรคhlen Sie den Behauptungstyp aus โ€“ in diesem Fall โ€žNICHT enthรคltโ€œ.
  3. Klicken Sie auf "Hinzufรผgen".

Fรผgen Sie einen Assertionsdialog mit der Option "Nicht enthรคlt" hinzu.

Schritt 2: Wir prรผfen, ob die Zeichenkette โ€žintAโ€œ in der Antwort enthalten ist. Geben Sie die Zeichenkette โ€žFromCurrencyโ€œ ein und klicken Sie auf โ€žOKโ€œ.

Dialog โ€žNicht enthรคltโ€œ mit der eingegebenen Zeichenkette โ€žFromCurrencyโ€œ wird angezeigt.

Schritt 3: Sobald eine Assertion hinzugefรผgt wird, wird sie ausgefรผhrt und das Ergebnis angezeigt. Bisher haben wir zwei Assertions hinzugefรผgt; daher werden beide ausgefรผhrt und das Ergebnis angezeigt.

Die Registerkarte โ€žAssertionsโ€œ listet sowohl die Ergebnisse โ€žEnthรคltโ€œ als auch โ€žEnthรคlt nichtโ€œ auf.

Schritt 4: Nun รคndern wir den Inhalt der โ€žNicht enthaltenโ€œ-Assertion und beobachten das Ergebnis. Wir prรผfen, ob die Zeichenkette โ€žAddResultโ€œ nicht vorhanden ist.

Dialog zur Assertion "Nicht enthalten", der auf das Token "AddResult" prรผft.

Schritt 5: Die Zeichenkette 'AddResult' ist tatsรคchlich in der Antwort vorhanden, daher schlรคgt die 'NOT Contains'-Assertion wie unten gezeigt fehl.

Die โ€žNicht enthaltenโ€œ-Assertion schlรคgt fehl, weil โ€žAddResultโ€œ vorhanden ist.

XPath-Match-Assertion

Da der Vergleich von Zeichenketten zu ungenau ist, zielt die nรคchste Assertion stattdessen auf einen einzelnen Knoten ab. Mithilfe eines XPath-Ausdrucks werden der Zielknoten und seine Werte ausgewรคhlt. XPath, ist eine XML-Abfragesprache zum Auswรคhlen von Knoten aus einem XML-Dokument.

Schritt 1: Nachdem Sie nun auf die Schaltflรคche โ€žNeue Assertions hinzufรผgenโ€œ geklickt haben,

  1. Wรคhlen Sie die Behauptungskategorie aus.
  2. Wรคhlen Sie den Assertionstyp โ€“ in diesem Fall โ€žXPath Matchโ€œ.
  3. Klicken Sie auf "Hinzufรผgen".

Dialogfeld โ€žAssertion hinzufรผgenโ€œ mit ausgewรคhltem XPath-Abgleich hinzufรผgen

Schritt 2: XPath hinzufรผgen. Das Fenster wird geรถffnet.

Vor dem Hinzufรผgen eines SoapUI Fรผr XPath mรผssen wir den Namensraum deklarieren. Ein XML-Namensraum ist eine Sammlung von Namen, die durch eine URI-Referenz (Uniform Resource Identifier) โ€‹โ€‹identifiziert werden und in XML-Dokumenten als Element- und Attributnamen verwendet werden. Dasselbe gilt fรผr โ€ฆ SoapUI XPath-Assertion.

Zum Deklarieren eines XML-Namensraums mรผssen wir nur auf die Schaltflรคche โ€žDeklarierenโ€œ klicken, was die Arbeit fรผr uns erledigt; alternativ kรถnnen wir den Namensraum auch manuell deklarieren.

Nach der Deklaration des Namespace mรผssen wir den XPath mithilfe des erstellten Namespace referenzieren.

Nach dem Klicken auf die Schaltflรคche โ€žDeklarierenโ€œ werden zwei Namensrรคume angezeigt, da wir zwei URIs haben. Einer davon ist das Schema. URL und die andere entspricht dem eigentlichen Webdienst. URLWir mรผssen beim Verweisen auf XPath den tatsรคchlichen Namespace des Webdienstes und NICHT den Schema-Namespace verwenden. Die deklarierten Zeilen erscheinen wie unten dargestellt oben im XPath-Feld.

Deklarierte SOAP- und NS1-Namensrรคume innerhalb des XPath-Assertion-Fensters

Deklarieren Sie den Namensraum Soap='http://schemas.xmlsoap.org/soap/envelope/';

Namensraum deklarieren ns1='http://tempuri.org/';

XPath-Assertion-Fenster unmittelbar nach dem Klicken auf Deklarieren

Schritt 3: Jetzt mรผssen wir den XPath des XML-Knotens eingeben, den wir validieren mรถchten.

//ns1:AddResult Gibt uns den Wert des dazwischen eingeschlossenen Knotens & und ns1 entspricht dem deklarierten Namespace, der auf โ€žhttp://tempuri.org/โ€œ verweist.

Nachdem wir das XML eingegeben haben, mรผssen wir auf โ€žAus aktueller Antwort auswรคhlenโ€œ klicken, damit der Wert aus der aktuellen Antwort zum kรผnftigen Vergleich รผbernommen wird.

Der XPath-Ausdruck wurde mit โ€žAus der aktuellen Markierung auswรคhlenโ€œ eingegeben.

Schritt 4: Bis jetzt

  1. Nachdem wir die Namespaces deklariert haben, haben wir den XPath des XML-Knotens eingegeben, den wir validieren mรผssen.
  2. Wir mรผssen auf โ€žAus aktuellem Wert auswรคhlenโ€œ klicken, um den aktuellen Wert als erwarteten Wert festzulegen.
  3. Dem Benutzer wird der aktuelle Wert angezeigt, den wir bei Bedarf รคndern kรถnnen.
  4. Klicken Sie auf โ€žSpeichernโ€œ.

XPath-รœbereinstimmungskonfiguration mit Anzeige des erwarteten Werts und der Schaltflรคche โ€žSpeichernโ€œ

Schritt 5: Die hinzugefรผgte Assertion in SoapUI wird wie unten dargestellt angezeigt.

Registerkarte โ€žAssertionsโ€œ mit der hinzugefรผgten XPath-Match-Assertion.

Skript-Assertions

Diese Behauptungstechnik ist die am weitesten verbreitete Technik, da es รคuรŸerst schwierig ist, Hunderte von Behauptungen zu verwalten und aufrechtzuerhalten.

SoapUI verwendet entweder Groovy Scripting oder JavaSkript fรผr Skript-Assertions. Die Skripttechnik wird fรผr die Entwicklung verwendet.ping Ein Framework zum Testen von SOAP. Skriptbasierte Assertions werden unter folgenden Umstรคnden verwendet.

  • Mithilfe von Skripten kรถnnen Benutzer vor und nach der Ausfรผhrung eines Testfalls Operationen durchfรผhren, indem sie die Methoden `setup` bzw. `teardown` verwenden. `setup` ist eine Prozedur, die vor der Ausfรผhrung einer bestimmten Methode ausgefรผhrt wird (z. B. Objekterstellung und -initialisierung), wรคhrend `teardown` eine Prozedur ist, die nach der Ausfรผhrung der Methode ausgefรผhrt wird (z. B. Objektlรถschung und Aufrรคumarbeiten). Diese Funktion ist bei anderen Assertionstypen nicht verfรผgbar und kann nur durch Programmierung realisiert werden.
  • Es ermรถglicht Benutzern, ein Projekt zu รถffnen/schlieรŸen, um projektbezogene Einstellungen zu initialisieren oder zu bereinigen, und auch, um mit Umgebungsvariablen zu arbeiten, was beim Skripten sehr hilfreich ist.
  • Es hilft uns bei der Durchsetzung eines dynamischen Antwortinhalts.
  • Skriptbasierte Assertions werden verwendet, um benutzerdefinierte Assertions zu erstellen, die NICHT vordefiniert sind von SoapUI.

Zum Demonstrieren einer Skript-Assertion in SoapUIWir werden die Taschenrechner-WSDL und den Testfall โ€žAddโ€œ, den wir zuvor erstellt hatten, verwenden.

Schritt 1: Die Schritte zum Hinzufรผgen eines Groovy-Skripts sind dieselben wie bei anderen Assertions, mit dem Unterschied, dass es sich nicht um eine vordefinierte, sondern um eine benutzerdefinierte Assertion handelt, die mehr Flexibilitรคt als die integrierten Assertions bietet.

Wรคhlen Sie den Testschritt aus, zu dem die Behauptung hinzugefรผgt werden soll.

Im Testschritt ausgewรคhlt SoapUI Navigator vor dem Hinzufรผgen einer Assertion

Klicken Sie wie unten gezeigt auf die Schaltflรคche โ€žBehauptung hinzufรผgenโ€œ.

Schaltflรคche โ€žAssertion hinzufรผgenโ€œ zur Symbolleiste fรผr Testschritt-Assertions hinzufรผgen

Schritt 2: Wรคhlen Sie nun die Kategorie โ€žAssertionโ€œ aus.

  1. In diesem Fall handelt es sich um Script.
  2. Auswรคhlen SoapUI Script Assertion und es gibt keine zugehรถrigen Untertypen.
  3. Klicken Sie auf โ€žHinzufรผgenโ€œ.

Dialogfeld โ€žAssertion hinzufรผgenโ€œ mit der ausgewรคhlten Kategorie โ€žSkriptโ€œ hinzufรผgen

Schritt 3: Es รถffnet sich der Skriptdialog, in dem der Benutzer ein benutzerdefiniertes Skript schreiben kann, um die Antwort-XML zu validieren.

leer SoapUI Dialog zum Editor fรผr Skriptzusicherungen

Schritt 4: Nun schreiben wir ein Groovy-Skript zur Validierung der Konversionsrate. Das Skript mit den eingebetteten Kommentaren ist unten angehรคngt. Kenntnisse in diesem Bereich werden empfohlen. Java Skript oder Groovy Skript, bevor Sie versuchen, Ihr eigenes Skript zu schreiben.

//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. Klicken Sie auf die Schaltflรคche โ€žAusfรผhrenโ€œ, um die Ausfรผhrung auszulรถsen.
  2. Die Ausgabe des Skripts wird im Ausgabebereich angezeigt. Es wurden sowohl der Conversion-Wert als auch das Endergebnis (Bestanden oder Nicht bestanden) gedruckt.
  3. Es wird die Information angezeigt, dass die Skript-Assertion erfolgreich war. Klicken Sie auf โ€žOKโ€œ.

Hinweis: Das endgรผltige Informations-Popup wird immer mit der Meldung โ€žSkript-Assertion bestandenโ€œ angezeigt, solange das Skript syntaktisch korrekt ist. Es hat keinen Zusammenhang mit Ihrer Aussage im Skript.

Das Ausgabefenster der Skript-Assertion gibt den Ergebniswert aus und meldet โ€žPassโ€œ.

klicken Sie auf OK

Schritt 5: Auf der Registerkarte โ€žAssertionsโ€œ werden nun alle Assertions angezeigt, die wir fรผr diese Testsuite hinzugefรผgt haben, zusammen mit dem Status jeder einzelnen Assertion.

Die Registerkarte โ€žAssertionsโ€œ listet alle Assertions auf, die der Testsuite hinzugefรผgt wurden.

Schritt 6: Jetzt

  1. Wรคhlen Sie die Testsuite aus der Navigatorstruktur aus
  2. Klicken Sie auf die Schaltflรคche โ€žAusfรผhrenโ€œ.
  3. Die Ergebnisse werden fรผr die gesamte Testsuite angezeigt.

Ergebnisse des Testsuite-Laufs nach Ausfรผhrung aller Assertions

XQuery-รœbereinstimmungs-Assertion

Es verwendet einen XQuery-Ausdruck, um Inhalte aus der Zieleigenschaft auszuwรคhlen. Wir benรถtigen eine deutlich grรถรŸere Antwort-XML, um die XQuery-Assertion besser zu verstehen. SoapUIImportieren wir nun eine weitere WSDL-Datei, wie unten gezeigt: http://www.webservicex.net/medicareSupplier.asmx?WSDL

Hinweis: Die in dieser Anleitung verwendeten รถffentlichen Demo-Endpunkte von webservicex.net sind nicht mehr zuverlรคssig erreichbar. Daher dienen die untenstehenden Screenshots von Anfrage und Antwort weiterhin als Referenzbeispiel. Jede WSDL-Datei, die eine Menge sich wiederholender Knoten zurรผckgibt, fรผhrt die XQuery-Assertion auf genau dieselbe Weise aus.

Schritt 1: Klicken Sie mit der rechten Maustaste auf das bestehende Projekt und wรคhlen Sie โ€žWSDL hinzufรผgenโ€œ.

Rechtsklickmenรผ auf dem SoapUI Projekt, das das Hinzufรผgen von WSDL zeigt

Schritt 2: Der Dialog โ€žWSDL hinzufรผgenโ€œ wird geรถffnet. Belassen Sie die anderen Optionen auf den Standardeinstellungen und klicken Sie auf โ€žOKโ€œ.

WSDL-Dialog mit den Standardimportoptionen hinzufรผgen

Schritt 3: Alle Arbeitsschritte sind wie folgt aufgelistet.

Die im Navigationsbaum aufgefรผhrten WSDL-Operationen der Medicare-Lieferanten

Schritt 4: Nun fรผgen wir ein Testfall innerhalb derselben Testsuite, fรผr die wir erstellt hatten Tests der Wรคhrungsumrechner.

Neue Testfalloption in der bestehenden Testsuite

Schritt 5: Geben Sie den Namen des Testfalls ein und klicken Sie auf die Schaltflรคche โ€žOKโ€œ.

Geben Sie den Namen des Testfalls im Dialogfeld โ€žNeuer Testfallโ€œ ein.

Schritt 6: Der Testfall wird wie unten dargestellt erstellt.

Neu erstellter Testfall im SoapUI Navigatorbaum

Schritt 7: Fรผgen Sie einen neuen Testschritt vom Typ โ€žSOAP-Testanforderungโ€œ hinzu, wie unten dargestellt.

Menรผ "Schritt hinzufรผgen" mit der Option "SOAP-Testanforderung" ausgewรคhlt

Schritt 8: Geben Sie den Namen des Testschritts ein. Nehmen wir an, es handelt sich um โ€žLieferant_nach_Stadtโ€œ, was aussagekrรคftiger wรคre. Klicken Sie auf โ€žOKโ€œ.

Benennung des neuen Testschritts Supplier_by_City

Schritt 9: Wรคhlen Sie die Operation, die wir validieren mรถchten. In diesem Fall ist es โ€žMedicareSupplierSoap -> GetSupplierByCityโ€œ. Klicken Sie auf โ€žOKโ€œ.

Auswahl der Operation โ€žGetSupplierByCityโ€œ fรผr den Testschritt

Schritt 10: Geben Sie den Namen des Testfalls ein und klicken Sie auf โ€žOKโ€œ.

Bestรคtigung des Namens der SOAP-Testanfrage

Schritt 11: Die XML-Anforderungsstruktur wรผrde wie unten dargestellt angezeigt werden.

Generierter XML-Anfrageablauf fรผr GetSupplierByCity

Schritt 12: Nun suchen wir alle Lieferanteninformationen fรผr die Stadt โ€žNew Yorkโ€œ.

Fรผgen Sie dazu Ihrem Code die folgenden Zeilen hinzu.

<GetSupplierByCity xmlns="http://www.webservicex.net/">

<City>New York</City>

</GetSupplierByCity>

WSDL im folgenden URL โ€“ http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity

Die Anfrage-XML-Datei wurde bearbeitet, wobei New York als Stadtwert angegeben wurde.

Schritt 13: Nach Ausfรผhrung des Tests erhalten wir die folgende Antwort

Die Antwort von GetSupplierByCity enthรคlt wiederholte Lieferanteneintrรคge.

Schritt 14: Angenommen, wir mรผssen alle Lieferantennummern validieren. Da wir Hunderte von XPath-Assertions benรถtigen, kรถnnen wir diese nicht verwenden. Daher ist die Verwendung von XQuery in diesem Fall unumgรคnglich.

XQuery Assertion hilft uns, eine Gruppe von XML-Antworten zu validieren, die sich wiederholender Natur sind.

Wiederholende SupplierData-Knoten, รผber die XQuery iteriert.

Schritt 15: Klicken Sie nun auf โ€žAssertion hinzufรผgenโ€œ.

  1. Wรคhlen Sie in diesem Fall die โ€žAssertionskategorieโ€œ โ€“ Eigenschaftsinhalt.
  2. Wรคhlen Sie den Assertionstyp als โ€žXQuery Assertionโ€œ aus.
  3. Klicken Sie auf โ€žHinzufรผgenโ€œ.

XQuery-Assertion in der Kategorie โ€žEigenschaftsinhaltโ€œ ausgewรคhlt

Schritt 16: ร„hnlich wie bei der XPath-Assertion mรผssen wir den Namespace deklarieren.

  1. Klicken Sie auf die Schaltflรคche โ€žDeklarierenโ€œ, um dies automatisch zu erlauben. SoapUI Um den Namespace zu deklarieren, wird nach dem Klicken auf die Schaltflรคche โ€žDeklarierenโ€œ ein Popup mit der Meldung โ€žNamespace stattdessen aus dem Schema deklarierenโ€œ angezeigt. Klicken Sie auf โ€žJaโ€œ, um fortzufahren (siehe unten).
  2. Um die gesamte Lieferantennummer abzurufen, mรผssen wir eine XPath-Abfrage schreiben und diese innerhalb von <SupplierNumber> und platzieren Stichworte.
  3. Klicken Sie auf โ€žAus aktueller Antwort auswรคhlenโ€œ, um die Ausfรผhrung anhand der aktuellen Antwort durchzufรผhren.
  4. Nach dem Klicken auf โ€žAus den aktuellen auswรคhlenโ€œ werden alle Lieferantennummern aufgelistet.
  5. Klicken Sie auf โ€žSpeichernโ€œ.

Namespace aus dem Schema-Bestรคtigungs-Popup deklarieren

Hinweis: Nach dem Klicken auf die Schaltflรคche โ€žDeklarierenโ€œ kรถnnen unterschiedliche Ergebnisse auftreten. URLBei der Deklaration eines Namespace ist jedoch der Namespace des tatsรคchlichen Webdienstes fรผr die Codierung maรŸgeblich.

Der fertige XQuery-Ausdruck mit seinen Namespace-Deklarationen sieht folgendermaรŸen aus.

// 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-Ausdrucksfenster, das alle Lieferantennummern auflistet

Schritt 17: Die XQuery-Assertion wird ausgefรผhrt und das Endergebnis im โ€žAssertionโ€œ-Panel angezeigt (siehe unten). Wir haben nun erfolgreich eine XQuery-Assertion hinzugefรผgt, mit der wir alle Lieferantennummerninformationen validiert haben. Diese werden bei jeder Anfrage an den Webserver mit den tatsรคchlichen Werten verglichen.

Hinweis: Die tatsรคchlichen Werte werden nicht angezeigt. Wenn alle tatsรคchlichen Werte mit den erwarteten Werten รผbereinstimmen, wird โ€žVALIDโ€œ angezeigt, andernfalls โ€žFailedโ€œ.

Das Assertions-Panel zeigt das Ergebnis der XQuery-Assertion an.

Wann sollte die integrierte Behauptung verwendet werden?

Nachdem sowohl die Point-and-Click- als auch die skriptgesteuerten Optionen behandelt wurden, stellt sich in der Praxis die Frage, welche man wรคhlen sollte.

  • Wenn eine Antwort so kurz ist, dass sie mithilfe einer dieser integrierten Behauptungen validiert werden kann.
  • Wir kรถnnen Inbuilt Assertion auch verwenden, wenn die vom Webserver gesendete Antwort immer statischer Natur ist. Wenn es dynamisch ist, kรถnnen wir es nicht mithilfe integrierter Behauptungen behaupten.
  • Wenn die Verwendung integrierter Zusicherungen wie Timeout-Zusicherungen und Sicherheitszusicherungen unumgรคnglich wird.
  • Eingebaute Behauptungen eignen sich ziemlich gut fรผr den einmaligen Gebrauch, bei dem Tests nicht wiederholt werden mรผssen.

Behauptungsoptionen

Die erstellten Behauptungen kรถnnen am besten mit Hilfe des unten hervorgehobenen Kontrollfelds gesteuert werden.

Assertions-Toolbox-Systemsteuerung in SoapUI

Die erstellten Behauptungen ermรถglichen es Testern, folgende Dinge aus der Behauptungs-Toolbox zu konfigurieren.

Option Beschreibung
Symbol zum Verschieben der Behauptung nach oben Die ausgewรคhlte Behauptung rรผckt in der Reihenfolge nach oben.
Symbol zum Verschieben der Behauptung nach unten Die ausgewรคhlte Behauptung wird in der Reihenfolge nach unten verschoben.
Assertion-Symbol entfernen Entfernt die ausgewรคhlte Behauptung
Assertionssymbol konfigurieren oder bearbeiten Konfigurieren/bearbeiten Sie die ausgewรคhlte Behauptung neu.

Nachfolgend sind die Funktionen aufgefรผhrt, die exklusiv in der Pro-Version verfรผgbar sind. SoapUI, wird jetzt versendet als ReadyAPIDie Pro-Version hilft uns auรŸerdem dabei, Assertions zu gruppieren, sodass wir den erstellten Assertions eine weitere Validierungsebene hinzufรผgen kรถnnen.

  • UND: Alle Assertions werden als gรผltige Assertions ausgewertet, was zur Bedingung โ€žBestandenโ€œ der Gruppe fรผhrt.
  • ODER: Mindestens eine der Aussagen innerhalb der Gruppe muss gรผltig sein, damit die Gruppe als bestanden gilt.
  • Pro-Version erlaubt auch Klonen von BehauptungenDiese Option ermรถglicht es Testern, das Kopieren einer Assertion in einen anderen Testschritt im selben oder in einem anderen Projekt zu erlauben.
  • Assertions deaktivieren/aktivieren: Mit dieser Option kรถnnen gruppierte und ungruppierte Assertions deaktiviert oder aktiviert werden. Deaktivierte Assertions werden ausgegraut dargestellt und bei der Ausfรผhrung eines Testfalls nicht berรผcksichtigt.
  • Assertions gruppieren: Gruppierte Assertions kรถnnen aufgehoben werden, wenn die Tester dies wรผnschen.

Vollstรคndige Liste der Methoden, die in verschiedenen Behauptungstypen verfรผgbar sind

Die folgende Tabelle enthรคlt alle oben besprochenen Aussagen, gruppiert nach der Kategorie, unter der sie im Dialogfeld โ€žAussage hinzufรผgenโ€œ erscheinen.

Durchsetzungsmechanismus Beschreibung
EIGENTUMSINHALT
Enthรคlt Sucht nach der Existenz der angegebenen Zeichenfolge. Es unterstรผtzt auch regulรคre Ausdrรผcke.
Nicht enthรคlt Sucht nach der Nichtexistenz der angegebenen Zeichenfolge. Es unterstรผtzt auch regulรคre Ausdrรผcke.
XPath-Match Verwendet den XPath-Ausdruck, um den Zielknoten und seine Werte auszuwรคhlen.
XQuery-Match Verwendet einen XQuery-Ausdruck, um Inhalte aus der Zieleigenschaft auszuwรคhlen.
Konformitรคt, Status, Standards
HTTP Alle Ressourcen herunterladen Validiert das HTML-Dokument nach dem Herunterladen und behรคlt alle Eigenschaften bei, die HTML enthalten.
Ungรผltiger HTTP-Status Codes รœberprรผft, ob die HTML-Antwort einen Statuscode enthรคlt, der nicht in der Liste der definierten Codes enthalten ist.
Kein SOAP-Fehler รœberprรผft, ob die zuletzt empfangene Nachricht kein SOAP-Fehler ist. Es ist sehr offensichtlich, dass es nur fรผr SOAP-Testschritte anwendbar ist.
Schemakonformitรคt รœberprรผft, ob die zuletzt empfangene Nachricht mit der WSDL- oder WADL-Standardschemadefinition kompatibel ist. Gilt fรผr SOAP- und REST-Testschritte.
SOAP-Fehler รœberprรผft, ob die zuletzt empfangene Nachricht ein SOAP-Fehler ist. Es ist das Gegenteil von โ€žNOT SOAPโ€œ-Fehlerbehauptungen.
SOAP-Antwort รœberprรผft, ob die zuletzt empfangene Antwort eine gรผltige SOAP-Antwort ist und gilt nur fรผr SOAP-Testanforderungsschritte.
Gรผltiger HTTP-Status Codes Prรผft, ob die HTML-Antwort einen Statuscode enthรคlt, der in der Liste der definierten Codes enthalten ist. Es ist das Gegenteil von โ€žUngรผltiger HTTP-Statusโ€œ. Codes' Behauptung.
WS-Adressierungsanfrage รœberprรผft, ob die zuletzt empfangene Anfrage geeignete WS-Addressing-Header enthรคlt.
WS-Adressierungsantwort รœberprรผft, ob die zuletzt empfangene Antwort geeignete WS-Addressing-Header enthรคlt.
WS-Sicherheitsstatus รœberprรผft, ob die zuletzt empfangene Nachricht gรผltige WS-Security-Header enthรคlt und gilt nur fรผr SOAP-Anfragen.
Skript
Skript-Behauptung Ermรถglicht Benutzern die Ausfรผhrung eines benutzerdefinierten Skripts zur Durchfรผhrung benutzerdefinierter Validierungen.
SLA
Reaktions-SLA รœberprรผft, ob die Antwortzeit der zuletzt empfangenen Antwort innerhalb des definierten Grenzwerts lag.
JMS
JMS-Status รœberprรผft, ob die JMS-Anfrage des Testschritts erfolgreich ausgefรผhrt wurde und gilt fรผr Testschritte mit einem JMS-Endpunkt.
JMS-Zeitรผberschreitung รœberprรผft, ob die JMS-Antwort eines Testschritts nicht lรคnger als die angegebene Dauer gedauert hat.
Sicherheit
Offenlegung sensibler Informationen รœberprรผft, ob die Antwortnachricht keine vertraulichen Informationen รผber das Zielsystem offenlegt. Wir kรถnnen diese Behauptung fรผr REST-, SOAP- und HTTP-Testschritte verwenden.

Laden Sie das SOAPUI-Projekt herunter, das die oben genannten Behauptungen enthรคlt

Hรคufige Fehler und Fehlerbehebung

Die meisten Assertionsfehler tracEs handelt sich um eine kleine Reihe von Fehlern; รผberprรผfen Sie diese daher, bevor Sie einen Ausdruck neu schreiben.

  • Verwenden Sie den korrekten Namespace. Der Namespace sollte lauten: URL wo sich der Webdienst befindet.
  • Wenn wรคhrend der Entwicklung ein Fehler auftrittping Bei einer Skript-Assertion verwenden Sie 'log.info', um den Inhalt der Variablen auszugeben.
  • Wenn Sie nicht die gewรผnschte Ausgabe erhalten, รผberprรผfen Sie, ob in der Anforderung eine gรผltige Eingabe รผbergeben wird.

Wenn Sie beispielsweise im Wรคhrungsrechner den Wert 'intA' als 'x' eingeben, was keine ganze Zahl ist, wird der Fehlercode 'SOAP-Client' ausgegeben. Dies bedeutet, dass das Problem mit dem vom Client รผbergebenen Parameter zusammenhรคngt. Die Anfrage mit dem ungรผltigen Wert wird zuerst angezeigt.

SoapUI Anfrage, die einen ungรผltigen Nicht-Ganzzahlwert fรผr intA รผbergibt.

Die Antwort liefert den Fehlercode anstelle eines Ergebnisses, wie unten dargestellt.

Der SOAP-Client-Fehlercode wurde zurรผckgegeben. SoapUI Antwortredakteur

Achten Sie darauf, die korrekte Syntax fรผr XPath- und XQuery-Assertions zu verwenden. Verwenden Sie NICHT den Punkt (.) anstelle des Doppelpunkts (:). Die Syntax lautet //namespace:Tagname und NICHT //namespace.tagname. Andernfalls erhalten Sie mรถglicherweise die Meldung โ€žKeine รœbereinstimmung in der aktuellen Antwortโ€œ, obwohl der Tag-Name korrekt ist.

Fehler โ€žKeine รœbereinstimmung in der aktuellen Antwortโ€œ aufgrund falscher XPath-Syntax.

Hรคufig gestellte Fragen

Beliebige Zahl. SoapUI wendet jede Assertion, die einem Sampler-Testschritt zugeordnet ist, nach dessen Ausfรผhrung an, und der Schritt wird in der Testfallansicht als fehlgeschlagen markiert, wenn auch nur eine dieser Assertions fehlschlรคgt.

Es vergleicht eine XML-Nachricht Knoten fรผr Knoten mit einem erwarteten Dokument, sodass ausgewรคhlte Felder ignoriert oder nur lose zugeordnet werden kรถnnen, anstatt die gesamte Nutzlast als eine einzige einfache Zeichenkette zu behandeln.

Open-Source SoapUI Beinhaltet Inhalte, Compliance, Skripte, SLAs, JMS und Sicherheit. ReadyAPI fรผgt Gruppe hinzuping, Klonen, JDBC-Prรผfungen und Aktivieren oder Deaktivieren der Steuerung.

KI-Modelle lesen eine Beispielantwort und schlagen XPath- oder XQuery-Ausdrรผcke vor, geben Grenzwerte an und kennzeichnen Felder, die sich bei jedem Durchlauf รคndern โ€“ wodurch der Aufwand fรผr das manuelle Schreiben von Namensrรคumen und Ausdrรผcken erheblich reduziert wird.

Ja. Copilot Autovervollstรคndigungen GroovyHilfsprogramme und XmlHolder-Boilerplate-Code. Fรผhren Sie das Skript immer zuerst aus, da ein syntaktisch korrektes Skript unabhรคngig vom Vergleich die Meldung โ€žSkript-Assertion bestandenโ€œ ausgibt.

Ja. Assertionsinhaltsfelder unterstรผtzen die Eigenschaftserweiterung, sodass der erwartete Wert aus einer Projekt- oder Testfall-Eigenschaft anstatt aus einem Literalwert abgerufen werden kann, wodurch eine Assertion in verschiedenen Umgebungen wiederverwendbar bleibt.

Eine fehlgeschlagene Assertion kennzeichnet ihren Testschritt in der Testfallansicht als fehlgeschlagen und schreibt einen entsprechenden FEHLGESCHLAGEN-Eintrag mit den Fehlerdetails in das Testausfรผhrungsprotokoll am unteren Rand des Fensters.

Enthรคlt, Enthรคlt nicht, XPath-รœbereinstimmung, XQuery-รœbereinstimmung, Antwort-SLA, Skript, gรผltige und ungรผltige HTTP-Statuscodes, Offenlegung sensibler Informationen und Schema-Konformitรคt mit einem WADL oder einem abgeleiteten Schema.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: