Wie Künstliche Intelligenz API-Tests revolutioniert

Autor / Redakteur: Christopher Colosimo * / Sebastian Gerstl |

Eine solide API-Teststrategie befähigt Unternehmen, maximalen Nutzen aus agilen Entwicklungsmethoden zu ziehen. Künstliche Intelligenz kann die Automatisierung dieser Prozesse beschleunigen.

Anbieter zum Thema

Testpyramide mit den unterschiedlichen Testarten. API-Tests haben sich noch nicht weitläufig als bevorzugte Testmethode durchgesetzt. KI-gestützte Tools können aber den Testautomatisierungsvorgang enorm beschleunigen - und auch für Einsteiger zugänglicher machen.
Testpyramide mit den unterschiedlichen Testarten. API-Tests haben sich noch nicht weitläufig als bevorzugte Testmethode durchgesetzt. KI-gestützte Tools können aber den Testautomatisierungsvorgang enorm beschleunigen - und auch für Einsteiger zugänglicher machen.
(Bild: Parasoft)

Agil bezeichnet eine Softwareentwicklungs-Methodik, in der typische Aktivitäten im SDLC (Software Development Lifecycle), die sich normalerweise über die gesamte Dauer eines Projekts erstrecken, in deutlich kleinere als Sprints bezeichnete Teilabschnitte unterteilt werden. Ein Sprint dauert normalerweise 2 bis 3 Wochen, und die Entwicklungsaktivitäten in einem Sprint sind auf neue Features und Verbesserungen ausgerichtet (siehe Bild 1).

Am Beginn eines Sprints steht die Design- und Erschaffungsphase, in der neue Funktionalität in Anwender-Storys aufgeteilt und eingegrenzt wird, bevor anschließend sofort die Entwicklung beginnt, um etwas zu bauen. Am Ende eines Sprints müssen nicht unbedingt Release-Aktivitäten stehen, jedoch wird in jedem Fall Feedback eingeholt, bevor der Prozess immer und immer wieder von vorn beginnt. Das agile Konzept verleiht enorme Flexibilität, da man das während eines Sprints eingeholte Feedback sofort beim nächsten Sprint anwenden kann, um bei der Lenkung, Gestaltung und Fokussierung des Projekts zu helfen. Dieses Verfahren bewährt sich während der Entwicklung hervorragend. Kompliziert wird es aber, wenn es um das Testen im Zuge eines Sprints geht.

Bildergalerie
Bildergalerie mit 5 Bildern

Aus logischen Gründen bekommt das Test-Team erst die Möglichkeit zum Testen der neuen Features und Verbesserungen, wenn ein Sprint bereits recht weit fortgeschritten ist. Denn zuvor muss das Entwicklungsteam die gesamte Funktionalität realisieren. Folglich hinkt das Testen von Anfang an immer etwas hinter der Entwicklung her.

Testen kann nicht mit der Entwicklung Schritt halten

Im weiteren Verlauf des Sprints verschärft sich das Problem weiter. Dies liegt an dem Testverfahren, das üblicherweise zum Validieren der Applikation genutzt wird und in einer manuellen Interaktion mit der Benutzeroberfläche (UI) besteht. Dieses so genannte UI-Testing ist wegen seiner Einfachheit das am weitesten verbreitete Testverfahren, weil sich Aktionen in der UI einfach mit der Anwender-Story in Beziehung setzen lassen. Das Verfahren kann außerdem einfach auf einen großen Bestand an Testern skaliert werden, und wegen der Aufzeichnungs- und Wiedergabemöglichkeit ist auch eine erste Automatisierungsrunde einfach umsetzbar.

Gleichwohl ist das UI-Testing mit einer Vielzahl von Problemen behaftet:

  • Verdeckte Kosten durch die Ineffizienz des UI-Testings.
  • UI-Testing prüft eine Applikation nicht umfassend.
  • Da Tests keinen Zugriff auf den Code haben, ist es für sie schwierig, die von ihnen auf der UI ausgeführten Aktionen auf den zugrundeliegenden Quellcode abzubilden.
  • Es ist schwierig, die UI-Automatisierung zu pflegen.

Jeder dieser Faktoren kann erhebliche Verzögerungen in einem Sprint auslösen. Berücksichtigt man aber, wie ein traditioneller Projektzyklus abläuft, geht es um eine Serie von Sprints, an die sich ein Hardening- oder Regressionszyklus anschließt. Bei jedem Schritt hat das Testen seine Schwierigkeiten, mit der Entwicklung Schritt zu halten. Wegen der traditionell verwendeten Testtechniken aber können die Tester zwar neue Features und Fähigkeiten meist validieren, aber keine vollständige Testabdeckung erreichen. Dies begründet sich aus den Fähigkeiten der auf dem Markt verfügbaren Tools.

Können API-Tests das agile Konzept retten?

Analysten und die Industrie sind sich einig, dass API-Tests die Grundursachen von Defekten besser einkreisen können als UI-Tests, da sie näher am Code, einfacher zu automatisieren und beständiger gegen Änderungen an der Applikation sind. Zusätzlich bieten API-Tests eine bessere Art der Defektreproduktion sowie der Kommunikation zwischen Entwicklungs- und Test-Team, weil das Testartefakt die Konvergenz dieser beiden Bereiche wiedergibt.

Das Testen auf der API-Ebene ist insbesondere für das agile Konzept ideal geeignet: Es ermöglicht den Testern das Validieren der Funktionalität unter Berücksichtigung der komprimierten Zeitachse, und API-Tests sind in hohem Maße wiederverwendbar. Dazu kommen weitere Vorteile wie kürzere Zeit bis zu Defektbehebung verglichen mit UI-Tests, sie sind automatisierungstauglich und beständiger gegen Änderungen als UI-Tests.

API-Tests können die agile Entwicklung tatsächlich retten, indem sie es ermöglichen, eine Applikation in einer früheren Entwicklungsphase einfacher zu testen, und indem sie zwischen Entwicklung und Test einen effektiven Kommunikationsmechanismus installieren, der gegen Änderungen in hohem Maße beständig ist. Unternehmen, die API-Tests als grundlegendes Element ihrer Teststrategie nutzen, können die gewonnene Agilität nutzen, um einen Vorsprung vor den Test-Herausforderungen herauszuarbeiten.

Weshalb setzen Organisationen nicht auf API-Tests?

Derzeit stützt sich die Industrie den Fokus aber nach wie vor auf UI-Tests. Die Verantwortung für die API-Tests liegt bei den Entwicklern und den Testern – wenn auch auf unterschiedlicher Weise. Genau diese Trennung aber führt zu der geringen Testabdeckung der API-Tests. Das Testen auf der API-Ebene erfordert spezielle Fähigkeiten und Tools, um eine umfassende Testabdeckung zu erzielen. Besonders intuitiv ist das nicht. Es gibt Tools auf dem Markt, die beim Aufbau einer API-Teststrategie helfen sollen. Weil die Mehrzahl dieser Tools ein hohes Maß an technischem Fachwissen voraussetzt – ob zum Erstellen von umfassenden API-Tests oder zur grundsätzlichen API-Funktionsweise – neigen Unternehmen dazu, sich in Sachen API-Test auf das absolute Minimum zu beschränken. Das ist das genaue Gegenteil von dem, was man für die agile Entwicklung braucht.

Künstliche Intelligenz für die Testautomatisierung

Die einzige Möglichkeit, das Problem zu lösen, ist die Bereitstellung von Tools, die dem API-Test die Komplexität nehmen. Mithilfe von KI (Künstlicher Intelligenz) lässt sich die Herausforderung, die API-Tests für Tester in der gesamten Branche darstellen, entschärfen. Hier setzt beispielsweise Parasoft mit seinem SOAtest Smart API Test Generator an. Dieses Plug-in für Chrome verwandelt mit Hilfe von KI manuelle UI-Tests in automatisierte API-Tests. Das reduziert die erforderlichen technischen Fähigkeiten zur Anwendung von API-Tests, und Unternehmen erhalten Hilfestellung beim Aufbau einer umfassenden und skalierbaren API-Teststrategie.

Während man die manuellen Tests ausführt, überwacht der Smart Generator den Hintergrund-Traffic, analysiert ihn und stellt mit KI-Unterstützung einen sinnvollen Satz an API-Testszenarien zusammen. Beim Erstellen dieser Tests identifiziert der Smart Generator zunächst die API-Aufrufe, deckt dabei Muster auf und analysiert die Beziehungen zwischen ihnen, sodass er nicht nur eine Reihe von API-Tests, sondern umfassende API-Testszenarien erstellen kann.

Den Testern liefert der Smart Generator eine einfache Ausgangsbasis zum Erstellen von API-Tests, und schwierige Aktivitäten beim manuellen Erstellen von API-Tests bleiben ihnen so erspart, z.B. das Herausfinden der korrekten Servicedefinition, das Verstehen der Nutzdaten oder das sich immer wiederholende Ausführen eines Tests mit dem Ziel, die Beziehungen zwischen Anfragen und Reaktionen zu verstehen, damit mit dem Erstellen von Assertions begonnen werden kann. Diese übernimmt der Smart Generator automatisch aufgrund der von ihm beobachteten Aktivitäten, während der Tester die UI nutzt. So erhalten unerfahrene Anwender ein besseres Verständnis des API-Tests im Allgemeinen, weil die auf der UI ausgeführten Aktionen den daraus erstellten API-Tests zugeordnet werden können. Zudem entsteht ein tieferes Verständnis der Beziehungen zwischen der UI und den zugrundeliegenden API-Aufrufen, was künftigen API-Testinitiativen zugutekommt. Vorteilhaft sind auch visuelle, leicht erlernbare Tools. Damit können auch Neulinge in kurzer Zeit schon mit dem Erstellen leistungsfähiger API-Szenarien beginnen.

Um maximalen Nutzen aus der Umstellung auf Agile Entwicklung zu ziehen, sollten Testwerkzeuge gezielten Support bieten, also die mit API-Tests verbundenen Komplexitäten verringern und Einstiegshürden senken. Mit dem richtigen Tool können sich Unternehmen auf die Ausarbeitung einer für ihre Anforderungen passenden, wartbaren und skalierbaren Teststrategie konzentrieren.

* Christopher Colosimo ist Product Manager für funktionale Testlösungen bei Parasoft in Los Angeles.

(ID:45583530)