Die Verwendung von SoapUI und Selenium zum Testen von Webdiensten
⚡ Intelligente Zusammenfassung
SoapUI und Selenium Eine Suite ermöglicht es, einen Webdienst und den Browser, der ihn nutzt, zu überprüfen. Groovy ist die Brücke, weil SoapUI läuft Groovy nativ und Groovy erreicht jeden Java Selenium Schiffe.
SoapUI ist die beliebteste Open-Source-Software Funktionsprüfung Werkzeug für API-Tests. Es bietet vollständige Testabdeckung und unterstützt alle gängigen Protokolle und Technologien.
Was ist SOAP?
SOAP ist ein einfaches, XML-basiertes Protokoll. Es ermöglicht Anwendungen den Informationsaustausch über HTTP. Es nutzt die Webdienste. Description Language (WSDL) für die Kommunikation und andere Anwendungen können mit dieser Sprache interagieren. Web-Services über diese WSDL-Schnittstelle.
SOAP vs REST Web Services in SoapUI
SoapUI Es begann als SOAP-Client und trägt diesen Namen noch immer, testet aber auch REST-Endpunkte. Der verwendete Stil bestimmt, wie der Test aufgebaut ist.
| Aspekt | SOAP | REST |
|---|---|---|
| Contract | Eine WSDL-Datei beschreibt jede Operation, daher SoapUI kann Anfragen automatisch generieren. | Üblicherweise eine OpenAPI- oder Swagger-Definition, oder keine formale Definition.tracüberhaupt nicht. |
| Nachrichtenformat | Nur die XML-Hülle. | Üblicherweise JSON, obwohl auch XML und andere Formate zulässig sind. |
| Transport | Meistens HTTP, aber SOAP ist transportunabhängig. | HTTP, mit der Methode und URL die Absicht tragen. |
| Behauptungen in SoapUI | XPath und XQuery werden mit dem Antwort-Envelope abgeglichen. | JSONPath- und Skript-Assertions werden mit der Nutzlast abgeglichen. |
| Typische Verwendung | Bankwesen, Telekommunikation und andere Branchentract-intensive Unternehmensintegrationen. | Öffentliche und mobile Dienste, bei denen die Nutzlast gering bleibt. |
Die folgende Vorgehensweise verwendet einen SOAP-Wetterdienst, aber dieselbe Runner-Klasse führt ohne Änderungen einen REST-Testfall aus. Java Code.
Was ist SOAPUI?
SOAPUI SOAPUI ist ein Open-Source-Tool für plattformübergreifendes Testen von Webdiensten. Die SOAPUI-Pro-Edition bietet zusätzliche Funktionen für Unternehmen, die kritische Webdienste betreiben. Webdienste spielen eine wichtige Rolle in Internetanwendungen.
⚠️ Hinweis zum Produktnamen: SmartBear wurde eingestellt SoapUI Pro als eigenständiges Produkt und wurde zusammen mit LoadUI Pro und ServiceV Pro in ReadyAPIDie kostenlose Version behält die SoapUI Der Name wird weiterhin aktiv veröffentlicht. Die folgenden Schritte funktionieren sowohl in bestehenden als auch in bestehenden Versionen. SoapUI Projekte öffnen in ReadyAPI.
Was ist Selenium?
Selenium Es handelt sich nicht um ein einzelnes Programm, sondern um eine Familie von Werkzeugen, mit denen ein Browser so gesteuert werden kann, wie es ein Mensch tun würde. Zwei Mitglieder sind hierbei von Bedeutung:
- Selenium — ein Testtool, das Browser auf vielen Plattformen automatisiert.
- Selenium WebTreiber — Es stellt direkte Aufrufe an die Browser her und nutzt dabei die jeweils native Unterstützung für Automatisierung.
Warum kombinieren SoapUI und Selenium in einem Test
Die Überprüfung des Dienstes und die Bildschirmprüfung sind üblicherweise zwei separate Vorgänge, die von zwei separaten Softwarepaketen bearbeitet werden. Daher tritt ein Fehler an der Schnittstelle zwischen beiden häufig in beiden Prüfungen auf. Durch die gemeinsame Ausführung wird diese Lücke geschlossen.
- Weisen Sie die Hin- und Rückreise nach. Eine im Browser übermittelte Buchung sollte in der Antwort des Dienstes erscheinen. Nur ein kombinierter Test kann beide Teile überprüfen.
- Schneller Statusaufbau. Das Anlegen eines Kunden über die API dauert eine Sekunde; das Erstellen von ein bis zwölf Formularfeldern dauert eine Minute und schlägt häufiger fehl.
- Einen Fehler lokalisieren. Wenn die Benutzeroberfläche den falschen Gesamtbetrag anzeigt, teilt Ihnen die API-Assertion im selben Durchlauf sofort mit, ob der Fehler beim Dienst oder auf der Seite liegt.
- Einen Datensatz wiederverwenden. Die Postleitzahl- und Stadtpaare im folgenden Beispiel dienen als Grundlage für den Serviceaufruf und könnten ebenso gut die Browser-Assertions speisen.
- Doppelte Abdeckung vermeiden. Validierungsregeln, die sich bereits auf der Serviceebene bewährt haben, benötigen keinen separaten Test mit einem langsamen Browser.
Der Kompromiss besteht in einem aufwändigeren Test: zwei Tools, zwei Abhängigkeitssätze und eine längere Laufzeit. Kombinierte Tests sollten nur für die wenigen Fälle verwendet werden, die die Grenze tatsächlich überschreiten; die übrigen sollten als reine Tests durchgeführt werden. API oder reine Browserprüfungen.
Selenium und SoapUI
Der einfachste und einfachste Weg zur Integration Selenium und SoapUI ist die Verwendung von Groovy, Die SoapUI Unterstützt umfassend.
Groovy ist eine objektorientierte Skriptsprache, die alle Java Bibliotheken, also jede Java Schlüsselwort und Funktion können in einem verwendet werden Groovy Das Skript wird direkt ausgeführt. Es läuft auf der JVM (Java Virtuelle Maschine), die dies ermöglicht Groovy treten Sie ein SoapUI und einem Java Selenium Test, um dieselben Klassen zu verwenden.
Voraussetzungen für die Nutzung Selenium und SoapUI
Installieren Sie Folgendes, bevor Sie mit dem Schreiben von Code beginnen:
⚠️ Versionshinweis: Groovy Version 5.0 ist die aktuelle stabile Version und erfordert JDK 11 oder höher. Installieren Sie daher zuerst das JDK und lassen Sie es installieren. Groovy Version folgen Sie dieser Anleitung. Selenium wird zu a hinzugefügt Java Projekt als Maven oder Gradle Abhängigkeit und nicht als heruntergeladener Ordner, und die SoapUI Die JAR-Datei muss sich im selben Klassenpfad wie Ihr Test befinden – genau an diesem Punkt scheitern die meisten ersten Versuche.
Ruf den SoapUI Testfall-Runner in Selenium
Der folgende Code ruft eine SoapUI Testfall. Er legt die Eigenschaften für eine Stadt und die zugehörige Postleitzahl fest und ruft bei der Ausführung die Werte für jede Stadt und Postleitzahl ab. Anschließend wird die Anzahl der Fehler für jedes nicht übereinstimmende Paar ausgegeben. Dieser Code wird ausgeführt in Selenium.
Hinweis: Hier wird `usePropertyFileFlag=true` anstelle einer statischen Eigenschaftendatei zum Speichern von Postleitzahl und Stadt verwendet. Postleitzahl und Stadt werden zur Laufzeit dynamisch von der Methode `setProjectProperties()` übergeben.
Anleitung zum Ausführen des Codes:
- Start up SoapUI.
- Starten Sie einen neuen Testfall.
- Hinzufügen eines neuen Groovy Schritt.
- Kopieren Sie den Beispielcode und fügen Sie ihn in den entsprechenden Schritt ein.
- Klicken Sie auf Spielen.
- Du kannst sehen Firefox Starten und Navigieren zu GoogleDanach können Sie die SoapUI Protokolleinträge.
- Der Code wird ausgeführt mit JUnit.
Code Beispiel
@when("<I use the weather service to get the weather information") public void i_use_the_weather_service_to_get_the_information() { Set<Entry<String, string>> set = zipAndCities.entrySet(); while (iterator,hasNext)) { Entry<String, String> entry = iterator.next(); String zipCode = entry.getkey(); String city = entry.getValue(); String[] prop = {"usePropertyFileFlag=true","zipCode=" +zipCode, "city=" +city}; try{ SoapUITestCaseRunner soapUITestCaseRunner = new SoapUITestCaseRunner(); soapUITestCaseRunner.setProjectFile("src/test/resources/WeatherSoapTest-soapui-project.xml"); soapUITestCaseRunner.setProjectProperties(prop); soapUITestCaseRunner.setTestSuite("TestSuite1"); soapUITestCaseRunner.setTestCase("TestCase1"); soapUITestCaseRunner.run(); } catch (Exception e) { System.err.println("checking" + zipCode + " failed!"); failureCount++; zipCodes.append(zipCode + " [" + city +"] "); e.printStackTrace(); }finally{ totalCount++; } } } }
⚠️ Code Hinweise: Dieser Codeausschnitt ist exakt wie veröffentlicht reproduziert und stellt ein Fragment, keine kompilierbare Klasse dar. Vor dem Kompilieren muss der erhaltene Iterator deklariert werden. set.iterator(), Korrekt while (iterator,hasNext)) zu while (iterator.hasNext()) und entry.getkey() zu entry.getKey(), schreiben Sie die Anmerkung groß als @WannEntfernen Sie das überflüssige Zeichen am Anfang des Schritttextes und verwenden Sie Schnur statt Schnur in der Set-Deklaration. Der Originaltext bleibt erhalten, damit das veröffentlichte Beispiel unverändert bleibt.
Die Konsolenansicht ermöglicht Ihnen einen schnellen Überblick über alle Testfallwird ausgeführt. Sie finden eine Liste der abgerufenen und übergebenen Postleitzahlen und Städte. SoapUI Testfall 1.
Ansehen SoapUI Logdatei
Protokolldateien zeichnen jede Aktion auf, die in einem Betriebssystem oder einer Softwareanwendung stattfindet. Um die Protokolldateien anzuzeigen, klicken Sie hier. SoapUI Um die Logdatei zu finden, gehen Sie in das Hauptverzeichnis. Dort finden Sie eine Datei mit dem Namen soapui.log.
In SoapUIDie Protokolldatei befindet sich im Ordner „bin“ innerhalb des Installationsverzeichnisses, beispielsweise C:\Program Files\SmartBear\soapUI-Pro-4.0.1\bin. Bei einer aktuellen Installation ist der Versionsordner anders. ReadyAPI Die Installation schreibt stattdessen in ihren eigenen Bin-Ordner.
Wenn Sie diese Protokolldatei öffnen, indem Sie darauf klicken, sieht sie ähnlich wie im Screenshot unten aus.
COHO Expo bei der SoapUI und Selenium Integration scheitert häufig
Fast alle Fehler an dieser Stelle sind auf ein Verkabelungsproblem und nicht auf einen Testfehler zurückzuführen. Diese sollten zuerst überprüft werden.
| Symptom | Wahrscheinliche Ursache | Was zu überprüfen |
|---|---|---|
| NoClassDefFoundError oder ClassNotFoundException bei SoapUITestCaseRunner | Das SoapUI Die JAR-Datei befindet sich nicht im Test-Classpath. | Fügen Sie SoapUI Abhängigkeit von der Build-Datei oder Verweis des Klassenpfads auf die JAR-Datei in der SoapUI lib-Ordner. Eine fehlende JAR-Datei wird als normale Datei angezeigt. Selenium Ausnahme in der Konsole. |
| Die Projektdatei konnte nicht gefunden werden. | setProjectFile() ermittelt einen relativen Pfad zum Arbeitsverzeichnis, was sich zwischen einer IDE und einem Build-Tool unterscheidet. | Führen Sie das Programm im Projektverzeichnis aus oder geben Sie einen absoluten Pfad an. |
| Testsuite oder Testfall nicht gefunden | Die Namen in setTestSuite() und setTestCase() müssen exakt mit dem Projekt übereinstimmen. | Kopieren Sie die Namen direkt aus dem SoapUI Projektbaum; die Groß- und Kleinschreibung wird beachtet. |
| Die Immobilie erreicht nie die Anfrage | setProjectProperties() wurde nach run() ausgeführt, oder die Anfrage verweist nicht auf die Eigenschaft. | Setzen Sie alle Eigenschaften vor run() und verwenden Sie die Syntax für Eigenschaftsplatzhalter innerhalb der Anfrage. |
| Der Browser startet nicht. | Der Treiber und der installierte Browser haben unterschiedliche Hauptversionen. | Lassen Selenium Der Manager kann den Treiber auflösen oder ihn an die Browserversion anpassen. |
| Eine Funktion funktioniert in der IDE, aber nicht im Runner. | Dieser Schritt setzt eine Funktion voraus, die nur in der Pro-Version verfügbar ist, wie beispielsweise eine Datenquelle. | Prüfen Sie die Lizenz oder erstellen Sie den Schritt mit Open-Source-Äquivalenten neu. |
Sobald der Runner ordnungsgemäß beendet wird und soapui.log die erwarteten Einträge anzeigt, funktioniert die Integration und kann in ein umfassenderes System eingebunden werden. Automatisierungstests Suite.



