Was ist Schnittstellentest? Typen und Beispiele

โšก Intelligente Zusammenfassung

Schnittstellentests รผberprรผfen, ob zwei verbundene Softwaresysteme korrekt Daten austauschen. Sie umfassen die Verbindungen zwischen Webserver, Anwendungsserver und Datenbankserver, รผber die jede Anfrage einer Anwendung lรคuft, sowie die zugehรถrige Fehlerbehandlung.

  • ๐Ÿ”— Definition: Eine Schnittstelle ist jede Verbindung โ€“ eine API, ein Webdienst oder eine Nachrichtenwarteschlange โ€“, die zwei Komponenten miteinander verbindet.
  • ๐Ÿงญ Zwei Segmente: Die Tests zielen auf die Verbindung zwischen Webserver und Anwendungsserver sowie auf die Verbindung zwischen Anwendungsserver und Datenbankserver ab.
  • ๐Ÿ“„ Ausgearbeitetes Beispiel: Eine XML-Eingabe und eine JSON-Ausgabe werden anhand ihrer verรถffentlichten Formatvorgaben validiert.
  • ๐Ÿงช Testtypen: Arbeitsablรคufe, Grenzfรคlle, Leistung und Auslastung sowie jedes einzelne System wurden isoliert getestet.
  • ๏ธ Werkzeug: API-Clients und Servicevirtualisierung steuern Anfragen, wenn keine Benutzeroberflรคche zum Durchklicken vorhanden ist.
  • ๐Ÿ” Geltungsbereichsgrenze: Schnittstellentests sind eine Unterart von Integrationstests, die sich auf die Verbindungsprรผfung konzentrieren.tract selbst.

Schnittstellentests zwischen Webserver, Anwendungsserver und Datenbankserver

Was ist Schnittstellentest?

Schnittstellentests ist definiert als eine Art von Softwaretest, der รผberprรผft, ob die Kommunikation zwischen zwei verschiedenen Softwaresystemen korrekt erfolgt.

Eine Verbindung, die zwei Komponenten integriert, wird als Schnittstelle bezeichnet. In der Computerwelt kann eine solche Schnittstelle beispielsweise eine API oder ein Webdienst sein. Das Testen dieser verbindenden Dienste oder Schnittstellen wird als Schnittstellentest bezeichnet.

Eine Schnittstelle ist eigentlich Software, die aus Befehlssรคtzen, Nachrichten und anderen Attributen besteht, die die Kommunikation zwischen einem Gerรคt und einem Benutzer ermรถglichen.

Der wichtige Punkt ist, dass eine Schnittstelle einen Kontrapunkt hat.tract: ein vereinbartes Anfrageformat, ein vereinbartes Antwortformat, ein vereinbarter Satz von Fehlercodes und ein vereinbartes Timeout. Schnittstellentests, die contract von beiden Seiten, sodass eine ร„nderung des einen Teams nicht unbemerkt das andere beeintrรคchtigt. Da der grรถรŸte Teil dieses Datenverkehrs nie einen Bildschirm erreicht, sind die gefundenen Fehler fรผr das andere Team unsichtbar. Black-Box-Test erfolgte ausschlieรŸlich รผber die Benutzeroberflรคche.

So fรผhren Sie Schnittstellentests durch

Schnittstellentests umfassen das Testen von zwei Hauptsegmenten:

  1. Webserver- und Anwendungsserverschnittstelle
  2. Anwendungsserver- und Datenbankserverschnittstelle.

Fรผr die oben genannten Szenarien wird der Schnittstellentest durchgefรผhrt

  • รœberprรผfen Sie, ob die Server ordnungsgemรครŸ ausgefรผhrt werden oder nicht
  • Fehler werden ordnungsgemรครŸ behandelt oder es wird eine Fehlermeldung fรผr jede von einer Anwendung gestellte Abfrage zurรผckgegeben
  • รœberprรผfen Sie die Ergebnisse, wenn die Verbindung zu einem Webserver zwischendurch zurรผckgesetzt wird

Das untenstehende Diagramm zeigt diese beiden Segmente als eine einzige Kette, wobei der Browser mit dem Webserver, der Webserver mit dem Anwendungsserver und der Anwendungsserver mit dem Datenbankserver kommuniziert.

Schnittstellentests รผber die gesamte Kette von Webserver, Anwendungsserver und Datenbankserver hinweg

In der Praxis arbeitet sich ein Tester Schritt fรผr Schritt durch diese Kette. Jeder Schritt wird zunรคchst mit einer gรผltigen Anfrage, dann mit einer fehlerhaften Anfrage und schlieรŸlich mit absichtlich nicht erreichbarem Ziel ausgefรผhrt, sodass sowohl der Erfolgs- als auch der Fehlerpfad fรผr dieselbe Anwendung aufgezeichnet werden. Testfall.

Beispiel fรผr Schnittstellentests

Angenommen, fรผr jede xyz-Anwendung nimmt die Schnittstelle XML Datei als Eingabe und liefert JSON Die Datei wird als Ausgabedatei verwendet. Zum Testen der Benutzeroberflรคche dieser Anwendung werden lediglich die Spezifikationen des XML- und JSON-Dateiformats benรถtigt.

Mithilfe dieser Spezifikationen kรถnnen wir Beispiel-XML-Eingabedateien erstellen und in die Schnittstelle einlesen. Die anschlieรŸende Validierung der Eingabe- (XML) und Ausgabedatei (JSON) anhand der Anforderungen stellt den Schnittstellentest dar.

Beachten Sie, was das Beispiel nicht benรถtigt: keinen Bildschirm, keine Benutzeroberflรคche und keine Kenntnisse des internen Codes. Zwei Formatvorgaben genรผgen, um die Tests zu schreiben. Daher kann das Testen der Benutzeroberflรคche bereits beginnen, bevor diese รผberhaupt existiert.

Warum Schnittstellentests durchfรผhren?

Der Schnittstellentest ist abgeschlossen

  • Um sicherzustellen, dass Endbenutzer oder Kunden bei der Verwendung eines bestimmten Softwareprodukts keine Probleme haben
  • Um zu ermitteln, welche Anwendungsbereiche normalerweise von Endbenutzern aufgerufen werden, und um deren Benutzerfreundlichkeit zu รผberprรผfen.
  • Zur รœberprรผfung der Sicherheitsanforderungen wรคhrend der Kommunikation zwischen den Systemen
  • Um zu prรผfen, ob eine Lรถsung Netzwerkausfรคlle zwischen einem Anwendungsserver und einer Website bewรคltigen kann

Auch die Kosten spielen eine Rolle. Ein Fehler im Anfrageformat lรคsst sich gรผnstig beheben, solange die beiden Systeme noch miteinander verbunden werden, wird aber teuer, sobald ein nachgelagertes System die fehlerhaften Daten bereits gespeichert hat.

Arten von Schnittstellentests

Wรคhrend des Schnittstellentests werden verschiedene Arten von Tests an der Schnittstelle durchgefรผhrt, darunter:

  • Workflow: Dadurch wird sichergestellt, dass die Schnittstellen-Engine Ihre Standard-Workflows wie erwartet verarbeitet.
  • Grenzfรคlle โ€“ unerwartete Werte: Dies wird bei Tests berรผcksichtigt, bei denen Datum, Monat und Tag vertauscht werden.
  • Leistungs-, Last- und Netzwerktests: Eine Schnittstelle mit hohem Durchsatz kann mehr erfordern. Load Testing als eine Schnittstelle mit geringem Volumen, abhรคngig von der Schnittstellen-Engine und der Konnektivitรคtsinfrastruktur
  • Individuelle Systeme: Hierzu gehรถrt auch, jedes System einzeln zu testen. So sollten beispielsweise Abrechnungssystem und Warenwirtschaftssystem des Einzelhandelsgeschรคfts unabhรคngig voneinander funktionieren.

Der erste Gegenstand ist nahe genug dran Workflow-Test um seine Szenarien wiederzuverwenden, und der letzte Punkt รผberschneidet sich mit ModultestsDenn ein System, das von selbst versagt, wird erneut versagen, sobald es angeschlossen ist.

Schnittstellenteststrategie

Die Interface-Teststrategie ist eine Methode, mit der Schnittstellen unabhรคngig von der Implementierung mit gemeinsamen Tests geprรผft werden kรถnnen. Wir kรถnnen abs verwendentract Testfรคlle erstellen und konkrete Instanzen des Testfalls fรผr jede Implementierung der Schnittstellenteststrategie generieren. Die Basis-/Absolutentract-Testfรคlle fรผhren implementierungsneutrale Tests durch, wรคhrend konkrete Tests sich um die Instanziierung der zu testenden Objekte kรผmmern und implementierungsspezifische Tests durchfรผhren.

Der Vorteil dieser Struktur liegt in der Wiederverwendbarkeit. Wenn eine dritte Implementierung derselben Schnittstelle erscheint, ...tracDie t-Suite lรคuft unverรคndert dagegen, und es muss lediglich der Instanziierungscode geschrieben werden. Dasselbe Prinzip wird in grรถรŸerem Umfang angewendet in Komponententests, wo eine gemeinsame KontracDie t-Suite wird fรผr jede Komponente ausgefรผhrt, die behauptet, die Anforderungen zu erfรผllen.

Tools zum Testen von Schnittstellen

Da eine Schnittstelle keinen Bildschirm besitzt, mรผssen die Tools Anfragen direkt erstellen und die Rohdaten der Antworten รผberprรผfen. Teams kombinieren รผblicherweise drei Kategorien von Tools.

  • API-Clients und Anfragegeneratoren: Werkzeuge wie Postman, SoapUIInsomnia und Hoppscotch senden REST-, SOAP- oder GraphQL-Aufrufe, speichern diese als wiederverwendbare Sammlungen und รผberprรผfen Statuscodes, Header und Antworttexte.
  • Code-Level-Testbibliotheken: Bibliotheken, die innerhalb der bestehenden Testsuite ausgefรผhrt werden, ermรถglichen es, Schnittstellenprรผfungen neben Unit-Tests durchzufรผhren und bei jedem Build auszufรผhren, wodurch verhindert wird, dass sie veralten.
  • Tools fรผr Ladevorgรคnge und Protokolle: Ein Werkzeug wie beispielsweise JMeter steuert die gleiche Schnittstelle bei der Lautstรคrke an, wodurch eine Funktionsprรผfung in eine Leistungstest der Verbindung.
  • Servicevirtualisierung und Mockups: Ein Stub, der als Ersatz fรผr das andere Ende dient, ermรถglicht es, eine Seite zu testen, wรคhrend die andere Seite nicht verfรผgbar, unfertig oder zu teuer ist, um sie wiederholt anzurufen.

Die Auswahl ist weniger wichtig als die Testabdeckung. Unabhรคngig vom gewรคhlten Client muss die Sammlung der Anfragen zusammen mit dem Code in der Versionskontrolle gespeichert werden, damit ร„nderungen an der Schnittstelle und den zugehรถrigen Tests im selben Commit erfolgen. Details zu dieser รผbergeordneten Kategorie werden in [Referenz einfรผgen] behandelt. API-Tests.

Checkliste und Best Practices fรผr Schnittstellentests

Eine kurze Checkliste gewรคhrleistet eine konsistente Schnittstellenabdeckung รผber verschiedene Releases hinweg. Arbeiten Sie diese fรผr jede Verbindung einzeln ab, anstatt die Anwendung als Ganzes zu betrachten.

  • Mittract zuerst: Prรผfen Sie, ob die Anfrage- und Antwortschemata Feld fรผr Feld, einschlieรŸlich Datentypen und optionaler Felder, mit der verรถffentlichten Spezifikation รผbereinstimmen.
  • Grenzwerte: Senden Sie leere Nutzdaten, Felder mit maximaler Lรคnge, unerwartete Zeichensรคtze und umgekehrte Datumsformate.
  • Fehlerpfade: Stellen Sie sicher, dass jeder Fehler einen aussagekrรคftigen Code und eine Meldung anstelle eines Stacktrace zurรผckgibt. trace oder ein stiller Erfolg.
  • Zeitรผberschreitungen und Wiederholungsversuche: Unterbrechen Sie die Verbindung mitten in der Anfrage und vergewissern Sie sich, dass der Aufrufer die Anfrage sicher wiederholt, ohne die Transaktion zu duplizieren.
  • Sicherheit: Prรผfen Sie die Authentifizierung, Autorisierung und Verschlรผsselung der Verbindung und vergewissern Sie sich, dass Fehlermeldungen keine internen Details preisgeben.
  • Datenkonsistenz: Lesen Sie die Aufzeichnung von der anderen Seite erneut durch und vergewissern Sie sich, dass wรคhrend der รœbertragung nichts abgeschnitten, neu codiert oder neu angeordnet wurde.
  • Volumen: Wiederholen Sie den Anruf mit dem hรถchsten Datenverkehr unter gleichzeitiger Last und achten Sie auf eine Erschรถpfung des Verbindungspools.

Drei Vorgehensweisen machen diese Checkliste wiederholbar. Erstens: Automatisieren Sie die Testsuite und fรผhren Sie sie bei jedem Build aus, da sich Benutzeroberflรคchen weniger auffรคllig รคndern als Bildschirminhalte. Zweitens: Protokollieren Sie die vollstรคndige Anfrage und Antwort fรผr jeden Fehler, da ein Fehler in der Benutzeroberflรคche anhand eines Screenshots kaum reproduzierbar ist. Drittens: Halten Sie die Testsuite unabhรคngig von Testdaten anderer Testsuiten, damit ein Fehler auf die Benutzeroberflรคche und nicht auf einen fehlenden Datensatz hinweist.

Diese Kontrollen fรผgen sich nahtlos in den umfassenderen Plan ein, der in Arten von Softwaretestsund sie laufen, bevor dieselben Verbindungen von Ende zu Ende ausgefรผhrt werden wรคhrend Systemtests.

Schnittstellentests vs. Integrationstests

Die beiden Begriffe stehen in einem Zusammenhang, nicht im Gegensatz: Schnittstellentests sind der Teil der Integrationsarbeit, der sich auf die Verbindung selbst konzentriert. Die folgende Tabelle verdeutlicht die jeweiligen Schwerpunkte.

Schnittstellentests Integrationstests
Ein Integrationstesttyp, der sich mit dem Testen der Schnittstellen zwischen Komponenten oder Systemen befasst Es werden Tests durchgefรผhrt, um Fehler in den Schnittstellen und in den Interaktionen zwischen integrierten Komponenten oder Systemen aufzudecken.
Fokus ist der Betrugtract โ€“ Anfrageformat, Antwortformat, Fehlercodes und Timeouts Der Fokus liegt auf dem kombinierten Verhalten der Komponenten nach deren Zusammenfรผhrung.
Kann ausgefรผhrt werden, sobald die Spezifikation existiert, wobei das entfernte Ende mit einem Stub versehen ist. Erfordert, dass die beteiligten Komponenten gemeinsam gebaut und eingesetzt werden.
Die Fehlerursache liegt an einer Verbindung. Ein Fehler kann auf jede Komponente der zusammengebauten Gruppe hinweisen.

Wer sich neu mit diesem breiteren Fachgebiet befasst, wird die darin beschriebenen umliegenden Ebenen als hilfreich empfinden. Integrationstests und im Allgemeinen Softwaretest Einleitung, wobei die oben verwendete Terminologie aus dem Standard stammt. Softwareentwicklung Praxis. Bei browserseitigen Systemen werden dieselben Verbindungen schlieรŸlich wรคhrend der รœbung erneut genutzt. Testen von Webanwendungen.

Hรคufig gestellte Fragen

รœblicherweise sind die QA-Ingenieure fรผr die Integrationsabdeckung zustรคndig und arbeiten mit den Entwicklern beider Systeme zusammen. Bei serviceintensiven Produkten รผbernimmt ein dedizierter API-Tester diese Aufgabe, da hier eher Kenntnisse im Erstellen von Anfragen als in der Bildschirmnavigation erforderlich sind.

Keine sichtbare Ausgabe zur รœberprรผfung, Drittanbieter-Endpunkte, die nicht frei aufgerufen werden kรถnnen, Testdaten, die auf beiden Seiten vorhanden sein mรผssen, und Spezifikationen, die sich ohne Vorankรผndigung รคndern. Stubs und versionskontrollierte Anforderungssammlungen reduzieren die meisten dieser Probleme.

Sie รผberschneiden sich stark. Eine API ist eine Art Schnittstelle, also API-Tests Schnittstellentests werden auf diese spezifische Technologie angewendet. Schnittstellentests umfassen auch Dateiรผbertragungen, Nachrichtenwarteschlangen und Datenbankverbindungen, die keine API bereitstellen.

Nein. Der Name ist zwar gleich, aber das Ziel ist ein anderes. Schnittstellentests prรผfen System-zu-System-Verbindungen; Benutzeroberflรคchentests prรผfen Bildschirme, Steuerelemente und Layout. Werden die beiden verwechselt, bleiben die serverseitigen Verbindungen ungetestet.

Sobald die Spezifikationen fรผr Anfrage und Antwort festgelegt sind, was normalerweise der Fall ist, bevor eines der Systeme fertiggestellt ist, kann die Testsuite durch das Stubbing des entfernten Endes frรผhzeitig ausgefรผhrt werden. Dieselbe Testsuite kann wiederverwendet werden, sobald beide Systeme betriebsbereit sind.

Der Anteil der dokumentierten Endpunkte mit mindestens einem positiven und einem negativen Test, der Anteil der tatsรคchlich ausgelรถsten Fehlercodes und die Anzahl der eskalierten Schnittstellenfehlerping zu spรคteren Phasen. Reine Testzahlen sagen sehr wenig aus.

Maschinelles Lernen liest ein Schema und generiert Grenzwerte und negative Nutzdaten, die ein Mensch ignorieren wรผrde. AnschlieรŸend gruppiert es fehlerhafte Antworten, sodass eine Ursache nicht achtmal gemeldet wird. AuรŸerdem kennzeichnet es Schemaรคnderungen, die nicht mehr zu bestehenden Anfragen passen.

Ja. Anhand eines Schemas oder einer Beispielnutzlast erstellt es schnell Anfragegeneratoren, Assertions und Stub-Antworten. Die Spezifikation muss jedoch weiterhin von einem Menschen bereitgestellt werden, da eine generierte Assertion nur so korrekt ist wie die zugehรถrige Spezifikation.tract dahinter.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: