So gehen Sie über Record-and-Replay hinaus, um automatisierte API-Tests besser zu automatisieren
Von Chris Colosimo
26. Juni 2018
8 min lesen
Anstatt einfach Datenverkehr zu sammeln, aufzuzeichnen und wiederzugeben, können Sie künstliche Intelligenz verwenden, um die API-Aktivitäten in aussagekräftige, wiederverwendbare und erweiterbare Tests zu organisieren. Es ist eine Erweiterung des Testens von Aufzeichnungen und Wiederholungen, jedoch mit mehr Automatisierung.
Vor ein paar Wochen haben wir eine neue Funktion in veröffentlicht Parasoft SOAtest genannt Intelligenter API-Testgenerator. Ich wurde geeked. Diese Technologie ist zu Recht wegweisend - sie verwendet künstliche Intelligenz, um manuelle UI-Tests in automatisierte API-Tests umzuwandeln. Sie benötigen also weder Fachwissen in API-Tests noch die Fähigkeit, überhaupt Code zu schreiben, um loszulegen. Es ist alles ohne Skript und wird über ein einfaches Plugin für Chrome aktiviert, sodass Sie kein großes Tool-Set installieren müssen, um es zu verwenden.
Aber auf der STAREAST-Testkonferenz im Mai, auf der ich einen langen Vortrag darüber hielt, wie großartig diese Technologie ist, begegnete ich immer wieder Menschen, die mich fragten, wie sich dies von den bereits auf dem Markt erhältlichen Aufnahme- und Wiedergabetechnologien unterscheidet.
Hinzufügen von KI zum Aufzeichnen und Wiederholen von Tests
Die Antwort ist künstliche Intelligenz und maschinelles Lernen… aber warum? KI um der KI willen ist bedeutungslos - Warum müssen wir API-Tests künstliche Intelligenz hinzufügen? Nun, wir brauchen es, weil das Testen von Aufzeichnungen und Wiederholungen einfach nicht ausreicht. Ich werde gleich mehr darauf eingehen.
Um die Einführung von API-Tests wirklich zu skalieren und die Probleme zu lösen, mit denen Testteams mit der Entwicklung Schritt halten, benötigen Sie mehr! Anstatt nur Datenverkehr zu sammeln, aufzuzeichnen und wiederzugeben, wollten wir den Benutzern helfen, erfasste API-Aktivitäten automatisch zu identifizieren und in sinnvolle, wiederverwendbare und erweiterbare Tests zu organisieren. Wir mussten die Akzeptanzgrenze für API-Tests senken und mehr Tester einbeziehen.
Aber lassen Sie mich zunächst erklären, warum dies so wichtig ist.
Warum brauchen wir überhaupt API-Tests?
In der Vergangenheit haben sich Unternehmen auf UI-Tests als primäre Testpraxis verlassen, da diese zumindest anfänglich einfach und intuitiv zu definieren und auszuführen sowie leicht zu automatisieren sind. Es gibt eine niedrige Eintrittsbarriere und sie kann über ein großes Team von Testern skaliert werden.
Die Herausforderung bei dieser exklusiven Abhängigkeit von manuellen und UI-Tests sind jedoch die versteckten Kosten. Jeder, der mit Selenium gearbeitet hat, weiß, dass es schwierig wird, wenn sich die Benutzeroberfläche ändert und Sie Ihre Skripte aktualisieren müssen. Tatsächlich haben wir festgestellt, dass bis zu 80% der Testzeit entweder für die Ausführung manueller UI-Tests oder für die Behebung automatisierter UI-Tests aufgewendet werden, die aufgrund von Anwendungsänderungen fehlerhaft sind. Darüber hinaus können UI-Tests erst ausgeführt werden, wenn die vollständige Anwendung verfügbar ist. Wenn ein Fehler entdeckt wird, entstehen hohe Nacharbeitskosten, da die Anwendung vor dem Testen auseinandergerissen, repariert und wieder zusammengesetzt werden muss fortsetzen. Diese Fehlererkennung im späten Zyklus führt häufig zu erheblichen Verzögerungen bei der Freigabe und erhöht die Gesamtkosten für das Testen.
Ergänzen der UI-Tests durch API-Tests
Um die Abhängigkeit von UI-Tests zu ergänzen und zu verringern, können Unternehmen API-Tests nutzen, die viele dieser Probleme lösen, indem sie wartbare End-to-End-Szenarien bereitstellen, die nicht nur für Funktionstests wiederverwendet werden können. API-Tests schaffen einen guten Kommunikationskanal zwischen Entwicklern und Testern, da sie dazu beitragen, das Verhalten der API in konkreten, realistischen Begriffen zu dokumentieren. Die Verlagerung der Diagnose und Behebung von Fehlern und Sicherheitslücken, die durch API-Tests festgestellt wurden, auf einen früheren Zeitpunkt im Lebenszyklus hat sich bei der Erreichung von Zeitplan- und Qualitätszielen auszahlt.
Organisationen haben sich jedoch schwer getan, sie anzunehmen API-Testmethoden denn selbst großartige API-Testtools haben in der Vergangenheit einfach nicht genug Hilfe geleistet. Um API-Testtools effektiv zu nutzen, benötigen Tester genaue Kenntnisse der APIs, die sie zu testen versuchen, einschließlich der Verwendung der APIs durch die betreffende Anwendung, was spezielle Fähigkeiten und Fachkenntnisse erfordert. Und Entwickler haben nicht die Zeit, sie zu testen, sodass diese äußerst vorteilhafte Praxis vermieden wird – unhaltbar für Tester und unerwünscht für Entwickler.
Erstellen von API-Tests aus dem Datenverkehr („Aufzeichnen und Wiederholen von Tests“)
Um diese Herausforderung zu lösen, hatten Unternehmen für funktionale Testautomatisierung vor vielen Jahren die Idee, API-Aktivitäten aufzuzeichnen und API-Tests aus dem Datenverkehr zu erstellen. Dies war leistungsstark, da Sie durch einfaches Aufzeichnen der Transaktionen zwischen der Anwendung und dem Backend-System die Aktivitäten der APIs erfassen konnten, einschließlich der Art und Weise, wie die API-Aufrufe die übergebenen Daten umstrukturierten.
Mit dieser Technologie konnten Sie die Szenarien aufzeichnen, die in den Backend-Systemen stattfanden. Dies half nicht-technischen Benutzern zu verstehen, welche APIs aufgerufen wurden, und ein grundlegendes Verständnis der Daten zu erhalten, die beim Aufrufen der einzelnen APIs verwendet wurden. Das einfache Sammeln von Datenverkehr half ihnen jedoch nicht dabei, ihre Tests zu verbessern oder zu lernen, wie sie ihre Tests warten oder skalieren können. Es konnte ihnen nicht die technischen Fähigkeiten beibringen, die erforderlich sind, um verschiedene Tests mit all den verschiedenen Nachrichtenformaten und Protokollen zu erstellen, die von APIs verwendet werden, und es bot allein nicht genügend Hilfe, um es einem nicht-technischen Benutzer zu ermöglichen, sich der Praxis zu nähern. Es ist ein langer Weg zwischen einer Verkehrsaufzeichnung und einem voll funktionsfähigen API-Testszenario.
Warum Aufnahme und Wiedergabe nicht ausreichen
Und hier haben wir über den nächsten Schritt nachgedacht, um die Hindernisse für die Einführung von API-Tests abzubauen. Wir haben nachgedacht. Das einfache Aufzeichnen des Netzwerkverkehrs zwischen der Benutzeroberfläche des Testers und der Zielanwendung reicht nicht aus, um API-Tests so weit zu automatisieren, dass ihre Nützlichkeit erkannt wird. Es ist vielleicht analog zu einer MP3-Audioaufnahme. Sie können es wiedergeben, um das Lied zu hören, aber es enthält keine Informationen darüber, wie das Lied erstellt wurde oder welche Instrumente verwendet wurden. Das Lied kann nicht geändert oder erweitert werden.
Berücksichtigen Sie beim einfachen Aufzeichnen und Wiederholen die folgenden Probleme:
Was ist, wenn sich meine Benutzeroberfläche ändert?
Benutzeroberflächen sind während der Entwicklung in ständigem Wandel, und die Wartung der UI-basierten Testautomatisierung ist zeitaufwändig. Benutzeroberflächen stellen nur eine bestimmte, möglicherweise eingeschränkte Darstellung der zugrunde liegenden Geschäftslogik der Anwendung bereit, und das Verlassen auf Aufzeichnung und Wiedergabe ist sowohl einschränkend als auch anfällig für Unterbrechungen durch häufige Änderungen.
Was ist der richtige Verkehr?
Anwendungstests auf Systemebene über die Benutzeroberfläche führen zu viel Netzwerkverkehr. Selbst für das geschulte Auge ist es schwierig zu erkennen, welcher Datenverkehr Teil eines tatsächlichen Testszenarios ist, das auf der Ebene der Benutzeroberfläche stattfindet. Das Verlassen auf die menschliche Interpretation des Netzwerkverkehrs ist sowohl zeitaufwändig als auch fehleranfällig. Darüber hinaus ist es in der Regel keine Fähigkeit, die Tester haben, so dass sie sich auf Entwickler verlassen müssen, um zu helfen.
Wie verbinde ich diese Testschritte mit Szenarien?
Das Erstellen von Testszenarien aus grundlegenden Verkehrsaufzeichnungen ist schwierig. Wenn mehrere Tests erforderlich sind, um ein Szenario zu erstellen, vervielfacht sich diese Schwierigkeit. Das Wiedergeben einer Verkehrsaufzeichnung anstelle eines Szenarios ist oft schwierig, da genaue Voraussetzungen für den ursprünglichen Test erforderlich sind. Darüber hinaus kann es beispielsweise unmöglich sein, denselben Test wiederholt abzuspielen, was für die Erstellung leistungs- oder sicherheitsrelevanter Tests wichtig ist.
Wie kann ich das Wissen erfassen und wiederverwenden?
Eine Verkehrsaufzeichnung ist einfach eine Summe aller Netzwerkaktivitäten während einer Testsitzung. Es gibt kein inhärentes Verständnis der zugrunde liegenden Nachrichtenübermittlung oder der Beziehung zu API-Diensten. Ohne dies ist es unmöglich, diese Aufzeichnungen für andere Zwecke zu erweitern oder sogar Änderungen vorzunehmen, um sie an neue Anforderungen anzupassen. Sie sind oft in der Zeit eingefroren und nur für den Zeitraum nützlich, in dem sie aufgezeichnet wurden.
Zurück zur künstlichen Intelligenz
Hier kommt künstliche Intelligenz ins Spiel, so dass die Verkehrsaufzeichnung nicht nur stattfinden, sondern für die Benutzer zu einem echten, umsetzbaren Wert erweitert werden kann. Deshalb haben wir die entwickelt Intelligenter API-TestgeneratorSo konnten wir einen Ort für unerfahrene API-Tester schaffen, an dem sie mit dem Testen von APIs beginnen können, ohne eine einzige Codezeile schreiben zu müssen. So können Benutzer schnell mit dem Erstellen vollständiger, aussagekräftiger Testszenarien beginnen und diese API-Tests sogar auf Sicherheits- und Leistungstests ausweiten, indem sie die einfache, intuitive Benutzeroberfläche von nutzen Parasoft SOAtest.
Wie funktioniert es?
Während Sie Ihre Benutzeroberfläche testen, überwacht der Smart API Test Generator die zugrunde liegenden API-Aufrufe, die an Ihre Anwendung gesendet werden, genau wie ein Verkehrssammler, und verwendet dann künstliche Intelligenz, um Muster zu erkennen und die Beziehungen zwischen diesen API-Aufrufen zu verstehen. Es kann dann automatisierte API-Testszenarien generieren, die dieselben Aktionen wie Ihre UI-Tests ausführen, jedoch vollständig automatisiert und leicht erweiterbar sind.
Im Wesentlichen ist dies:
Aber warum ist das wichtig? Hier sind einige der Vorteile, die diese Methode bietet:
- Reduziert den Zeitaufwand für die Ermittlung der richtigen Methode zum Erstellen von API-Tests, indem die in Ihrem Browser ausgeführten Aktionen automatisch in automatisierte API-Tests konvertiert werden, die dieselben Aktionen modellieren, die Sie in der Benutzeroberfläche ausgeführt haben (in der richtigen Reihenfolge).
- Erleichtert das Erstellen aussagekräftiger, umfassender API-Tests, indem automatisch vollständige Testszenarien basierend auf den Beziehungen zwischen den verschiedenen API-Aufrufen erstellt werden. (Ohne dies müssen Benutzer Zeit damit verbringen, Testfälle zu untersuchen, nach Mustern zu suchen und die Beziehungen manuell zu erstellen, um jedes Testszenario zu bilden.)
- Fügt automatisch Assertions und Validierungen hinzu, um sicherzustellen, dass Ihre APIs wie beabsichtigt funktionieren, sodass Sie selbst die komplexesten Assertionslogiken ausführen können, ohne Code schreiben zu müssen (oder das Risiko einzugehen, dass sie falsch erstellt werden).
- Reduziert den Zeitaufwand für die Wartung von Tests. Da es ohne Skript ist, müssen Benutzer keine Zeit damit verbringen, Code für Testfälle neu zu schreiben, wenn sich ein Dienst ändert.
- Hilft Entwicklungs- und Testteams bei der Zusammenarbeit mit einem einzigen Artefakt, das von beiden Teams leicht geteilt und verstanden werden kann (und die Hauptursache für Fehler besser diagnostiziert als ein UI-Test).
- Legt die Grundlage für eine skalierbare API-Teststrategie, indem Benutzer dabei unterstützt werden, Tests, Testflusslogik und Datenlösungen zu erweitern, um den vollen Umfang der API-Testabdeckung zu erreichen, die zur vollständigen Validierung von Anwendungen in der angegebenen kurzen Zeit erforderlich ist.
Zusammenfassend lässt sich sagen, dass das Tool automatisch Tests erstellt, die auf einer aussagekräftigen Interpretation der erfassten API-Aktivität basieren, und die einfache Erweiterung und Wartung dieser Tests unterstützt, sodass sich ihr Wert während des gesamten Software-Lebenszyklus vervielfacht.
Gehen wir jetzt noch einen Schritt weiter
All dies ist an sich gut. Der Teil, über den ich mich noch mehr freue, ist der Teil, in dem der Smart API Test Generator den Benutzern hilft, die Beziehungen zwischen den UI-Aktionen und den API-Aufrufen zu verstehen, was es den Testern erleichtert, sich weiterzubilden und eine umfassende API-Testpraxis anzuwenden . Da API-Tests vollständig automatisiert und einfach skalierbar sind, können Teams die Gesamtkosten für Qualität senken und gleichzeitig verzögerte Veröffentlichungen vermeiden.
Lassen Sie uns das ein wenig aufschlüsseln. Weil die Intelligenter API-Testgenerator übernimmt das schwere Heben und bietet Testern einen einfachen, skriptlosen Ort zum Erstellen von API-Tests. Es senkt den technischen Einstiegspunkt für API-Tests und bringt Anfänger in die API-Testwelt und in das benutzerfreundliche Parasoft SOAtest-Ökosystem, von dem Benutzer profitieren leistungsstarke visuelle Tools, die einfach anzuwenden und zu verwenden sind.
Deshalb bin ich aufgeregt
Oh, die Implikationen! Die Erfassung der API-Aktivitäten während des System- und UI-Tests reicht nicht aus, um API-Tests zu automatisieren, aber das ist alles, was die Branche bisher hatte. Die Abhängigkeit von den Voraussetzungen macht diese Aufzeichnungen weniger wiederverwendbar und für andere Zwecke fast unmöglich zu erweitern. Ganz zu schweigen von der Schwierigkeit, aussagekräftige Testszenarien aus komplexem Verkehr zu erstellen, was die meisten Tester nicht können.
Aber das spielt keine Rolle mehr! Jetzt, da wir den Parasoft SOAtest Smart API Test Generator haben, können Benutzer künstliche Intelligenz für das schwere Heben nutzen. Anfängliche API-Tester können damit beginnen und lernen, wie API-Tests funktionieren, und erfahrene API-Tester können es nutzen, um wesentlich effizienter zu sein (dies ist eine der Hauptmethoden, die wir jetzt hier bei Parasoft verwenden). Letztendlich können Unternehmen Zeit und Geld sparen, indem sie mithilfe einer Maschine aussagekräftige, erweiterbare und wiederverwendbare Tests erstellen. Es is 2018, richtig?