Getty Images

Datengesteuerte API-Tests: Grundlagen und Tools

API-Tests unterscheiden sich von anderen Softwaretests durch ihren Gesamtprozess und die relevanten Metriken. Analysen und Automatisierung spielen eine Schlüsselrolle.

Programmierschnittstellen (APIs) sind wesentliche Komponenten der Software-Interoperabilität. Richtig entworfene und implementierte Programmierschnittstellen ermöglichen einem Programm den sicheren Zugriff auf die Daten oder Vorgänge eines anderen Programms.

Das Programm, welches die Daten oder den Dienst zur Verfügung stellt, und das Programm, welches auf die Daten oder den Dienst zugreift, haben keine Kenntnis voneinander oder sind voneinander abhängig. Daher stehen API-Entwickler vor einzigartigen Herausforderungen. Durch datengesteuerte API-Tests erhalten Entwickler wichtige Einblicke in die API-Performance.

Um die Softwarequalität zu verbessern, lernen Sie das Modell und die Komponenten datengesteuerter API-Tests, die Beziehung zwischen Testautomatisierung und Testanalyse sowie die möglichen Vorteile für die API-Entwicklung kennen. Sehen Sie sich dann die Tools an, die solche Tests ermöglichen.

Was sind datengesteuerte API-Tests?

Entwickler können Anwendungskomponenten erstellen, die eine Reihe von Aufgaben auf der Grundlage einer Reihe von Befehlen und Eingaben ausführen. Anschließend folgen Softwaretester den Schritten, um das Benutzerverhalten beim Durchlaufen dieser verschiedenen Aufgaben zu emulieren. Bei einem Softwaretest wird beispielsweise eine Reihe von Benutzereingaben simuliert und dann die tatsächliche Ausgabe mit der erwarteten Ausgabe verglichen. Die Software besteht den Test, wenn die tatsächlichen und die erwarteten Ergebnisse übereinstimmen.

APIs führen nicht wie andere Softwarekomponenten eine Reihe von Aufgaben aus, sondern erleichtern den Datentransfer. Beim Testen von APIs liegt der Schwerpunkt auf dem Datenzugriff und nicht auf der Logik hinter den Aktionen eines Benutzers.

Dies ist das Herzstück der datengesteuerten oder datengetriebenen API-Tests. Während die Tests eines Prozesses eine Reihe von Testlogiken verwenden, um Benutzeraktionen zu simulieren, stützen sich datengesteuerte Tests auf eine begrenzte Logik. API-Tests bieten eine Reihe von Datentestfällen, um die festgelegte Testlogik für die API auszuführen. Es müssen genügend unterschiedliche Daten vorhanden sein, um zu überprüfen, ob die der Software zugrunde liegenden Betriebsregeln und Bedingungen korrekt funktionieren.

Der Datenzugriff und die Datenverarbeitung sind daher die Grundlage für diese Art von API-Tests. Sie folgen einem Request/Response-Modell und umfassen drei Schlüsselkomponenten:

  1. einen Datensatz oder eine Datenquelle, zum Beispiel Dateien, Tabellenkalkulationen, Java-Datenbankquellen, offene Datenbankquellen und kommagetrennte Textdateien
  2. eine Testlogik, welche die Funktion der API ausübt und zusätzliche Schritte steuert, wie zum Beispiel Datenbankabfragen, Verschlüsselung und Berechnungsergebnisse
  3. ein Testskript oder Framework, das eine übergreifende Reihe von Tests sowie vergleichende Pass/Fail-Prüfungen der tatsächlichen und erwarteten Ergebnisse bietet

Nehmen wir an, ein Unternehmen bietet Analysedienste an, die seine eigenen Daten verwenden. Das Unternehmen entwickelt eine API, über die Benutzer analytische Abfragen und Anfragen für diese Daten stellen können. Im Test umfassen die API-Anfragen die Suche nach ausgewählten Daten, die Umwandlung oder Normalisierung verschiedener Datensätze und die Durchführung von Berechnungen. Bei datengesteuerten API-Tests wird eine Reihe von analytischen Abfragen über diese API aufgerufen, und anschließend werden die tatsächlichen und die erwarteten Ergebnisse der einzelnen Abfragen verglichen.

API-Strategie
Abbildung 1: Bei der Entwicklung neuer Anwendungen muss auch geklärt sein, wer an einer API-Strategie beteiligt ist.

Die Rolle der Datenanalytik bei API-Tests

Da die Paradigmen der kontinuierlichen Entwicklung (Continuous Development) die Entwicklungszyklen beschleunigen, steigt der Bedarf an Tests. Eine API kann häufigen Tests unterzogen werden, wenn Entwickler Funktionen hinzufügen oder aktualisieren. Softwaretester können realistischerweise nicht manuell mit dem Umfang der erforderlichen Mainline-Tests Schritt halten.

Daher ist die Automatisierung zu einem wichtigen Bestandteil der Softwaretests und der größeren CI/CD-Toolchain geworden. Automatisierung allein ist jedoch nicht genug. Entwickler, Projektmanager und Führungskräfte müssen verstehen, was unter der Automatisierungsschicht passiert.

Bei der API- und anderen Softwareentwicklungen liefert eine Analyse diese notwendigen Erkenntnisse, wenn die Automatisierung die Testgeschwindigkeit und das Testvolumen erhöht. Analyse-Tools erfassen und analysieren große Mengen von Testergebnissen, um Details über den Testzyklus zu liefern. Entwicklungsteams können diese Informationen dann überprüfen, um das Ergebnis zu bewerten und Fehler zu identifizieren, die behoben werden müssen.

Die bei API-Tests verwendeten Analysewerkzeuge liefern in der Regel einfache Pass/Fail-Ergebnisse für jeden Testtyp. Die genauen Tests hängen von der API, ihrem Zweck und der für sie erstellten Testsuite ab. Eine API, die Online-Einkäufe unterstützt, kann beispielsweise einer Testanalyse für eine Reihe von Benutzeraktivitäten unterzogen werden, einschließlich der folgenden:

  • Erfolg oder Misserfolg bei der Anmeldung
  • Validierung von Sicherheitsmerkmalen, wie Secure Sockets Layer/Transport Layer Security
  • die Fähigkeit, auf den Bestand zuzugreifen und diesen zu durchsuchen
  • Interaktion mit einem virtuellen Einkaufswagen
  • Bestellung mit Adress- und Zahlungsdaten

Während die Automatisierung jeden Test durch verschiedene Szenarien und Datensätze führt, bewerten und dokumentieren Analyse-Tools den Erfolg oder Misserfolg jedes Tests. Die Tools fassen die Ergebnisse in der Regel in für Menschen lesbaren Berichten, wie zum Beispiel Dashboards, zusammen und geben sie weiter.

Die Datenanalyse bei API-Tests kann mehrere Vorteile mit sich bringen, darunter:

  • Schnelleres Testen. Teams können automatisierte Tests ohne menschliches Eingreifen durchführen, oft auch außerhalb der Geschäftszeiten.
  • Weniger Fehler. Durch die Automatisierung werden Testfehler und Versäumnisse reduziert und sichergestellt, dass alle Tests in jedem Testzyklus auf die gleiche Weise durchgeführt werden.
  • Bessere Testübersicht. Automatisierung und Analytik dokumentieren jeden Test. Entwicklungsteams können Analyse-Tools verwenden, um den genauen Grund für das Scheitern eines bestimmten Tests zu ermitteln.
  • Schnellere Korrekturen. Umfassendere Tests und bessere Testklarheit führen schneller zu Problemen als andere Testmethoden. Dies wiederum kann die Codebereinigung für die nächste Iteration beschleunigen. Bei anhaltenden oder weit verbreiteten Testfehlern sollten sich die Manager auf Schulungen, Codierungstechniken oder andere Best Practices zur Verbesserung der allgemeinen Codequalität konzentrieren.

Tools für datengesteuerte API-Tests

Für die Datenanalyse sind Tools erforderlich, die häufig der CI/CD-Toolchain hinzugefügt werden. Es gibt zahlreiche API-Testautomatisierungs- und Testdatenmanagement-Tools für Entwickler, darunter Curiosity Software, Datprof Runtime, Delphix, GenRocket und Loadmill. Zu den Funktionen dieser Tools gehören das automatische Testdesign, die Erzeugung synthetischer Testdaten und die Datenmaskierung.

Softwareteams sollten jedes potenzielle API-Test-Tool auf seine Benutzerfreundlichkeit und Interoperabilität hin untersuchen und bewerten, bevor sie es in die CI/CD-Toolchain aufnehmen.

Wie man fehlgeschlagene Tests analysiert

In der Produktion überwachen IT-Teams APIs, um Metriken wie Betriebszeit, Reaktionszeit und Fehlerraten zu erfassen. In der Entwicklung hingegen konzentrieren sich die Tests auf Pass/Fail-Ergebnisse. Da jede API eine andere Aufgabe erfüllt, hängen die Tests von der jeweiligen API und der Backend-Funktionalität ab, die sie bereitstellt.

Beim Testen geht es darum, die API mit unterschiedlichen Eingaben aufzurufen und dann den Erfolg oder Misserfolg der Ergebnisse zu messen. Der Tester kann zum Beispiel einen funktionalen Test sehr häufig mit verschiedenen Datensätzen wiederholen. Wie viele dieser funktionalen API-Aufrufe waren erfolgreich? Und was noch wichtiger ist: Was waren die Umstände und Kriterien der fehlgeschlagenen Tests? Diese Art von Einblick hilft Entwicklern, Probleme zu verstehen und schnell zu beheben.

Erfahren Sie mehr über Softwareentwicklung