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

So automatisieren Sie REST-API-Tests mit großen Anforderungsnutzdaten

So automatisieren Sie REST-API-Tests mit großen Anforderungsnutzdaten Lesezeit: 5 Minuten

Wie erhalten Sie innerhalb von Sekunden eine Suite mit ein paar Dutzend REST-API-Testfällen, die alle sehr große Anforderungsnutzdaten aufweisen? Ein wissenschaftlicher Testansatz hilft dabei, Konsistenz mit der REST-API-Testautomatisierung zu schaffen, aber selbst Wissenschaftler brauchen von Zeit zu Zeit eine Hand.

Tester sind die letzte Verteidigungslinie zwischen unseren Anwendungen und ihrem zunehmend technisch versierten Publikum. Wenn wir eine Anwendung auf dem Markt bereitstellen, die Mängel oder Leistungsprobleme aufweist, werden unsere Kunden dies nicht mehr tolerieren. Daher müssen Tester intelligent sein und in der Lage sein, moderne Anwendungen so effektiv wie möglich zu testen. Das Testen ist jedoch eine Wissenschaft und erfordert einen systematischen Ansatz zur Validierung einer Anwendung.

Testen ist eine Wissenschaft

Aber selbst mit einem wissenschaftlichen Testansatz ist das Testen von Software nicht so einfach. Tester durchlaufen normalerweise einen Prozess wie den folgenden:

  1. Stellen Sie eine Frage, normalerweise zum Verhalten der Anwendung. (Erfordert viel Kreativität.)
  2. Führen Sie Hintergrundrecherchen durch, um die verschiedenen Schnittstellen (Web, Mobile, API usw.) zu verstehen, wie Sie sie genau testen und wie die Anwendung funktionieren sollte.
  3. Konstruieren Sie eine Hypothese (dh Assertions- und Regressionstests). Basierend auf Ihrem Verständnis, wie die Anwendung funktionieren sollte, können Sie die Variablen einrichten, die Ihre Erwartungen angeben.
  4. Testen Sie Ihre Hypothese, indem Sie Tests erstellen (so aussagekräftig wie möglich, damit Sie Ihre Hypothese beweisen oder widerlegen können (Behauptung / Regression).
  5. Analysieren Sie Ihre Ergebnisse und ziehen Sie Schlussfolgerungen. Nachdem Sie Ihre Tests ausgeführt und Ergebnisse erhalten haben, können Sie sie entweder manuell interpretieren, um festzustellen, ob sie Ihren Erwartungen entsprechen, oder Sie können Ihre Testausführung so automatisieren, dass sie nur auf Testfehler aufmerksam gemacht werden.
  6. Kommunizieren Sie Ihre Ergebnisse zurück an die größere Software Delivery-Pipeline, damit das Unternehmen eine aussagekräftige Entscheidung darüber treffen kann, ob die Anwendung fortgesetzt werden soll.

Das Testen ist keine einfache Angelegenheit, daher benötigen wir jede Unterstützung, die wir bekommen können, um diese aussagekräftigen Experimente zu erstellen, die aussagekräftiges Feedback geben können, um sicherzustellen, dass unsere Anwendungen korrekt erstellt werden. Und für uns als Tester ist es wichtig, alle Methoden, die wir entdeckt haben, um das Testen zu vereinfachen, miteinander zu kommunizieren! Hier eine dieser Methoden. Im Folgenden werde ich eine aktuelle REST-API-Testherausforderung erläutern und erläutern, wie ich das Problem lösen konnte.

REST-API-Tests mit Nutzdaten für große Anforderungen

Moderne Web-Apps senden RESTful JSON-API-Aufrufe vom Browser an den Server, da JSON-Daten mit JavaScript-Code einfach zu verwenden sind. Das Erstellen von Testautomatisierungsskripten mit diesen JSON-Daten ist jedoch nicht immer so einfach. Vor kurzem hatte ich Probleme mit dem Testen von Kopfschmerzen aufgrund großer JSON-Anforderungsnutzdaten in dem Dienst, den ich getestet habe und den ich verwenden konnte Parasoft SOAtestist neu Intelligenter API-Testgenerator helfen.

Im Gegensatz zu groß Anforderung Nutzlasten, groß Antwort Nutzlasten sind für Tester leicht zu handhaben. Rufen Sie den Dienst an, speichern Sie die Antwort und vergleichen Sie sie mit zukünftigen Antworten. Entfernen Sie alle Werte, die sich möglicherweise ständig ändern, z. B. Datums- oder Zeitstempel. Spülen und wiederholen. Dies alles setzt jedoch voraus, dass der Dienst überhaupt aufgerufen wird. Bei großen Anforderungsnutzdaten müssen Sie vor jedem Serviceabruf viele Daten konfigurieren und sicherstellen, dass alles korrekt ist. Natürlich können Sie mit den Browser-Entwicklertools kopieren und einfügen, aber bei vielen REST-API-Aufrufen bedeutet dies viel Kopieren und Einfügen. Deshalb ist es jetzt so aufregend, den Smart API Test Generator verwenden zu können.

Mein letztes Projekt umfasste eine Webkonfigurationsseite für die Integration in LDAP- und Active Directory-Server. Das Konzept war einfach: Konfigurieren Sie die Einstellungen und testen Sie sie, indem Sie Benutzer- und Gruppenkonten auflisten. Das Problem bestand darin, dass eine LDAP-Konfiguration viele Einstellungen enthält. Zum Testen dieser Einstellungen müssen alle Einstellungen in der Anforderungsnutzlast gesendet werden. Darüber hinaus waren zusätzliche Anrufe erforderlich, um die Mitgliedschaft jeder Gruppe zu testen. Jede Anfrage bestand aus Hunderten von Zeilen JSON-Daten.

Ich habe daran gearbeitet, Unterstützung für eine neue Mitgliedschaftsstrategie hinzuzufügen. Die einzigen JSON-Daten, die mir beim Testen am Herzen lagen, befanden sich in Zeile 10, aber alle anderen Datenzeilen waren noch erforderlich, damit das Ganze funktioniert. Daher habe ich meine Konfigurationsseite so eingerichtet, dass sie auf einen LDAP-Server mit Testdaten verweist, und die Aufzeichnung mit dem Parasoft SOAtest aktiviert Intelligenter API-Testgenerator Erweiterung für Chrome. Ich habe auf Schaltflächen geklickt, um Benutzer und Gruppen zu testen, und jede Gruppe erweitert, um die Mitglieder anzuzeigen. Jedes Mal, wenn ich darauf klickte, wurden einige REST-API-Aufrufe an den Webserver gesendet.

Die Hypothese war, dass die Mitgliedschaftsstrategie die Gruppen und Mitglieder in der Vorschau beeinflussen würde. Ich habe die Mitgliedschaftsstrategie auf der Konfigurationsseite geändert und erneut durch die Testdaten geklickt. Visuell konnte ich im Dialogfeld verschiedene Ergebnisse der Gruppenmitgliedschaft sehen. Ich war mit meinem manuellen Test zufrieden, daher hörte ich mit der Aufzeichnung auf und erstellte eine sehr intelligente Reihe von API-Tests:

Und da war es - innerhalb von Sekunden hatte ich eine Reihe von ein paar Dutzend REST-API-Tests, die alle sehr große Anforderungsnutzdaten hatten. Nur wenige Eigenschaften wie Gruppenname und Mitgliedschaftsstrategie haben sich zwischen den Anforderungen geändert, aber es war ausreichend, eine Variation der Antworten zu erhalten und für jede ein Diff-Steuerelement zu speichern. Es war sogar klug genug, die Gruppennamen aus der ersten Gruppenvorschau-Antwort zu extrahieren und sie für die parametrisierte Verwendung in den folgenden Tests zu speichern. Nachdem ich alle Tests bestanden hatte, war ich zuversichtlich, dass meine neue Mitgliedschaftsstrategie ordnungsgemäß funktioniert.

Dies alles wurde mit einem LDAP-Server mit Testdaten anstelle von echten Benutzerkonten durchgeführt. Ich kann sicherstellen, dass sich die Testdaten nicht ändern, aber echte Benutzer kommen und gehen im Laufe der Zeit. Das Ändern von Daten kann bei automatisierten Testregressionskontrollen viel Rauschen verursachen. Wenn Sie keine stabilen Testdaten für Ihre Anwendung haben, empfehlen wir Ihnen, die von angebotene Webdienst- oder Datenbankvirtualisierung zu überprüfen Parasoft Virtualisieren.

Nutzen Sie Ihre manuellen Tests, um skriptlose, automatisierte RESTful-API-Tests zu erstellen.
Versuchen Sie Parasoft SOAtest

Meine Testherausforderung, gelöst

Wie ich zu Beginn dieses Beitrags besprochen habe, hilft ein wissenschaftlicher Testansatz dabei, Konsistenz zu schaffen. Aber auch die besten Wissenschaftler brauchen ab und zu eine Hand! Die oben beschriebene Technik ähnelt der Verwendung eines Hochleistungsmikroskops anstelle einer Lupe. Dies ist ein bedeutender Fortschritt in einem ansonsten sehr komplizierten Prozess und hat zumindest für mich dazu beigetragen, meine Testherausforderung erheblich zu beschleunigen. Ich hoffe, dass es das gleiche für Sie tut. Viel Spaß beim Testen!

Geschrieben von

Matt Liebe

Als Product Lead Engineer bei Parasoft verwaltet Matt die Entwicklung neuer Funktionen für das Umgebungsmanagement, API-Tests, Service-Virtualisierung und Testdatenmodellierung.

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