Holen Sie sich die neuesten wichtigen Update-Informationen für die Log4j-Sicherheitslücke. Sehen Sie sich an, wie Sie das Problem mithilfe der Parasoft-Anleitung beheben können. Erfahren Sie mehr >>

X
BLOG

Testen Sie komplexe API-Ketten rigoros mit einem modellbasierten Ansatz

Testen Sie komplexe API-Ketten rigoros mit einem modellbasierten Ansatz Lesezeit: 3 Minuten
APIs bieten Unternehmen die Flexibilität, schnell zu innovieren und ihre Kernangebote auf neue Benutzer auszudehnen. Diese Flexibilität bringt jedoch auch eine enorme Komplexität beim Testen mit sich. Ein modellbasierter Ansatz kann verwendet werden, um die Geschwindigkeit und Variabilität der modernen Softwarebereitstellung anzupassen.

Strenge API-Tests müssen die enorme Komplexität überwinden und mit einer Vielzahl möglicher Testfälle rechnen. Die Nachrichtendaten, die zum Erreichen der Endpunkte benötigt werden, müssen jede einzelne Datenkombination von Werten „abdecken“. Dies umfasst Datenwerte, die von Benutzern eingegeben wurden, sowie die eindeutigen Aktionen, die sie für ein System ausführen. Es enthält auch Maschinendaten, die durch Benutzeraktivitäten generiert wurden, z. B. Inhaltstyp und Sitzungs-IDs.

API-Tests müssen auch die Reisen berücksichtigen, über die die Daten durch die APIs fließen können. Sie müssen die Kombinationen von API-Aktionen und -Methoden abdecken, mit denen Daten auf dem Weg zum Erreichen bestimmter Endpunkte transformiert werden können.

APIs existieren jedoch nicht isoliert. Sie verbinden per Definition mehrere Systeme oder Komponenten, sodass jeder Test in gewissem Sinne ein End-to-End-Test ist. Eine strenge Reihe von API-Tests muss daher die große Anzahl kombinierter Aktionen oder Methoden berücksichtigen, die Daten transformieren können, wenn sie durch verbundene APIs fließen.

Ein unrealistisch vereinfachtes Beispiel würde 1000 Kombinationen von vom Benutzer eingegebenen Daten, 1000 verschiedene Kombinationen von maschinengenerierten Daten und 1000 verschiedene Fahrten durch die kombinierten Aktionen umfassen:

Das sind bereits 1 Milliarde Kombinationen, von denen jede ein Kandidat für einen API-Test ist. Bei strengen API-Tests muss daher eine Reihe von Testfällen ausgewählt werden, die im Sprint ausgeführt werden können, wobei jedoch eine ausreichende Abdeckung der API-Tests erhalten bleibt.

Zu viele Tests, zu wenig Zeit!

Leider sind die beim API-Testen verwendeten Testtechniken oft zu manuell und unsystematisch für strenge API-Tests. Geschäftskritische APIs können zu jedem Zeitpunkt des Testlebenszyklus unterbewertet werden:

  1. Das Erstellen von API-Tests nacheinander in Testtools oder durch Skripterstellung ist zu langsam und ad hoc, um auch nur einen Bruchteil der möglichen Kombinationen zu treffen.
  2. Erwartete Ergebnisse lassen sich anhand von Service-Definitionen und -Anforderungen nur schwer definieren. Das zweite Erraten, ob eine Antwort „korrekt“ ist, untergräbt die Zuverlässigkeit von API-Tests.
  3. Den Testdaten fehlen dann die meisten Kombinationen, die für strenge API-Tests erforderlich sind. Kopien von Produktionsdaten mit geringer Vielfalt konzentrieren sich auf erwartete Szenarien, die in der Vergangenheit aufgetreten sind. Ihnen fehlen Ausreißer und negative Kombinationen sowie Daten zum Testen unveröffentlichter Funktionen.
  4. Bei der Ausführung von API-Tests besteht häufig kein Zugriff auf interne Systeme und Systeme von Drittanbietern. Komponenten sind möglicherweise noch nicht fertig oder werden von einem anderen Team verwendet, oder ein Drittanbieter stellt möglicherweise keine Sandboxen zum Testen bereit. Umgebungsbedingungen beeinträchtigen daher die Agilität von API-Tests weiter.

Das Testen komplexer API-Ketten erfordert stattdessen einen integrierten und automatisierten Ansatz. API-Tester müssen in der Lage sein, den kleinsten Satz von API-Tests zu identifizieren, die für strenge API-Tests erforderlich sind, und systematisch die Testdaten und Umgebungen erstellen, die für deren Ausführung erforderlich sind.

Modellbasiertes API-Testen

Um die Komplexität von API-Aufrufketten zu überwinden, können Teams von einem modellbasierten Ansatz für API-Tests profitieren, bei dem Tester aus benutzerfreundlichen Modellen alles generieren können, was für strenge API-Tests erforderlich ist.

Hier ist, wie es funktioniert:

  • Modellbasierte Testgenerierung Erstellt API-Tests, die jede bestimmte Kombination von Daten und Methoden abdecken, die über API-Ketten hinweg beteiligt sind. Dies wendet mathematische Algorithmen auf mathematisch präzise Modelle an. Die Modelle werden schnell aus importierten Dienstdefinitionen und Nachrichtenaufzeichnungen erstellt. Durch Ziehen und Ablegen der wiederverwendbaren Flussdiagramme werden End-to-End-Tests für komplexe API-Ketten zusammengestellt, die strenge Tests in kurzen Iterationen ermöglichen.
  • Genaue Testdaten und erwartete Ergebnisse werden für jeden Test gleichzeitig generiert. Erwartete Ergebnisse sind einfach die Endblöcke in den Flussdiagrammen und Modellbauer testen Darüber hinaus werden Daten für jeden Test, den sie generieren, „just in time“ gefunden oder erstellt. API-Tester können auf Modellebene eine umfassende Palette von Datengenerierungsfunktionen und wiederholbaren TDM-Prozessen (Test Data Management) auswählen. Diese werden „just in time“ während der Testgenerierung aufgelöst und kohärente Datensätze zusammengestellt, die für jeden End-to-End-Test maßgeschneidert sind.
  • Virtuelle Datengenerierung Erzeugt die Request-Response-Paare, die zur Simulation fehlender oder nicht verfügbarer Komponenten erforderlich sind. Durch die virtuelle Datengenerierung werden genaue Antworten für jede mögliche Anforderung erstellt. Dieser wiederholbare TDM-Prozess wird auch während der Testgenerierung oder -ausführung aufgerufen, um sicherzustellen, dass jeder aus den zentralen Modellen generierte Test mit genauen Testdaten und -umgebungen ausgestattet ist.

Mit diesem integrierten Ansatz können QS-Teams selbst alles generieren, was für strenge API-Tests erforderlich ist. Durch die Verwaltung zentraler Flussdiagramme werden die Tests, Daten und virtuellen Dienste aufeinander abgestimmt und komplexe API-Ketten in kurzen Iterationen getestet.

Laden Sie die neueste Neugier-Parasoft eBook um herauszufinden, wie dieser Ansatz die Geschwindigkeit und Genauigkeit Ihrer API-Tests maximieren kann.

Automatisieren Sie zeitaufwändige Testaufgaben für Entwickler und Tester

Geschrieben von

Tom Pryce

Tom Pryce ist ein technologisch praktischer Kommunikationsmanager bei Curiosity Software Ireland. Seine Interessen umfassen modellbasiertes Testen, Testdatenmanagement und Roboter-Prozessautomatisierung. Er twittert unter @Curiositysoft.

Erhalten Sie die neuesten Nachrichten und Ressourcen zum Testen von Software sofort.