Was ist SOA-Test? Tutorial mit Beispiel
Was ist SOA-Test?
SOA (Serviceorientiert). ArchiBeim Architekturtesten handelt es sich um das Testen des SOA-Architekturstils, bei dem die Anwendungskomponenten so konzipiert sind, dass sie über Kommunikationsprotokolle (normalerweise über ein Netzwerk) kommunizieren.
Was ist SOA?
SOA ist eine Methode zur Integration von Geschäftsanwendungen und -prozessen, um den Geschäftsanforderungen gerecht zu werden.
Im Software Engineering sorgt SOA für Agilität und Flexibilität bei Geschäftsprozessen. Die Änderungen am Prozess oder an der Anwendung können auf eine bestimmte Komponente gerichtet werden, ohne dass sich dies auf das gesamte System auswirkt.
Die Softwareentwickler in SOA entwickeln oder kaufen Teile von Programmen, die als „SOA“ bezeichnet werden DIENSTLEISTUNGEN.
Was ist Dienst?
- Dienste können eine funktionale Einheit einer Anwendung oder eines Geschäftsprozesses sein, die von jeder anderen Anwendung oder jedem anderen Prozess wiederverwendet oder wiederholt werden kann. (In der obigen Abbildung ist Payment Gateway beispielsweise ein Dienst, der von jeder E-Commerce-Site wiederverwendet werden kann. Wann immer eine Zahlung erfolgen muss, ruft die E-Commerce-Website den Payment Gateway-Dienst auf bzw. fordert ihn an. Nachdem die Zahlung auf einem Gateway erfolgt ist, wird eine Antwort an die E-Commerce-Website gesendet.
- Die Dienstleistungen sind einfach zu montieren und die Komponenten lassen sich leicht neu konfigurieren.
- Dienstleistungen können mit Bausteinen verglichen werden. Sie können jede benötigte Anwendung erstellen. Das Hinzufügen und Entfernen aus der Anwendung oder dem Geschäftsprozess ist einfach.
- Dienste werden eher durch die Geschäftsfunktion definiert, die sie ausführen, als durch Codeblöcke.
Web Services
Webdienste sind unabhängige Anwendungskomponenten, die über das Web verfügbar sind.
Sie können im Internet veröffentlicht, gefunden und genutzt werden. Sie können über das Internet kommunizieren.
- Der Dienstanbieter veröffentlicht den Dienst im Internet.
- Der Client sucht in der Web Service Registry nach einem bestimmten Webdienst
- Es werden eine URL und die WSDL für den erforderlichen Webdienst zurückgegeben. Mithilfe der WSDL und der URL erfolgt die Kommunikation zwischen dem Dienstanbieter und dem Anforderer über SOAP-Nachrichten.
- Wenn ein Verbraucher einen Webdienst aufruft, wird eine HTTP-Verbindung zum Anbieter aufgebaut.
Es wird eine SOAP-Nachricht erstellt, um den Anbieter anzuweisen, die erforderliche Webdienstlogik aufzurufen. - Die vom Anbieter erhaltene Antwort ist eine SOAP-Nachricht, die in die HTTP-Antwort eingebettet wird. Diese HTTP-Antwort ist das Datenformat, das für die Verbraucheranwendung verständlich ist.
Beispiel
Auf der Startseite einer Website und einer Suchmaschine werden alltägliche Wetterberichte angezeigt. Anstatt den Wetterberichtsabschnitt komplett zu programmieren, kann ein Wetterberichtsdienst von einem Anbieter gekauft und in die Seiten integriert werden.
SOA-Tests
SOA besteht aus verschiedenen Technologien. Mit SOA erstellte Anwendungen verfügen über verschiedene Dienste, die lose gekoppelt sind.
SOA-Tests sollten sich auf drei Systemschichten konzentrieren
Diensteschicht
Diese Schicht besteht aus den Diensten, Diensten, die von einem System bereitgestellt werden, das von Geschäftsfunktionen abgeleitet ist.
Beispielsweise -
Betrachten Sie eine Wellness-Website, die Folgendes umfasst:
- Gewichts-Tracker
- Blutzucker-Tracker
- Blutdruck-Tracker
Tracker zeigen die jeweiligen Daten und das Datum ihrer Eingabe an. Die Diensteschicht besteht aus den Diensten, die die entsprechenden Daten aus der Datenbank abrufen.
- Gewichts-Tracker-Service
- Blutzucker-Tracker-Dienst
- Blutdruck-Tracker-Dienst
- Anmeldedienst
Prozessschicht
Die Prozessschicht besteht aus Prozessen und einer Sammlung von Diensten, die Teil einer einzelnen Funktionalität sind.
Die Prozesse können Teil einer Benutzeroberfläche (z. B. einer Suchmaschine) oder Teil eines ETL-Tools (zum Abrufen von Daten aus der Datenbank) sein.
Der Schwerpunkt dieser Ebene liegt auf Benutzeroberflächen und Prozessen.
Im Vordergrund steht die Benutzeroberfläche des Gewichtstrackers und seine Integration in die Datenbank.
Die folgenden Funktionen werden berücksichtigt
- Hinzufügen neuer Daten
- Bearbeiten vorhandener Daten
- Neuen Tracker erstellen
- Löschen von Daten
Verbraucherschicht
Diese Schicht besteht hauptsächlich aus Benutzeroberflächen.
Basierend auf der Schicht wird das Testen einer SOA-Anwendung in drei Ebenen unterteilt.
- Service Level
- Schnittstellenebene
- End-to-End-Level
- Für das Testdesign wird der Top-Down-Ansatz verwendet.
- Für die Testausführung wird der Bottom-Up-Ansatz verwendet.
Strategie für SOA-Tests
Testplanungsansatz,
- Die SOA-Tester sollten die gesamte Architektur der Anwendung verstehen.
- Die Anwendung muss in unabhängige Dienste unterteilt werden (Dienst, der über eine eigene Anforderungs- und Antwortstruktur verfügt und für die Antwortbildung nicht von einem anderen Dienst abhängig ist).
- Die Anwendungsstruktur muss in drei Komponenten neu organisiert werden: Daten, Dienste und Front-End-Anwendungen.
- Alle Komponenten müssen sorgfältig analysiert und Geschäftsszenarien entworfen werden.
- Die Geschäftsszenarien sollten in allgemeine Szenarien und anwendungsspezifische Szenarien unterteilt werden.
- A Rückverfolgbarkeitsmatrix sollten vorbereitet werden und alle Testfälle sollten auf Geschäftsszenarien zurückgeführt werden.
Testausführungsansatz
- Jede Servicekomponente sollte getestet werden.
- Integrationstests Die Überprüfung der Servicekomponenten sollte durchgeführt werden, um den Datenfluss durch die Services und die Datenintegrität zu validieren.
- Systemtest Es sollte eine Analyse des gesamten Modells durchgeführt werden, um den Datenfluss zwischen Front-End-Anwendung und Datenbank zu validieren.
- Performance Testing Dies sollte für eine Feinabstimmung und optimale Leistung erfolgen.
SOA-Testmethoden
1) Geschäftsszenariogesteuertes datenbasiertes Testen,
- Verschiedene geschäftliche Aspekte im Zusammenhang mit dem System sollten analysiert werden.
- Es sollten Szenarien entwickelt werden, die auf der Integration von basieren
- Verschiedene Web-Services der Bewerbung
- Webdienste und Anwendung.
- Die Dateneinrichtung sollte auf der Grundlage der oben genannten Szenarien erfolgen.
- Die Dateneinrichtung sollte so erfolgen, dass sie auch End-to-End-Szenarien abdeckt.
2) Stubs
- Zum Testen von Diensten werden Dummy-Schnittstellen erstellt.
- Über diese Schnittstellen können verschiedene Eingaben bereitgestellt und die Ausgaben validiert werden.
- Wenn eine Anwendung eine Schnittstelle zu einem externen Dienst verwendet, der nicht getestet wird (Drittanbieterdienst), kann während des Integrationstests ein Stub erstellt werden.
3) Regressionstests
- Regressionstests Bei mehreren Releases sollte eine Optimierung der Anwendung erfolgen, um die Stabilität und Verfügbarkeit der Systeme sicherzustellen.
- Es wird eine umfassende Regressionstestsuite erstellt, die die Dienste abdeckt, die einen wichtigen Teil der Anwendung bilden.
- Diese Testsuite kann in mehreren Versionen des Projekts wiederverwendet werden.
4) Service-Level-Tests
Beim Service Level Testing wird die Komponente auf Funktionalität, Sicherheit, Leistung und Interoperabilität geprüft.
Jeder einzelne Dienst muss zunächst unabhängig getestet werden.
5) Funktionsprüfung
Für jeden Dienst sollten Funktionstests durchgeführt werden
- Stellen Sie sicher, dass der Dienst auf jede Anfrage die richtige Antwort liefert.
- Für Anfragen mit ungültigen Daten, fehlerhaften Daten usw. werden korrekte Fehler empfangen.
- Überprüfen Sie jede Anforderung und Antwort auf jeden einzelnen Vorgang, den der Dienst zur Laufzeit ausführen muss.
- Validieren Sie die Fehlermeldungen, wenn ein Fehler auf Server-, Client- oder Netzwerkebene auftritt.
- Überprüfen Sie, ob die empfangenen Antworten das richtige Format haben.
- Überprüfen Sie, ob die in der Antwort empfangenen Daten den angeforderten Daten entsprechen.
6) Sicherheitstests
Das Testen der Sicherheit des Webservices ist ein wichtiger Aspekt beim Service-Level-Testen der SOA-Anwendung. Dies gewährleistet die Sicherheit der Anwendung.
Folgende Faktoren müssen beim Testen berücksichtigt werden:
- Der durch WS-Sicherheitstests definierte Industriestandard sollte vom Webdienst eingehalten werden.
- Sicherheitsmaßnahmen sollten einwandfrei funktionieren.
- Verschlüsselung von Daten und DigiUnterschriften auf den Dokumenten
- Authentifizierung und Autorisierung
- SQL-Injection, Malware, XSS, CSRF und andere Schwachstellen sollen im XML getestet werden.
- Denial-of-Service-Angriffe
7) Leistungstests
Es müssen Leistungstests des Dienstes durchgeführt werden, da die Dienste wiederverwendbar sind und möglicherweise mehrere Anwendungen denselben Dienst verwenden.
Folgende Faktoren werden bei der Prüfung berücksichtigt:
- Leistung und Funktionalität des Dienstes müssen unter hoher Belastung getestet werden.
- Die Leistung des Dienstes muss sowohl beim Arbeiten einzeln als auch innerhalb der Anwendung, mit der er gekoppelt ist, verglichen werden.
- Es sollten Auslastungstests des Dienstes durchgeführt werden
- um die Reaktionszeit zu überprüfen
- um nach Engpässen zu suchen
- um die Auslastung von CPU und Speicher zu überprüfen
- Skalierbarkeit vorherzusagen
8) Prüfung der Integrationsebene
- Service-Level-Tests stellen nur die ordnungsgemäße Funktion der einzelnen Dienste sicher, sie garantieren nicht die Funktion der gekoppelten Komponenten.
- Integrationstests werden durchgeführt und konzentrieren sich hauptsächlich auf die Schnittstellen.
- Diese Phase deckt alle möglichen Geschäftsszenarien ab.
- Der nichtfunktionale Test der Anwendung sollte in dieser Phase noch einmal durchgeführt werden. Sicherheit, Compliance und Leistungstests gewährleisten die Verfügbarkeit und Stabilität des Systems in allen Aspekten.
- Die Kommunikations- und Netzwerkprotokolle sollten getestet werden, um die Konsistenz der Datenkommunikation zwischen den Diensten zu validieren.
9) End-to-End-Tests
In dieser Phase wird sichergestellt, dass die Anwendung die Geschäftsanforderungen sowohl funktional als auch nicht funktional erfüllt.
Es wird sichergestellt, dass die folgenden Elemente während des End-to-End-Tests getestet werden
- Alle Dienste funktionieren nach der Integration wie erwartet
- Ausnahmebehandlung
- Benutzeroberfläche der Anwendung
- Korrekter Datenfluss durch alle Komponenten
- Geschäftsprozess
Herausforderungen beim SOA-Testen
- Fehlende Schnittstellen für Dienste
- Der Testprozess erstreckt sich über mehrere Systeme und schafft somit komplexe Datenanforderungen
- Die Anwendung ist eine Sammlung verschiedener Komponenten, die dazu neigt, sich zu ändern. Der Bedarf an Regressionstests ist häufiger.
- Aufgrund der mehrschichtigen Architektur ist es schwierig, Defekte zu isolieren.
- Da der Dienst in verschiedenen Schnittstellen verwendet wird, ist es schwierig, die Auslastung vorherzusagen, was die Planung von Leistungstests umständlich macht.
- SOA ist eine Sammlung heterogener Technologien. Das Testen einer SOA-Anwendung erfordert Personen mit unterschiedlichen Fähigkeiten, was wiederum die Planungs- und Ausführungskosten erhöht.
- Da es sich bei der Anwendung um eine Integration mehrerer Dienste handelt, bringen Sicherheitstests ihre eigenen Probleme mit sich. Die Validierung der Authentifizierung und Autorisierung ist ziemlich schwierig.
SOA-Testtools
Es gibt viele SOA-Testtools auf dem Markt, die Testern beim Testen von SOA-Anwendungen helfen. Hier sind einige der beliebtesten SOA-Testtools:
1) SOAP-Benutzeroberfläche
„SOAP UI“ ist ein Open-Source-Funktionstesttool für Dienste und API-Tests.
- Desktopanwendung
- Unterstützt mehrere Protokolle – SOAP, REST, HTTP, JMS, AMF, JDBC
- Webdienste können entwickelt, überprüft und aufgerufen werden.
- Kann auch für Lasttests verwendet werden, Automatisierungstestsund Sicherheitstests
- Stubs können von MockServices erstellt werden
- Webdienstanfragen und -tests können automatisch über den Webdienstclient generiert werden.
- Verfügen über integrierte Berichtstools
- Entwickelt von SmartBear
2) iTKO LISA
„LISA“ ist eine Produktsuite, die eine Funktionstestlösung für verteilte Systeme wie SOA bietet.
- Kann auch für Regressions-, Integrations-, Last- und Leistungstests verwendet werden.
- Entwickelt von iTKO (CA Technologies)
- Kann zum Entwerfen und Ausführen von Tests verwendet werden.
3) HP-Servicetest
„Service Test“ ist ein Funktionstesttool, das sowohl UI- als auch Shared-Services-Tests unterstützt
- Sowohl Funktions- als auch Leistungstests von Diensten können mit einem einzigen Skript durchgeführt werden.
- Integriert in HP QC.
- Die enorme Menge an Diensten und Daten kann verwaltet werden.
- Unterstützt Interoperabilitätstests durch Simulation von JEE-, AXIS- und DotNet-Clientumgebungen.
- Entwickelt von HP.
4) Parasoft SOA-Test
SOA Test ist eine Test- und Analyse-Tool-Suite, die für das Testen von APIs und API-Anwendungen entwickelt wurde.
- Unterstützt Webdienste, REST, JSON, MQ, JMS, TIBCO, HTTP, XML-Technologien.
- Funktions-, Unit-, Integrations-, Regressions-, Sicherheits-, Interoperabilitäts-, Compliance- und Leistungstests sind möglich.
- Stubs können mit Parasoft Virtualize erstellt werden, die intelligenter als die SOAP-Benutzeroberfläche sind.
- Entwickelt von ParaSoft
Anwendungsfälle für SOA-Tests
Stellen Sie sich eine E-Commerce-Website vor, die die folgenden Funktionen und Unterfunktionen enthält:
Auftragsabwicklung
PHASE 1
In der ersten Phase des SOA-Tests, also der Teststrategiephase, wird die Anwendung in Dienste und Geschäftsfunktionen unterteilt.
Betrachten wir im Folgenden die Dienste in der Anwendung.
- Bestellung anlegen
- Überprüfen Sie den Kundenstatus
- Auftragsstatus ändern
- Bestellstatus überprüfen
- Inventar prüfen
Geschäftsfunktionen sind dieselben wie die Funktionen der Website.
Hinweis: Das Teststrategiedokument würde die Liste des Dienstes und der Funktionen enthalten, die getestet werden müssen.
PHASE 2
Testplanungsphase. Für jede Ebene werden Testfälle geschrieben.
- End-to-End-Level. Die Testfälle werden für jeden Geschäftsanwendungsfall und Ablauf geschrieben. Nachfolgend finden Sie Beispiele für Testfälle
- Erstellen Sie eine Bestellung mit dem aktiven Benutzer.
- Erstellen Sie eine Bestellung mit einem inaktiven Benutzer.
- Erstellen Sie eine Bestellung mit dem verfügbaren Produkt mit Bestellmenge < verfügbare Menge.
- Erstellen Sie eine Bestellung mit dem verfügbaren Produkt mit Bestellmenge > verfügbare Menge.
- Erstellen Sie eine Bestellung mit mehreren Artikeln
- Eine Bestellung vollständig stornieren.
- Bestellung teilweise stornieren.
- Integrationsebene. Für die Integration von Datenbank und Benutzeroberfläche werden Testfälle geschrieben. Nachfolgend finden Sie Beispieltestfälle.
- Erstellen Sie eine neue Bestellung mit einem einzelnen Artikel. Stellen Sie sicher, dass die Bestellung in der Datenbank erstellt wird.
- Erstellen Sie eine neue Bestellung mit einem einzelnen Artikel. Überprüfen Sie, ob der für die Bestellung berechnete Preis korrekt ist.
- Erstellen Sie eine neue Bestellung mit einem einzelnen Artikel. Stellen Sie sicher, dass die Menge des verfügbaren Produkts um den Bestellwert geringer ist.
- Überprüfen Sie, ob der auf der Benutzeroberfläche angezeigte Status der Bestellung mit dem in der Datenbank übereinstimmt.
- Stornieren Sie die Bestellung und überprüfen Sie, ob der Status der Bestellung in der Datenbank geändert wurde.
- Überprüfen Sie bei der ersten Zahlung, ob die auf der Benutzeroberfläche eingegebenen Zahlungsdetails in der Datenbank gespeichert sind.
- Überprüfen Sie bei der Rückgabe von Zahlungen, ob die Zahlungsdetails in der Datenbank auf der Benutzeroberfläche angezeigt werden.
- Service Level. Jeder Dienst wird auf alle Datenbedingungen getestet.
Nachfolgend finden Sie einige Beispiele.
Nein. | Bestelldetails | Bestellbedingung |
---|---|---|
1 | Bestellung anlegen. Anzahl der Artikel = 1 | Bestellmenge < Menge in der Datenbank |
2 | Bestellung anlegen. Anzahl der Artikel > 1 | Bestellmenge < Menge in der Datenbank. |
3 | Bestellnummer der Artikel erstellen = 1 | Bestellmenge > Menge in der Datenbank |
4 | Bestellstatus überprüfen | Status der Datenbank = Aktiv |
5 | Bestellstatus überprüfen | Status in der Datenbank = Ausgeliefert |
6 | Bestellstatus überprüfen | Status in der Datenbank = Abgebrochen |
7 | Bestellstatus überprüfen | Bestell-ID = Ungültig |
8 | Überprüfen Sie die Produktverfügbarkeit | Produktmenge >0 |
9 | Überprüfen Sie die Produktverfügbarkeit | Produktmenge =0 |
10 | Überprüfen Sie die Produktverfügbarkeit | Produkt-ID = ungültig |
PHASE 3 – Testdurchführung
Bei der Testausführung wird ein Bottom-up-Ansatz verwendet, d. h. zuerst wird der Service-Level-Test durchgeführt, dann der Integrations-Level und schließlich der Test End-to-End-Tests.
1) Serviceniveau
Lassen Sie uns das bedenken Soapui Das Tool wird zum Testen der Anwendung in Betracht gezogen.
Die wsdl und URL werden in das Testfenster von SOAP gebrowst.
Die Anfrage für jeden Dienst wird im Anfragefenster angezeigt.
Durch Ändern der Daten gemäß den Service-Level-Testfällen werden Anforderungen für jeden Testfall erstellt.
Testfall | PREISANFRAGE (Request) | Erwartete Antwort |
---|---|---|
Bestellung anlegen. Anzahl der Artikel = 1 Bestellmenge < Bestellmenge | x2 2 | o3251 Erfolgreich |
Bestellnr. anlegen Anzahl der Artikel > 1 Bestellmenge < Bestellmenge | y1 1 y2 3 | o3251 Erfolgreich |
Bestellnr. erstellen der Artikel = 1 Bestellmenge > Menge auf DB | x23 200 | Null Erfolglos |
Überprüfen Sie den Bestellstatus. Status in der Datenbank = Aktiv | o9876 | Aktiv Erfolgreich |
Überprüfen Sie den Bestellstatus. Status in der Datenbank = Versandt | o9656 | Ausgeliefert Erfolgreich |
Überprüfen Sie den Bestellstatus. Bestell-ID = Ungültig | y5686 | Null Erfolglos |
Produktverfügbarkeit prüfenProduktmenge >0 | d34 | 34 Ja Erfolgreich |
Produktverfügbarkeit prüfenProduktmenge =0 | y34 | 0 NEIN Erfolgreich |
Produktverfügbarkeit prüfenProdukt-ID = ungültig | sder | Erfolglos |
2) Integrationsebene
Die Testfälle auf Integrationsebene werden auf der Benutzeroberfläche und der Datenbank ausgeführt.
- Erstellen Sie eine Bestellung mit einem einzelnen Artikel –
- Ein Benutzer öffnet die Website.
- Geht, um eine Bestellung aufzugeben.
- Wählt ein gültiges Produkt und eine gültige Menge aus und speichert die Bestellung.
- Es sollte eine Meldung angezeigt werden, dass die Bestellung erfolgreich aufgegeben wurde.
- Ein Benutzer öffnet die Datenbank und überprüft, ob die Bestelldetails mit denen übereinstimmen, die auf der Website eingegeben wurden.
3) End-to-End-Ebene
Die Geschäftsabläufe und Anwendungsfälle werden auf der Benutzeroberfläche ausgeführt.
- Erstellen Sie eine Bestellung mit mehreren Artikeln –
- Ein Benutzer öffnet eine Website.
- Geht, um eine Bestellung aufzugeben.
- Erkundigt sich nach einem gültigen Produkt und einer gültigen Menge und fügt es dem Warenkorb hinzu.
- Weitere gültige Produkte werden mit gültigen Mengen hinzugefügt und die Bestellung wird gespeichert. Die Zahlung erfolgt über eine neue Zahlungsmethode und die Bestellung wird aufgegeben.
- Es sollte die Meldung „Bestellung erfolgreich aufgegeben“ angezeigt werden.
- Ein Tester sollte überprüfen, ob der gesamte Ablauf ohne Datenverzerrungen erfolgt.
Fazit
Durch das Skizzieren der richtigen Strategie für Tests, Ressourcen, Tools und Compliance zur Bereitstellung eines guten Service können SOA-Tests vollständig und perfekt getestete Anwendungen liefern.