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 >>

Revolutionieren Sie die agile Entwicklung, indem Sie den API-Tests KI hinzufügen

Von Chris Colosimo

1. Mai 2018

11  min lesen

In der neuesten Version von Parasoft SOAtest haben wir unseren Kunden künstliche Intelligenz zur Verfügung gestellt, damit sie mit einer effektiven API-Teststrategie beginnen und skalieren können.

Parasoft hatte schon immer eine Kernaufgabe - die Vereinfachung der Testautomatisierung - und dies zeigt sich in der gesamten Parasoft-Tool-Suite, von der statischen Analyse bis zur Umgebungssimulation mit Service-Virtualisierung. Die Idee von einfach war jedoch noch nie so präsent wie in der neuesten Version von SOAtest. In dieser Version haben wir die mit API-Tests verbundenen Komplexitäten beseitigt, indem wir eine einfache und elegante Lösung erstellt haben, mit der Unternehmen nicht nur mit API-Tests beginnen, sondern auch die Grundlage für eine skalierbare und wartbare API-Teststrategie legen können, die eine agile Entwicklung unterstützt.

API-Tests „einfach“ machen

Unsere CEO Elizabeth Kolawa hatte eine einfache Richtlinie, als wir über die Entwicklung dieser neuen Testautomatisierungsidee diskutierten. Sie sagte, "mach es einfach." Diese einfache Aussage führte zu einer eingehenden Analyse der aktuellen Herausforderungen, die mit dem Testen in der Neuzeit verbunden sind, und führte zu einer Schlüsselrealisierung:

Die Tools in der Software-Testbranche waren nicht auf Einfachheit für die agile Welt ausgerichtet.

Agile ist in erster Linie eine entwicklungsorientierte Aktivität. Im Grunde genommen ist Agile eine Softwareentwicklungsmethode, bei der typische SDLC-Aktivitäten, die sich traditionell über die Dauer eines Projekts erstrecken, in viel kleinere Teile unterteilt werden, die als Sprints bezeichnet werden. Normalerweise dauert ein Sprint 2 bis 3 Wochen. In einem Sprint konzentrieren sich die Entwicklungsaktivitäten auf neue Funktionen und Verbesserungen.

Ein Sprint sieht ungefähr so ​​aus:

Ein Sprint beginnt mit der Entwurfs- und Erstellungsphase, in der die neue Funktionalität in User Stories aufgeteilt und in den Bereich integriert wird. Anschließend beginnt die Entwicklung sofort mit der Erstellung von etwas. Am Ende des Sprints kann es zu Release-Aktivitäten kommen oder auch nicht, aber egal was passiert, Feedback wird eingeholt und dann beginnt ein weiterer Sprint und der Vorgang wiederholt sich immer wieder.

Mit Agile können Unternehmen einen Cent einschalten, da das während jedes Sprints gesammelte Feedback auf den nächsten Sprint angewendet werden kann und dabei hilft, das Projekt zu leiten, zu gestalten und zu fokussieren. Dies funktioniert gut für die Entwicklung, aber wenn Sie sich den Testabschnitt des Sprints ansehen, wird es langsam kompliziert.

Test erhält erst im Sprint und aus logischen Gründen Zugriff auf die neuen Funktionen und Verbesserungen. Das Testteam muss warten, bis das Entwicklungsteam die volle Funktionalität aufgebaut hat, sodass der Test von Anfang an immer ein wenig hinter der Entwicklung zurückbleibt.

Warum Test nicht mit der Entwicklung Schritt halten kann

Dieses Problem verschärft sich nur, wenn der Sprint fortgesetzt wird und Tester sich auf UI-Tests verlassen (manuelle Interaktion mit der Benutzeroberfläche). Das Testen von Benutzeroberflächen ist die häufigste Testpraxis, da es einfach zu verwenden ist - es ist einfach, Aktionen in der Benutzeroberfläche mit der User Story zu verknüpfen, es ist einfach, über eine große Anzahl von Testern zu skalieren, und aufgrund von Aufnahme- und WiedergabefunktionEs ist einfach, eine erste Runde der Automatisierung durchzuführen.

Es gibt jedoch viele Probleme beim Testen der Benutzeroberfläche:

  • Es gibt versteckte Kosten, die sich aus der Ineffizienz von UI-Tests ergeben. Die grundlegendste Herausforderung beim Testen der Benutzeroberfläche ist die Zeit, die die Entwicklung benötigt, um Fehler zu beheben, wenn ein UI-Test als Reproduktion durchgeführt wird. Wenn ein Tester mit der Fehlererkennung beginnt, beginnt er normalerweise mit explorativen Tests (methodisches Durchsuchen der Anwendung nach unerwartetem Verhalten). Wenn sie einen Defekt finden, müssen sie ihn für die Entwicklung reproduzieren. Dazu müssen „Schritte zur Reproduktion“ geschrieben werden. Wenn die Entwicklung diese Anweisungen erhält, müssen sie die Version der Anwendung finden, die der Test verwendet, sie aufstehen und die Schritte zur Ausführung der Benutzeroberfläche ausführen. Wenn sich der Fehler reproduziert, müssen sie diesen Fehler dem zugrunde liegenden Code zuordnen, um die Grundursache zu ermitteln. Die Entwicklung beginnt mit der Arbeit an einem Fix, bei dem die Anwendung auseinandergerissen, der Fehler behoben und die Anwendung neu erstellt werden muss, bevor die Qualitätssicherung erneut mit dem Testen beginnen kann. Dies verzögert den Softwarebereitstellungsprozess weiter und verlangsamt die gesamte Pipeline.
  • UI-Tests testen eine Anwendung nicht umfassend. Durch Testen auf der UI-Ebene wird der Prozessablauf einer Anwendung durchgehend überprüft, es muss jedoch nicht unbedingt die gesamte Breite der internen Komponenten des Systems getestet werden. Wenn neue Funktionen in eine Anwendung eingeführt werden, müssen häufig vorhandene Schnittstellen geändert oder aktualisiert werden. Auf einige dieser Komponenten kann bei Verwendung der neuen Funktionalität möglicherweise nicht zugegriffen werden, sie stellen jedoch erhebliche Risiken für das Unternehmen dar, wenn sie nicht getestet werden.
  • Test hat keinen Zugriff auf den Code, daher ist es für sie schwierig, die Aktionen, die sie in der Benutzeroberfläche ausführen, der zugrunde liegenden Quelle zuzuordnen. Infolgedessen bieten die Tests, die erstellt werden, keine vollständige API-Abdeckung. Sehr oft werden Dinge übersehen. Wenn es an der Zeit ist, den gesamten Regressionszyklus auszuführen, können kritische Fehler aufgedeckt werden. 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.
  • Es ist schwierig, die UI-Automatisierung aufrechtzuerhalten. Ein Hauptgrund, warum Tests Schwierigkeiten haben, mit der Entwicklung Schritt zu halten, ist, dass zu viel Zeit für die Verwaltung fehlerhafter UI-Tests aufgewendet wird. Tatsächlich werden bis zu 80% der Testzeit entweder für die manuelle Ausführung der UI-Tests oder für die Behebung automatisierter UI-Tests aufgewendet, die aufgrund von Anwendungsänderungen fehlerhaft sind.

Jeder der oben genannten Faktoren kann zu erheblichen Verzögerungen bei einem Sprint führen. Wenn Sie jedoch berücksichtigen, wie ein traditioneller Projektzyklus funktioniert, handelt es sich um eine Reihe dieser Sprints, gefolgt von einem Härtungs- oder Regressionszyklus.

Bei jedem Schritt des Weges bemüht sich der Test, mit der Entwicklung Schritt zu halten. Aufgrund der traditionell verwendeten Testtechniken können sie jedoch nie die gewünschten vollständigen und vollständigen Tests erhalten.

Es sieht ungefähr so ​​aus:

In der Regel können sie die neuen Funktionen und Fähigkeiten validieren, haben jedoch keine vollständige Testabdeckung.

Dies ist für viele Tester frustrierend, aber es ist nicht ihre Schuld - es ist nur die Natur des Tieres angesichts der Fähigkeiten, die auf dem Werkzeugmarkt vorhanden sind. Der gefährliche Teil ist, dass ohne diese Qualitätspraktiken Fehler in die Produktion gelangen und den wahrgenommenen Nutzen von Agilität untergraben.

Was ist mit API-Tests? Kann es agil sparen?

Alle sind sich einig, dass API-Tests die Grundursache von Fehlern genauer bestimmen können als UI-Tests, da API-Tests näher am Code liegen, einfacher zu automatisieren und widerstandsfähiger gegen Anwendungsänderungen sind. Außerdem bieten API-Tests eine bessere Form der Fehlerreproduktion und Kommunikation zwischen Entwicklung und Test, da das Testartefakt die Konvergenz dieser beiden Bereiche darstellt. (In einem kürzlich erschienenen Blog habe ich API-Tests untersucht, was es ist und wie man eine umfassende API-Teststrategie entwickelt. Das können Sie Lesen Sie es, um weitere Informationen über diese äußerst effektive Testpraxis zu erhalten.)

Das Testen auf API-Ebene ist eine hervorragende Methode für die agile Entwicklung, insbesondere weil es Testern ermöglicht, die Funktionalität anhand der komprimierten Zeitachse zu validieren, und API-Tests in hohem Maße wiederverwendbar sind.

Darüber hinaus bieten API-Tests die folgenden Vorteile, die agile Tests vereinfachen und unterstützen:

Geringere Zeit bis zur Fehlerbehebung im Vergleich zu UI-Tests

Wenn ein API-Test fehlschlägt, können Sie verdammt sicher sein, dass Sie ungefähr wissen, wo Sie im Code suchen müssen. Entwickler lieben es, API-Tests von Testern zu erhalten, da Entwickler sie direkt für ihre Anwendung ausführen können, ohne die gesamte Umgebung anschließen zu müssen. Und sie können sie kontinuierlich wiederholen, während sie beginnen, den Defekt zu beheben.

Die kürzere Zeit bis zur Fehlerbehebung bedeutet, dass die Entwicklung einen Fehler im Allgemeinen schneller beheben kann, wenn ein API-Test im Vergleich zum UI-Test bereitgestellt wird. Wenn wir die Zeitrahmen betrachten, die mit Agilität verbunden sind, ist dies genau das, was wir brauchen. Sobald ein Fehler entdeckt wurde, wird der Entwicklung ein API-Test zur Verfügung gestellt, mit dem sie den Fehler finden, beheben und validieren können, ohne die gesamte Anwendung neu erstellen zu müssen, was enorm viel Zeit spart. Dies ist genau die Geschwindigkeit, die wir für Agilität benötigen

API-Tests sind "automatisierungsbereit"

APIs stellen die unsichtbare Kommunikation dar, die hinter den Kulissen einer Anwendung stattfindet. Die Unsichtbarkeit der Kommunikation unterstützt den Automatisierungsprozess. Es ist wesentlich weniger komplex, eine Anwendung so weit zu bringen, dass Sie auf API-Ebene mit ihr kommunizieren können, als dies erforderlich wäre, um eine Anwendung in ihrer Gesamtheit zu aktivieren, damit Sie auf UI-Ebene arbeiten können.

Infolgedessen können API-Tests in früheren Phasen des SDLC problemlos in der Automatisierung ausgeführt werden. Die meisten meiner Kunden führen sie zur gleichen Zeit aus, zu der sie ihre Komponententests als Funktion des Code-Check-ins ausführen. Diese API-Testläufe können auch viel einfacher mit dem Bug-Tracking-System verknüpft werden, sodass die zugehörigen API-Tests bei der Behebung von Fehlern problemlos zwischen Entwicklung und Test hin und her übertragen werden können. Dies reduziert den gesamten Übergabeprozess erheblich, da Tester anstelle der Einreichung des Fehlers, der Bereitstellung der Schritte zur Reproduktion und des Wartens auf einen neuen Build aus der Entwicklung Benachrichtigungen vom Fehlerverfolgungssystem erhalten können, dass ein Fehler behoben wurde, und den automatisierten Test sehen können Fälle, die die Auflösung bestätigen. Diese API-Tests können einfach in eine Regressionssuite integriert und immer wieder verwendet werden.

API-Tests sind widerstandsfähiger gegen Änderungen als UI-Tests

Als Teil unserer Forschung haben wir festgestellt, dass 80% der Entwicklungszeit für die Verwaltung und Aktualisierung von UI-Tests aufgewendet wurden, die aufgrund von Änderungen fehlerhaft waren. Änderungen sind ein großer Zeitkiller, wenn es um Agilität geht, aber aufgrund der erhöhten Code-Check-Ins und verkürzten Zeitrahmen, die mit Agile eingeführt werden, sind Änderungen konstant.

Wenn sich eine Organisation ausschließlich auf UI-Tests verlässt, kann eine Änderung der Anwendung verheerend sein, da viele der Testfälle, die zur Validierung kritischer Funktionen erstellt wurden, einfach nicht mehr funktionieren. Eines der Hauptprinzipien von Agile ist die Fähigkeit, einen Cent einzuschalten. Dies bedeutet, dass sich Benutzeroberflächen und Funktionen ständig ändern und die Belastung durch die Unterstützung und Wartung dieser Tests für Testteams überwältigend werden kann. Auf der anderen Seite sehen API-Tests nicht einmal die Benutzeroberfläche. APIs verfügen außerdem über spezielle Versionsfunktionen, mit denen Tester die Stabilität beibehalten können, wenn sich die Anwendung ändert. Darüber hinaus werden mit dem Servicevertrag APIs definiert, mit denen Testfälle aktualisiert werden können, wenn die Anwendung diese Änderungen durchläuft.

API-Tests können agil sparen indem einer Organisation die Möglichkeit gegeben wird, eine Anwendung in früheren Entwicklungsstadien einfach zu testen und einen effektiven Kommunikationsmechanismus zwischen Entwicklung und Test bereitzustellen, der äußerst widerstandsfähig gegen Änderungen ist. Unternehmen, die API-Tests als grundlegenden Bestandteil ihrer Teststrategie verwenden, können die von ihnen bereitgestellte Flexibilität nutzen, um den Testherausforderungen wirklich einen Schritt voraus zu sein.

Warum testen Organisationen nicht APIs?

Trotz aller Vorteile, die sich aus API-Tests ergeben, konzentriert sich die Branche immer noch auf UI-Tests:

Wir glauben, dass dies daran liegt, dass die Tester es nicht wissen wie man die API testet und/oder nicht wissen, wie ihre Anwendung die APIs verwendet. Es ist nicht sofort ersichtlich, wo man mit dem API-Testen einer Anwendung beginnen soll, und zu verstehen, wie man alle „Puzzleteile“ sinnvoll zusammensetzt, erfordert Domänenkenntnisse der Anwendung.

Da Unternehmen immer noch dazu neigen, eine zentralisierte Testpraxis zu nutzen, benötigen Tester genaue Kenntnisse über die verschiedenen Anwendungsschnittstellen und wissen, wie sie richtig zusammengefügt werden. Es ist keine triviale Aufgabe.

API-Tests gelten immer noch als Niemandsland. In einer kürzlich durchgeführten Umfrage haben wir eine Reihe von Entwicklern und Testern befragt, die für API-Tests in ihrer Organisation verantwortlich sind.

  • 70% der Tester sagten das Entwicklung ist verantwortlich für API-Tests.
    • Warum? "Das Entwicklungsteam hat die APIs erstellt. Während der Erstellung sollten sie auch API-Tests erstellt haben, um zu überprüfen, ob sie wie beschrieben funktionieren."
  • 80% der Entwickler sagten das Test ist verantwortlich für API-Tests
    • Warum? „Wir haben diese APIs extern erstellt und mit einem Servicevertrag dokumentiert. Das Testteam sollte hereinkommen und überprüfen, ob die APIs wie beschrieben funktionieren. “

Wie Sie sehen, gibt es einige Unklarheiten darüber, wer letztendlich für API-Tests verantwortlich ist. Wir waren daran interessiert, dieses Problem zu lösen. Wir glauben, dass API-Tests in unterschiedlicher Form sowohl von Entwicklern als auch von Testern zu verantworten sind. Diese Trennung führt jedoch zu einer geringen Abdeckung von API-Tests.

Das Testen auf API-Ebene erfordert spezielle Fähigkeiten und Tools, um eine umfassende Testabdeckung zu erhalten. Es ist nicht intuitiv. Es gibt Tools auf dem Markt, die Unternehmen beim Aufbau einer API-Teststrategie unterstützen sollen. Die überwiegende Mehrheit von ihnen erfordert jedoch ein hohes Maß an technischem Fachwissen, um umfassende API-Tests zu erstellen. Darüber hinaus müssen Tester noch verstehen, wie die APIs funktionieren, was Domänenkenntnisse erfordert. Infolgedessen tendieren Unternehmen dazu, das Nötigste für API-Tests zu tun, was das Gegenteil von dem ist, was wir für Agilität benötigen.

Künstliche Intelligenz für die Testautomatisierung

Warum KI, warum jetzt? Die einzige Möglichkeit, dieses Branchenproblem zu lösen, besteht darin, Tools zu erstellen, die die Komplexität von API-Tests verringern. Wir arbeiten seit drei Jahrzehnten im Bereich der Automatisierung von Softwaretests. In dieser Zeit haben wir viele Daten gesammelt, um zu verstehen, was für die Erstellung eines umfassenden API-Tests erforderlich ist. Künstliche Intelligenz hilft uns heute, dieses Know-how zu nutzen, um die Herausforderung des API-Testens für Tester in der gesamten Branche zu vereinfachen.

Der Smart API Test Generator

Der neue Parasoft SOAtest Smart API-Testgenerator wurde von Grund auf neu entwickelt, um die Komplexität von API-Tests zu verringern. Der Smart API Test Generator ist ein Plugin für Chrome, das künstliche Intelligenz verwendet, um manuelle UI-Tests in automatisierte API-Tests umzuwandeln. Dies verringert die technischen Fähigkeiten, die für die Einführung von API-Tests erforderlich sind, und hilft Unternehmen beim Aufbau einer umfassenden skalierbaren API-Teststrategie.

Wie funktioniert es?

Konvertiert UI-Aktivitäten in automatisierte API-Tests

Der Smart Generator überwacht den Hintergrundverkehr, während Sie manuelle Tests ausführen, analysiert diesen Verkehr und verwendet künstliche Intelligenz, um automatisch einen aussagekräftigen Satz von API-Testszenarien zu erstellen. Beim Erstellen dieser API-Tests identifiziert der Smart Generator zuerst API-Aufrufe, erkennt dann Muster und analysiert die Beziehungen zwischen ihnen, sodass vollständige API-Testszenarien generiert werden können, nicht nur eine Reihe von API-Tests.

Reduziert die Lernkurve auf API-Tests

Der Smart Generator bietet Testern einen einfachen Ort, um mit dem Erstellen von API-Tests zu beginnen, sodass sie nicht die schwierigen Aktivitäten berühren müssen, die mit dem manuellen Erstellen von API-Tests verbunden sind, dh das Finden der richtigen Dienstdefinition, das Verstehen der Datennutzlast oder das Ausführen eines Tests und immer wieder, um die Beziehungen zwischen Anforderungen und Antworten zu verstehen, damit Sie mit dem Erstellen von Aussagen beginnen können.

Stattdessen führt der Smart Generator all dieses schwere Heben automatisch aus, basierend auf der Aktivität, die er beobachtet, während der Tester die Benutzeroberfläche verwendet. Dies hilft Anfängern, die API-Tests im Allgemeinen besser zu verstehen, da sie die Aktivitäten, die sie in der Benutzeroberfläche ausgeführt haben, den erstellten API-Tests zuordnen und ein besseres Verständnis der Beziehung zwischen der Benutzeroberfläche und den zugrunde liegenden API-Aufrufen aufbauen können treiben Sie zukünftige API-Testbemühungen voran.

Hilft Benutzern beim Erstellen umfassender API-Teststrategien

Obwohl API-Tests eine der effektivsten Methoden zum Testen von Software sind, haben viele Unternehmen diese Praxis nicht erfolgreich übernommen, da hierfür spezielle Fähigkeiten und Tools erforderlich sind. Um Unternehmen bei der Einführung einer umfassenden API-Testpraxis zu unterstützen, bietet Parasoft SOAtest visuelle Tools, die einfach anzuwenden sind, sodass Anfänger von API-Tests in kürzerer Zeit als mit anderen Tools leistungsstarke API-Szenarien erstellen können. Der Smart Generator schließt diese Lücke und bringt unerfahrene Benutzer in die Welt der API-Tests

Also, was bedeutet das?

Die agile Entwicklung hilft Unternehmen dabei, qualitativ hochwertige Software schneller auf den Markt zu bringen. Ohne die erforderliche Technologie, mit der Unternehmen ihre Anwendungen schnell und vollständig testen können, beeinträchtigen die mit einer beschleunigten Bereitstellung verbundenen Risiken die potenziellen Vorteile von Agile. Jetzt ist es an der Zeit, dass Unternehmen sich mit API-Tests vertraut machen.

Mit einer soliden API-Teststrategie können Unternehmen ihre agilen Transformationen optimal nutzen. Um dies zu verwirklichen, sollten Testtools für uns funktionieren, und die neueste Version von Parasoft SOAtest macht genau das. Der neue Smart API Test Generator von SOAtest verringert die Komplexität von API-Tests, senkt die Akzeptanzbarrieren und hilft Unternehmen dabei, eine verwaltbare, wartbare und skalierbare Teststrategie einzuführen. Probieren Sie es aus!

Von Chris Colosimo

Als Produktmanager bei Parasoft strategisiert Chris die Produktentwicklung der Funktionstestlösungen von Parasoft. Seine Expertise in der SDLC-Beschleunigung durch Automatisierung hat ihn zu wichtigen Unternehmensbereitstellungen wie Capital One und CareFirst geführt.

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