Seien Sie am 30. April dabei: Vorstellung von Parasoft C/C++test CT für kontinuierliche Tests und Compliance-Exzellenz | Registrierung

Nutzung der Automatisierung zur Erstellung von API-Testsuiten mit hoher Abdeckung

Parasoft-Würfel-Logo 300x300
14. April 2020
8 min lesen

Software, die schlecht mit anderen Diensten über die API kommuniziert, kann vermieden werden, wenn Sie API-Tests in Ihrer Organisation ernst nehmen. Hier zeigen wir Ihnen, wie Ihnen die Automatisierung dabei helfen kann, API-Testsuiten mit hoher Abdeckung zu erstellen. Lesen Sie weiter, um mehr zu erfahren.

Application Programming Interfaces (APIs) sind die Service-Schicht von Anwendungen. Sie verbinden die Datenschicht und die Präsentationsschicht (UI) und steuern die Interaktion der Benutzer mit Anwendungen.

Wenn die APIs nicht richtig auf Benutzeraktivitäten reagieren, ist die Anwendung fehlerhaft. Es liegt an den Entwicklern und Testern, sicherzustellen, dass verbundene APIs ordnungsgemäß mit ihrer Anwendung funktionieren.

API-Tests sind unerlässlich, um Fehler auf mehreren Ebenen Ihrer Anwendung zu identifizieren und ein nahtloses Kundenerlebnis zu gewährleisten. Arten von API-Tests -System umfasst:

  • Servicetests
  • Vertragstests
  • Komponententests
  • Szenariotests
  • Last- / Leistungstests
  • Sicherheitstests
  • Omnichannel-Tests

Das Durchführen von API-Tests ist eine Herausforderung, da ein technischer Ansatz erforderlich ist, um die Testfälle anhand der verschiedenen Nachrichtenformate und -protokolle zu entwerfen. Es erfordert auch ein Verständnis der Geschäftsregeln des Unternehmens, um die richtigen APIs ordnungsgemäß zusammen verwenden zu können. Der Versuch, APIs mithilfe eines manuellen Ansatzes zu testen, ist zeitaufwändig und kann dazu führen, dass das Testen erst spät im Entwicklungszyklus verschoben wird.

Durch automatisierte API-Tests können Sie Ihre Anwendungen gegen Unbekanntes kugelsicher machen. Es macht Fehler frühzeitig sichtbar, bewertet die Stärke des Builds und führt zu schnelleren Software-Releases. Da API-Tests automatisiert und kontinuierlich ausgeführt werden können, können Sie sicherstellen, dass Ihre Anwendung den Geschäftserwartungen entspricht, und gleichzeitig die Funktionsgenauigkeit überprüfen.

Die Vor- und Nachteile des automatisierten API-Testens

Mit dem richtigen API-Testwerkzeuge Wenn alle Prozesse und Prozesse vorhanden sind, profitiert Ihr Team von allen Vorteilen der Automatisierung. Ohne sie können API-Tests schnell überwältigend werden.

Vorteile

  • Bietet eine wartbare Automatisierung eines End-to-End-Szenarios.
  • Öffnet Kommunikationskanäle zwischen Entwickler und Test.
  • Reduziert die Zeit für Diagnose und Fehlerbehebung.

Nachteile

  • Tester wissen nicht, wie sie die API testen oder wie die APIs verwendet werden.
  • Erfordert spezielle Fähigkeiten und Tools, um eine umfassende Testabdeckung zu erhalten.
  • Niemand will es tun.

Sie können diese Herausforderungen bewältigen, indem Sie fortschrittliche Testtechnologien in Ihre vorhandenen Tests integrieren. Schauen wir uns zunächst die Erstellung von API-Tests an.

Die Herausforderung beim Erstellen von API-Tests

Eine der größten Herausforderungen beim Aufbau einer API-Testautomatisierungspraxis besteht darin, API-Tests zu erstellen. Ein Hindernis für den Einstieg oder die Erweiterung einer vorhandenen API-Testsuite sind geeignete Tests.

Ein Teil dieses Problems ist das erforderliche Domänenwissen, das zum Schreiben von API-Tests erforderlich ist, die ausschließlich auf technischem Wissen oder dokumentierten API-Spezifikationen basieren, sofern diese überhaupt vorhanden sind. Dies ist nicht die übliche Domäne von Testern. Die meisten Entwickler mit den erforderlichen Kenntnissen sind auf dieser Ebene nicht an Tests beteiligt. Sie haben anderswo Prioritäten.

Betrachten Sie die beiden sich ergänzenden Ansätze:

  • Top-Down-Ansatz. Testszenarien werden aus der regelmäßigen Verwendung und dem Testen von Anwendungen erstellt.
  • Bottom-up-Ansatz. Tests basieren auf der Absicht des Entwurfs.

Kombinieren von Top-Down- und Bottom-Up-Ansätzen zur Erstellung von API-Tests

Die meisten Anwendungen stellen mehrere APIs bereit und verwenden diese. Einige sind bekannt. Einige könnten sogar dokumentiert werden. Unter der Haube stecken oft viele bewegliche Teile, die den Einstieg in das API-Testen zu einer Herausforderung machen.

Beim Top-Down-Ansatz werden API-Interaktionen über die Werkzeugautomatisierung im Rahmen der üblichen Verwendung und Integration von Tests ermittelt.

Der andere Anstellwinkel, ein Bottom-up-Ansatz, besteht darin, API-Tests basierend auf der Entwurfsabsicht zu erstellen. Es ist normalerweise Teil des Komponententests und wird von Tools unterstützt.

Die Kombination der Ansätze von oben nach unten (Integrationstest) und von unten nach oben (Komponententest) überwindet die Barriere für die Testerstellung und erhöht die API-Testabdeckung. Siehe die Abbildung unten.

API-Testerstellung nach Verwendung

Eine der besten Möglichkeiten, API-Testszenarien zu erfassen, besteht darin, die vorhandene Verwendung des Produkts sowohl in der Produktion als auch im Test zu verwenden. Mithilfe intelligenter Aufzeichnungen und Wiedergabe können wiederverwendbare Tests und Szenarien erstellt werden.

Mit Tools wie Parasoft Recorder können Sie die API-Interaktionen erfassen und modellieren, die unter der Haube der Anwendung stattfinden. Dann nutzt der Smart API Test Generator von SOAtest künstliche Intelligenz, um komplexen Datenverkehr in Muster der API-Nutzung zu organisieren. Dies ermöglicht die Erstellung einer Suite von API-Tests mithilfe von Web-UI-Tests zum Extrahieren, Filtern und Erstellen von API-Testszenarien.

SOAtest verwendet dann AI, um Muster zu identifizieren und Datenbeziehungen herzustellen, um die API-Testvorlage zu erstellen. Sie können die Vorlage mit Variationen ändern und wiederverwenden. Diese Tests können für Sicherheits- und Leistungstests genutzt werden. Noch wichtiger ist, dass diese Tests nach ihrer Erstellung von der Benutzeroberfläche und der zugrunde liegenden Anwendung entkoppelt werden und ihre Abhängigkeiten nur von den API-Tests ausgeübt werden können.

Die Aufzeichnung und Analyse des API-Verkehrs in Testszenarien erstreckt sich auf automatisierte UI-Tests mit Tools wie Selenium. Jede Verwendung der Anwendung, die API-Aufrufe initiiert, ob manuell oder automatisiert, kann zum Erstellen von API-Tests verwendet werden. Es ist auch möglich, aufgezeichnete Szenarien mit Anforderungen für die Rückverfolgbarkeit zu verknüpfen.

Nach der Aufzeichnung können diese Szenarien in SOAtest untersucht und geändert werden, wie unten gezeigt.

SOAtest erkennt die verschiedenen API-Aufrufe und die auftretende Dateninteraktion. Es ist dann möglich, das Szenario und die Datennutzdaten nach Bedarf zu ändern. Sobald die Muster verstanden sind, können Zusicherungen in das Szenario eingefügt werden, um die korrekten Werte und Verhaltensweisen zu überprüfen.

Die Möglichkeit, eine gebrauchsfertige Suite von API-Tests zu erstellen, die ausschließlich auf vorhandenen Testtechniken basiert, führt zu einer schnellen Erstellung von Tests mit der Möglichkeit zur Wiederverwendung und Erweiterung. Es ist eine Abkürzung durch eines der größten Hindernisse für API-Tests.

API-Testerstellung durch (Service-) Design

Sie denken vielleicht: „Wir kennen das Design der APIs nicht. Die meisten von ihnen sind nicht dokumentiert! “ In den meisten Fällen ist dies richtig. Es ist jedoch weiterhin möglich, API-Tests aus vorhandenen Informationen zusammenzusetzen, um die Abdeckung von API-Tests von unten nach oben zu erweitern, indem die in der Anwendung expliziten oder impliziten Servicedefinitionen und -verträge betrachtet werden.

Im Hinblick auf eine API-Spezifikation haben die meisten Dienste eine Definition in einem Swagger-Dokument oder einer WSDL. SOAtest kann diese Definitionen lesen und eine API-Testszenariovorlage erstellen. Es enthält einen Testfall für alle Clients in der Definition. Sie können die Vorlage bearbeiten und manipulieren, um aussagekräftige API-Tests zu erstellen.

SOAtest bietet viele Optionen zum Erstellen von Tests ohne Skript aus der Vorlage, einschließlich parametrisierter Daten basierend auf Zufallszahlen oder vorherigen Testergebnissen, wie im folgenden Beispiel gezeigt.

Mit einfachen Techniken zum Kopieren und Einfügen, der Erstellung von Tests ohne Skript und der flexiblen Verwaltung von Testdaten bietet SOAtest eine einfache Möglichkeit, Testsuiten zu erstellen. Es soll den Top-Down-Ansatz nicht ersetzen, sondern ergänzen. Wenn beim manuellen oder UI-Testen wichtige Teile einer API fehlen (basierend auf den Abdeckungsergebnissen), füllt der Bottom-up-Ansatz diese Lücken. Es ist jedoch schwierig zu bestimmen, was getestet werden soll und was fehlt, ohne die Abdeckung zu verstehen.

Grundlegendes zu Ihrer Testabdeckung

Berichterstattung bedeutet je nach Kontext verschiedene Dinge. In der Regel werden Code, API und Anforderungen abgedeckt. Sie müssen all dies verstehen, um ein klares Bild davon zu erhalten, wie vollständig Ihre Testbemühungen sind.

  • Unit Testing. Das Problem ist die Codeabdeckung. Wie viel des Codes hat einen Test mit seiner Ausführung verbunden?
  • APIs. Es ist wichtig zu wissen, welche getestet werden und in welchem ​​Umfang jede API ausgeführt wurde.
  • Anforderungen. Für jede Anforderung muss ein Test durchgeführt werden, der belegt, dass sie korrekt implementiert ist.

Dies sind überlappende Bedenken, die zu unterschiedlichen Zeiten während des Projektlebenszyklus von Bedeutung sind. Wenn Sie beispielsweise die API-Testabdeckung verfolgen, müssen Sie sicherstellen, dass die APIs durch die Tests angemessen abgedeckt werden, und vorhandene Tests dort erweitern, wo sie fehlen. Der beste Weg, dies zu sehen, ist die Service-Definition, wie in der Abbildung unten gezeigt.

SOAtest verfolgt jeden ausgeführten Test und welche APIs abgedeckt sind: vollständig, teilweise oder überhaupt nicht. Wenn wir wissen, wo Tests fehlen, können wir unsere Bemühungen auf einen Bottom-up-Test basierend auf der Servicedefinition richten – oder gegebenenfalls auf einen neuen UI-basierten Test. Es weist auch darauf hin, wo Tests fehlschlagen (in Rot), und lenkt unsere Aufmerksamkeit auf Tests, die entweder aktualisiert werden müssen oder bei der Implantation etwas nicht stimmt.

Parasoft DTP (Development Testing Platform) fungiert als zentrales Repository und Hub für Ergebnisse aus verschiedenen Testpraktiken und bietet eine allgemeine Ansicht des Standorts des Projekts in Bezug auf die verschiedenen Arten der Abdeckung, wie im folgenden Dashboard gezeigt.

Diese Ansicht enthält aggregierte Ergebnisse aus statischer Code-Analyse, Unit-Tests, API sowie manuellen und automatisierten UI-Tests. Es ist die gesamte Bandbreite der Testpyramide. Es bietet ein vollständiges Bild der Abdeckung unter allen Aspekten: API, Anforderungen und Codeabdeckung.

Berücksichtigen Sie die Abdeckung der Anforderungen in Bezug auf in JIRA gespeicherte User Stories. Das Dashboard für Funktionstests (siehe unten) enthält ein JIRA Story Status-Widget, mit dem Sie die Abdeckung der Anforderungen verfolgen können.

Bei genauerer Betrachtung des JIRA-Status geben die Mouse-Over-Informationen die Anzahl der Tests an, die ohne Tests bestanden, fehlgeschlagen, unvollständig oder fehlend waren.

Im detaillierten Rückverfolgbarkeitsbericht können Sie einen weiteren Drilldown durchführen, um herauszufinden, welche Anforderungen fehlen, welche Tests nicht bestanden wurden usw.

Sie können weitere Untersuchungen durchführen, indem Sie einen Drilldown in den Rückverfolgbarkeitsbericht durchführen, um zu verstehen, welche Tests diese Geschichte berühren.

Darüber hinaus können Sie diese Abdeckung nach Bedarf mit APIs und Codeabdeckung verknüpfen. Von hier aus können Sie zu API-Tests navigieren, um festzustellen, wo Änderungen erforderlich sind und welche zusätzlichen Tests erforderlich sind. Diese ganzheitliche, aggregierte Ansicht der Abdeckung bietet das vollständigste Bild des Teststatus. Die Testabdeckung "wächst" mit der Zeit, wenn Entwickler auf eine abgeschlossene Anwendung konvergieren, und der neue Code wird durch API- und Komponententests "abgedeckt", die für die zugehörigen Anforderungen erstellt wurden.

Zusammenfassung

Die Bedeutung von API-Tests wird von Softwareentwicklungsorganisationen erkannt, sie haben jedoch häufig Schwierigkeiten, die Praxis vollständig zu übernehmen. Ein Teil des Kampfes besteht darin, eine Reihe von Tests aufzubauen, da die manuelle Erstellung von Tests komplex ist und fundiertes technisches Wissen erfordert. Sogar Teams, die API-Tests durchführen, sind aufgefordert, die Abdeckung ihrer API-Tests zu erhöhen, da so viele von ihnen nicht dokumentiert sind.

Erweiterte Funktionstest-Tools wie SOAtest können dazu beitragen, die Erstellung von API-Tests mithilfe eines Top-Down-Ansatzes zu automatisieren, der auf der Analyse des Nutzungsverhaltens aus manuellen Tests und der regelmäßigen Verwendung von Anwendungen basiert. Diese intelligente Testgenerierung hilft Teams dabei, schnell und einfach Tests aus ihren vorhandenen Praktiken zu erstellen.

Ein simultaner und komplementärer Bottom-up-Ansatz ist mithilfe der SOAtest-Automatisierung möglich, um skriptlose Tests aus Dienstdefinitionen zu erstellen. Zusammen mit der vollständigen Abdeckungsanalyse können Sie die Abdeckung von API-Tests im Laufe der Zeit mithilfe von Top-Down- und Bottom-Up-Techniken erhöhen. Da API-Tests auf einer viel niedrigeren Ebene als UI-Tests funktionieren, können Sie sicher sein, dass die konsistenten und umfassenden Tests, die Sie erstellen, noch lange dauern werden.

Herausforderungen und Best Practices beim API-Testen