Parasoft C/C++test 2022.2 unterstützt das neue MISRA C:2012 Amendment 3 und eine Entwurfsversion von MISRA C++ 202x. Erfahren Sie mehr >>

API-Tests sind großartig. Warum machen das nicht alle?

Von Markus Lambert

24. Mai 2018

7  min lesen

API-Tests bieten eine Menge wartbarer Automatisierung, die auf Leistungs- und Sicherheitstests ausgeweitet werden kann, auf die ein durchschnittlicher Tester jedoch nicht zugreifen kann. Erfahren Sie, wie Sie die Zeit für die Erstellung aussagekräftiger Testszenarien erheblich verkürzen können.

Die Umstellung auf Microservices und API-gesteuerte Architekturen führt zu bedeutenden Innovationen in allen Branchen, hat Unternehmen jedoch auch einer verborgenen Risikoschicht geöffnet. In den Benutzeroberflächen (Web- und mobile Benutzeroberflächen) liegen nicht mehr die primären Geschäftsrisiken. Stattdessen sind die größten Sicherheitslücken in der nicht-menschlichen Oberfläche der API verborgen.

Aus diesem Grund ist das API-Testen immer mehr in den Fokus gerückt, aber wir hören immer noch: „Was ist ein API-Test und warum brauche ich es?“

Die kurze Zusammenfassung lautet: Mit Application Programming Interfaces (APIs) kommunizieren Anwendungen über eine gemeinsame Schnittstelle, die von einem definierten Vertrag verwaltet wird, miteinander. Die treibende Kraft bei der Einführung von API-Tests besteht darin, die Geschäftslogik der Anwendung unabhängig von der Benutzeroberfläche auf stabile Weise testen zu können. API-Tests ermöglichen umfassendere Tests als Tests nur am Front-End, sodass beispielsweise Leistungs- und Sicherheitstests möglich sind. Branchenanalysten und agile Experten wie Martin Fowler und Mike Cohn sind sich einig, dass API-Tests der richtige Weg sind. Was hält uns zurück?

Die Auswirkungen ineffektiver Tests

Softwareteams möchten die ideale Zeit und nichts weiter mit Testen und Debuggen verbringen, um das Potenzial erfolgreicher Projekte zu maximieren. Traditionell war es jedoch schwierig, diesen Zeitaufwand für das Testen und Debuggen zu verringern, da viele schwerwiegende Fehler und Sicherheitslücken spät im Software-Lebenszyklus festgestellt wurden, auch nach der Veröffentlichung.

Die folgende Tabelle zeigt, wann Fehler in die Anwendung eingeführt werden und wie sich der Zeitpunkt auf die Kosten für die Reparatur eines Fehlers in jeder Phase auswirkt. Wie Sie deutlich sehen können, sind die Kosten für Fehler im späten Zyklus erheblich - und dieser Kostenanstieg ist auf viele Faktoren zurückzuführen (z. B. die Zeit, die zur Diagnose des Problems und zur Ermittlung der Grundursache benötigt wird, die Anzahl der am Prozess beteiligten Personen). und die zunehmende Komplexität (und damit das Risiko), die mit der Fehlerbehebung verbunden ist).

Wenn Sie sich denken: "Ich habe das schon einmal gesehen" ... haben Sie wahrscheinlich! Im Jahr 1996 veröffentlichte Capers Jones die Forschung hinter diesem Diagramm und trotz der Änderungen in der Softwareentwicklungspraxis in den letzten 20 Jahren sagt die aktualisierte Forschung, dass sie bis heute relevant ist.

Wo wir sein wollen: die Testpyramide

Wo gehen wir also falsch? Wir gehen mit unserem Qualitätsansatz falsch - wir müssen uns die obige Tabelle ansehen und nach Wegen suchen, dies zu tun Verschieben Sie die Fehlererkennung nach links und finden Sie die Fehler früher, wenn sie leichter zu diagnostizieren und leichter zu beheben sind. Techniken wie die Tiefencodeanalyse können Sicherheits- und Zuverlässigkeitsprobleme, die in die Codebasis eingebettet sind, schnell aufdecken, sobald der Code geschrieben wird. Um jedoch die Laufzeit oder das Funktionsverhalten zu validieren, müssen wir Zeit in die Erstellung und Wartung automatisierter Tests investieren - und In einer agilen Welt müssen diese Tests nach ihrer Erstellung kontinuierlich ausgeführt werden, damit sie die Erkennungs- und Erfassungsregressionen nach links verschieben können, sobald neue Funktionen implementiert werden.

Der ideale Weg, um Zeit zu investieren und Ihr Testportfolio zu organisieren, wird häufig als „Testpyramide“ dargestellt (siehe unten), indem Sie so viel Testaufwand so früh wie möglich in den Entwicklungszeitplan einbringen. Sie beginnen mit einer Grundlage von Komponententests, bei denen gefundene Fehler kostengünstig behoben werden können. Anschließend runden API-, Integrations-, Komponententests sowie System- und UI-Tests die Ebenen der Pyramide ab.

Aber während Praktiken wie Test Driven Development (TDD), Unit-Tests im FrühstadiumDa die Automatisierung beim Testen von Software immer mehr zum Mainstream wird, verbringen Softwareteams immer noch zu viel Zeit mit dem Testen von Benutzeroberflächen und Systemen im späten Zyklus. Wir haben den aktuellen Stand der Dinge oft als umgekehrte Pyramide (Eistüte) beschrieben. Bei näherer Betrachtung der Daten stellen wir jedoch einen erheblichen Mangel an API-Tests in der Branche fest, sodass ein Martini-Glas besser geeignet ist:

API-Tests Warum niemand es tut

Es ist bedauerlich, dass diese mittlere Schicht der Testpyramide im Allgemeinen nicht verwendet wird, da die Investition in API-Tests definitiv Vorteile bietet. Beispielsweise können Tests früher im Softwareentwicklungszyklus durchgeführt werden (sobald die API-Verträge / -Definitionen verfügbar sind), sie können einfacher automatisiert werden und sind für eingehende Änderungen in der Benutzeroberfläche / Benutzeroberfläche der Anwendung grundsätzlich weniger spröde .

Es ist möglich, Tests auf Szenarioebene zu erstellen, indem API-Tests in gängigen Anwendungsfällen organisiert werden. Die Automatisierung von API-Tests ebnet den Weg für frühzeitige und szenariogesteuerte Leistungs- und Sicherheitstests. Letztendlich ermöglicht die Investition in API-Tests den Teams, Änderungen besser zu verwalten und die von modernen Entwicklungsmethoden versprochene Agilität zu erzielen. Früh und oft testen, was mag man nicht? Leider haben Teams aus verschiedenen Gründen Schwierigkeiten, API-Tests zu implementieren.

Was schränkt das Testen von APIs ein?

Das größte Hindernis für eine verstärkte Einführung von API-Tests ist die tatsächliche Erstellung der Tests. Es ist nicht einfach, aussagekräftige Tests zu erstellen, die auf API-Ebene funktionieren, geschweige denn, um geeignete Testszenarien zu erstellen. Ebenso grundlegend für die Verhinderung der Einführung von API-Tests ist die Wissenslücke zwischen Entwicklern und Testern. API-Tests erfordern Kenntnisse und Fähigkeiten, die Testern häufig fehlen, und Manager möchten Entwickler nicht mit Integrations- oder API-Tests beauftragen.

Entwickler arbeiten vom unteren Ende der Pyramide nach oben und arbeiten gerne auf Einheitenebene. Es ist ihr Code (oder zumindest ihr Verantwortungsbereich), und Unit-Tests scheinen eine natürliche Ergänzung zu ihrem Arbeitsablauf zu sein. Die automatische Erstellung von Komponententests hat die Effizienz auf dieser Ebene verbessert, und die Softwareindustrie versteht die Notwendigkeit gründlicher Tests hier.

Auf der anderen Seite arbeiten Tester von der Spitze der Pyramide auf der Ebene der Benutzeroberfläche aus, wo die Anwendungsfälle und Schnittstellen intuitiv und einfach auf die ursprünglichen Geschäftsanforderungen abzubilden sind. Ihre Sicht auf die Anwendung ist von außen nach innen gerichtet.

Testpyramide

API-Tests befinden sich zwischen diesen beiden Rollen und erfordern sowohl Kenntnisse über das Design der Schnittstellen als auch über deren Verwendung. Tester arbeiten normalerweise nicht auf dieser Ebene und betrachten die API als CodeWährend Entwickler Schnittstellen und APIs verstehen, haben sie normalerweise nicht die vollständige Ansicht darüber, wie die Schnittstelle in Verbindung mit anderen Subsystemen verwendet werden soll. Sehen Sie sich API-Tests daher als an Funktionsprüfung und außerhalb ihrer Rolle.

Bis vor kurzem hat es an Automatisierung von Testwerkzeugen gefehlt, um diese Lücke zwischen Unit- und Systemtests, Entwicklern und Testern zu schließen. Um der Softwareindustrie zu helfen, sich der idealen Testpyramide zu nähern und sich aus dem Martini-Glas zu entwickeln, das wir heute sehen, haben wir das eingeführt Intelligenter API-Testgenerator zu Parasoft SOAtest, unser Tool zur Automatisierung von Funktionstests, das einfach anzuwenden und zu verwenden ist.

Gib das Martini-Glas auf

Der Smart API Test Generator ist ein Plugin für den Google Chrome-Webbrowser, das manuelle Tests überwacht und mithilfe künstlicher Intelligenz automatisierte API-Szenariotests erstellt. Dadurch werden die technischen Fähigkeiten verringert, die für die Einführung von API-Tests erforderlich sind, und Sie können eine umfassende, skalierbare API-Teststrategie erstellen das Team und die Organisation. Es funktioniert so:

Der Smart API Test Generator überwacht den Hintergrundverkehr, während Sie manuelle Tests ausführen, und sendet ihn an seine Engine für künstliche Intelligenz, die API-Aufrufe identifiziert, Muster erkennt, die Beziehungen zwischen den API-Aufrufen analysiert und automatisch vollständige, aussagekräftige API-Testszenarien generiert. nicht nur eine Reihe von API-Testschritten.

API-Tests zugänglicher machen

Der Smart API Test Generator macht das Testen von API-Tests für Testteams einfacher, da diese API-Testszenarien mithilfe von Testpraktiken erstellt werden, die sie bereits durchführen. Und im Gegensatz zu manuellen oder sogar automatisierten UI-Tests hilft die aufgezeichnete API-Aktivität Testern, besser mit Entwicklern zusammenzuarbeiten, mit einem einzigen Artefakt, das von beiden Teams leicht geteilt und verstanden werden kann, und kann die Grundursache von Fehlern besser diagnostizieren als ein komplexer UI-Test Dazu muss die gesamte Anwendung zusammengestellt werden.

Auf der anderen Seite bleiben Entwickler und Tester bei nur UI-Tests in ihren Kommunikations- und Debugging-Techniken eher isoliert - was häufig zu langen Wartezeiten und Iterationen zwischen Fehlereinführung, Fehlererkennung und Fehlerbehebung führt.

Die Leistungsfähigkeit von API-Testszenarien

API-Interaktionen, die während des UI-Tests aufgezeichnet wurden, erfordern eine Organisation in Szenarien oder Anwendungsfällen. Die künstliche Intelligenz des SOAtest Smart API Test Generator hilft beim Erstellen von Szenarien, die auf den Beziehungen zwischen den verschiedenen API-Aufrufen basieren.

Ohne den Smart API Test Generator, der diese Hebelwirkung nutzt, müssten Benutzer Zeit damit verbringen, ihre Testfälle zu untersuchen, nach Mustern zu suchen und die Beziehungen manuell zu erstellen, um jedes Testszenario zu bilden. Darüber hinaus bietet Parasoft SOAtest eine intuitive, UI-gesteuerte Methode zur Beschreibung von Assertions, mit der Tester komplexe Assertionslogiken ausführen können, ohne Code schreiben zu müssen. Ohne dies codieren Benutzer jede Behauptung von Hand und verpassen möglicherweise eine oder bauen sie falsch auf. Diese API-Tests können dann mithilfe visueller Tools und werkzeuggestützter Logik erweitert werden, um Testsuiten in größerem Maßstab zu erstellen.

Fazit

Obwohl Softwareteams den Wunsch nach einer idealen Verteilung von Unit-, API- und UI-Tests anerkennen, besteht die Realität darin, dass Ihr durchschnittliches Team durchschnittlich Unit-Tests durchführt und sich immer noch auf UI- und Systemtests im Spätstadium verlässt. API-Tests bieten einen idealen Kommunikationsmechanismus zwischen Entwicklern und Testern mit einem hohen Grad an wartbarer Automatisierung, der auf Leistungs- und Sicherheitstests ausgeweitet werden kann.

Wenn Sie diese Tests nach links verschieben und früher im Software-Lebenszyklus ausführen, müssen Sie kritische Sicherheits- und Architekturfehler frühzeitig erkennen, da sie leichter zu diagnostizieren und weniger riskant zu beheben sind. Nutzung der Automatisierung von Parasoft SOAtest  Intelligenter API-TestgeneratorAPI-Tests sind leichter zugänglich und der Zeitaufwand für die Erstellung aussagekräftiger Testszenarien kann erheblich reduziert werden.

Beschleunigen Sie die Erstellung von API-Tests mit künstlicher Intelligenz

Von Markus Lambert

Mark, Vice President of Products bei Parasoft, ist dafür verantwortlich, dass Parasoft-Lösungen den Unternehmen, die sie einsetzen, einen echten Mehrwert bieten. Mark ist seit 2004 bei Parasoft und arbeitet mit einem breiten Querschnitt von Global 2000-Kunden zusammen, von spezifischen Technologieimplementierungen bis hin zu umfassenderen Initiativen zur Verbesserung von SDLC-Prozessen.

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