Beigeordneter Direktor - Intelligente Automatisierung
Wirksame Tests sind für den gesamten Softwareentwicklungsprozess unerlässlich. Aber die Testarchitekten und KMUs brauchen oft Hilfe bei der Auswahl des optimalen Tests für ihre Regressionsanforderungen.
Dank der Fortschritte in der Technologie können sie diese Hilfe in einer neuen Lösung namens Automatisierte, wirkungsbasierte Testauswahl und -priorisierung (Automated Impact-Based Test Selection and Prioritization) erhalten. Die Lösung bzw. der Ansatz ist Teil eines Konzepts, das als „Testlebenszyklus-Automatisierung“ bekannt ist und das Potenzial für menschliche Fehler erheblich reduziert. Dies wiederum hilft Unternehmen, ihren Benutzern fehlerfreie Anwendungen zu liefern.
Ich habe über dieses Konzept im Juli 2021 in einem Blogbeitrag geschrieben, in dem das Konzept der selbstheilenden Testautomatisierung vorstellte, die Algorithmen verwendet, um fehlerhafte Tests ohne menschliches Eingreifen zu korrigieren. Ein Auszug:
In den letzten Jahren hat sich in der Testbranche eine Idee immer mehr durchgesetzt. Während die Tests selbst automatisiert sind, werden die Nebenaktivitäten, die zum gesamten Testlebenszyklus gehören, wie die Skriptpflege, die Auswirkungsanalyse, die Fehlersuche usw., immer noch überwiegend manuell durchgeführt. Der Rückgriff auf manuelle Prozesse verlangsamt den Softwareentwicklungsprozess. Daher beobachten wir jetzt einen Paradigmenwechsel in der Philosophie, der die „Testlebenszyklus-Automatisierung“ und nicht nur die „Testautomatisierung“ umfasst. Das Aufkommen von KI-/ML-Techniken gepaart mit Programmierfähigkeiten trägt wesentlich zu dieser neuen Philosophie bei.
Das Ziel besteht also darin, den gesamten Testlebenszyklus zu automatisieren. Dies beschleunigt den SDLC-Prozess, da sich die Automatisierungsingenieure auf die Erstellung neuer Skripte und optimierte Tests konzentrieren können und weniger Zeit für die Wartung der alten Skripte aufwenden müssen.
Erkundung der Attraktivität einer wirkungsbasierten Testauswahl und -priorisierung
Heute befassen wir uns mit der wirkungsbasierten Testauswahl und -priorisierung, einem weiteren Rädchen im Getriebe der Testlebenszyklusautomatisierung, das auf großes Interesse stößt. Diese Testlösung gibt den Testverantwortlichen ein besseres Arsenal an die Hand, um menschliche Fehler zu begrenzen und die Qualität von Anwendungen zu verbessern.
Als wir mit unseren Kunden innerhalb von Virtusa sprachen, stellten wir einige eklatante Probleme fest:
Gehen wir der Sache auf den Grund.
Dieses Diagramm veranschaulicht einen typischen Sprint-Zyklus: Die Entwickler erstellen die Funktionen für die Anforderungen von Sprints, und die SDETs (Software Development Engineers in Tests) erstellen ihre automatisierten Testskripts. Jeder Build umfasst eine Auswirkungsanalyse, um die Regressionssuite zu bestimmen; die Testsuite wird anhand des Builds ausgeführt. Fehler werden protokolliert, und das Backlog fließt wieder in den nächsten Sprint ein.
Derzeit führen Unternehmen in der Regel eine Standard-Regressionssuite für jeden Build durch. Anschließend wählen die KMUs manuell zusätzliche Tests aus, die der Regressionssuite hinzugefügt werden. Der Fehler bei diesem Ansatz ist, dass er von der Erfahrung der KMUs abhängt – und nicht vom Änderungssatz für diesen Build.
Außerdem gibt es viele manuelle Schritte, die bei jedem Sprint Zeit und Mühe kosten. Und, was noch wichtiger ist, es ist anfällig für menschliche Fehler. Auf der anderen Seite können Unternehmen die gesamte Testsuite als Regression ausführen, um sich auf den Build verlassen zu können. Auch dies bedeutet einen zusätzlichen Zeit- und Arbeitsaufwand für den gesamten Testprozess.
So funktioniert die wirkungsorientierte Testauswahl und -priorisierung
Die effektivitätsorientierte Testauswahl und -priorisierung ist eine intelligente Lösung, die lernt und eine Zuordnung von Quellcode zu Tests entwickelt. Diese Methode verwendet Profiler und wendet Heuristiken aus historischen Daten an, um die Testsuite auf der Grundlage der Commit-Daten zu erstellen, die in jeden Build eingehen.
Sie besteht im Wesentlichen aus vier Schritten:
Diese Heuristiken zur Testpriorisierung können weiter verfeinert werden, indem bestimmte Algorithmen des verstärkten Lernens (Reinforced Learning, RL) eingesetzt werden, um die Liste der priorisierten Testfälle zu verfeinern. Dies geschieht durch die Auswahl und Priorisierung von Testfällen entsprechend ihrer Dauer, der letzten Ausführung und der Fehlerhistorie unter der Anleitung einer in den Algorithmus integrierten Belohnungsfunktion.
Hauptvorteile der wirkungsbasierten Testauswahl und -priorisierung
Die Vorteile dieses Prozesses liegen auf der Hand: Die Testteams können auf der Grundlage der Codeänderungen die optimale Regressionstestsuite auswählen. Dies wiederum verbessert die Produktqualität und optimiert das Kundenerlebnis. Der datengesteuerte Ansatz der Auswirkungsanalyse macht sie immun gegen menschliche Fehler und führt zu einer erheblichen Zeitersparnis bei der Bestimmung der Test-Regressionssuite. Dies ist besonders wichtig für Teams, die häufig Builds zum Testen erstellen müssen.
Die Automatisierung des Testlebenszyklus wird eine der wichtigsten bahnbrechenden Innovationen sein, die die Art und Weise, wie Tests durchgeführt werden, im kommenden Jahrzehnt verändern wird. Der Einsatz von KI-/ML-Techniken wird ein Katalysator und primärer Wachstumstreiber im Bereich der Softwaretests sein.
Beigeordneter Direktor - Intelligente Automatisierung
Ajit Rajshekar ist ein Testarchitekt mit mehr als 15 Jahren Erfahrung im Bereich Qualitätstechnik, hauptsächlich im Bereich Produktentwicklung (medizinische Geräte). Zu seinen Interessen gehören die Erforschung und Nutzung neuer Methoden/Werkzeuge in der Testautomatisierung und kognitive Intelligenz (KI/ML) im Test.
Abonnieren Sie den Newsletter, um über die neuesten Entwicklungen in der Branche auf dem Laufenden zu bleiben, einschließlich Einblicke in die Branche und innovative Lösungsmöglichkeiten.