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.

  • 🔘 Zwei Werkzeuge, zwei Ebenen: SoapUI testet den SOAP- oder REST-Endpunkt, während Selenium WebDriver steuert den Browser, der ihn aufruft.
  • ☑️ Groovy ist der Klebstoff: SoapUI unterstützt Groovy umfassend und Groovy trägt das Ganze Java Bibliothekssatz, also Selenium Der Code wird unverändert ausgeführt.
  • ✅ Läuferklasse: SoapUITestCaseRunner öffnet eine Projektdatei, wählt eine Testsuite und einen Testfall aus und führt sie aus. Java.
  • 🧪 Dynamische Daten: setProjectProperties() übergibt Werte wie Stadt und Postleitzahl zur Laufzeit anstatt aus einer statischen Eigenschaftendatei.
  • ️ Voraussetzungen: Das Groovy SDK, ein JDK, Selenium und SoapUI Alle Komponenten müssen vor dem ersten Start installiert sein.
  • 📊 Beweisspur: Jede Aktion wird in die Datei soapui.log im Ordner bin des Installationsverzeichnisses protokolliert.

Die Verwendung von SoapUI und  Selenium für Webdiensttests durch Groovy

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:

  1. Start up SoapUI.
  2. Starten Sie einen neuen Testfall.
  3. Hinzufügen eines neuen Groovy Schritt.
  4. Kopieren Sie den Beispielcode und fügen Sie ihn in den entsprechenden Schritt ein.
  5. Klicken Sie auf Spielen.
  6. Du kannst sehen Firefox Starten und Navigieren zu GoogleDanach können Sie die SoapUI Protokolleinträge.
  7. 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.

SoapUI Auflistung des Installationsverzeichnisses mit der sichtbaren soapui.log-Datei

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.

bin-Ordner des SoapUI Installationsverzeichnis, in dem die Protokolldatei gespeichert wird

Wenn Sie diese Protokolldatei öffnen, indem Sie darauf klicken, sieht sie ähnlich wie im Screenshot unten aus.

Inhalt der soapui.log-Datei mit den protokollierten Testlaufeinträgen

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.

Häufig gestellte Fragen

Die Open-Source-Edition läuft Groovy Die Integration führt die Schritte aus und stellt den Testfall-Runner bereit, sodass die Integration selbst keine Lizenz benötigt. Pro oder ReadyAPI Funktionen wie Datenquellen und der datengesteuerte Assistent sind die Teile, die ohne eine solche Komponente nicht funktionieren.

Ja, und es ist das Spiegelbild dieser Komplettlösung. Groovy step kann einen WebDriver direkt instanziieren, vorausgesetzt Selenium Gläser werden in die SoapUI lib-Ordner, damit das Skript sie auflösen kann.

SoapUI wird ausgeführt Groovy nativ in einem Skriptschritt, ohne Kompilierungszyklus, und Groovy erreicht jeden Java Klasse bereits im Klassenpfad. Einfach Java benötigt einen Build-Schritt, weshalb Groovy Vorteile durch kurzen Integrationscode.

Verpacken Sie es als JUnit or TestNG Testen und Maven oder Gradle Rufen Sie es genau wie im Beispiel auf. Auf dem Agenten muss der Browser im Headless-Modus laufen, und der SoapUI Die Projektdatei muss zusammen mit dem Testcode eingecheckt werden.

Assistenten sind hilfreich, um einen kleinen Satz von Stadt- und Postleitzahlenpaaren auf eine größere Abdeckung auszuweiten und um Antwortfelder zu erkennen, die von der Assertion nicht erfasst werden. Generierte Werte müssen dennoch überprüft werden, da eine plausible Postleitzahl nicht zwangsläufig eine gültige ist.

Ja, innerhalb gewisser Grenzen. Der Copilot übernimmt die Steuerung. Groovy Syntax und gemeinsame Java Es ruft gut an, hat aber wenig Kenntnisse über die SoapUI Skriptobjekte wie testRunner, context und log, daher müssen diese Vorschläge genau geprüft werden.

Speichern Sie sie als Umgebungsvariablen oder in einem Geheimnismanager und lesen Sie sie zur Laufzeit in die Projekteigenschaften ein – derselbe Mechanismus, der hier von `setProjectProperties()` verwendet wird. Eine eingecheckte Projektdatei mit einem Klartextpasswort stellt ein potenzielles Sicherheitsrisiko dar.

Protokollebene-Prüfungen – Status, Schema, XPath auf dem Umschlag – sollten innerhalb des Protokolls durchgeführt werden. SoapUI, wo die Werkzeuge für sie entwickelt wurden. Assert in der Selenium Es wird nur das getestet, was der Browser selbst anzeigen muss, sodass ein Fehler auf einer Ebene lokalisiert werden kann.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: