Perspektive

Automatisierte, wirkungsorientierte Testauswahl und Priorisierung

Ajit Rajshekar,

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: 

  • Unternehmen, die kontinuierliche Integrations-/Testpipelines einsetzen, führen immer noch eine manuelle, wirkungsbasierte Testauswahl durch. 
  • Unternehmen wollen ihren Testaufwand optimieren und gleichzeitig die Wirkung der Tests in jedem Sprint maximieren.
  • Unternehmen müssen in jedem Sprint den ungetesteten Quellcode entdecken. 
  • Die Beteiligten wünschen sich ein Dashboard, das diese Informationen auf automatisierte Weise anzeigt. 

Gehen wir der Sache auf den Grund. 

Aktuelle Herausforderungen für das Automatisierungsteam

Aktuelle Herausforderungen für das Automatisierungsteam
Aktuelle Herausforderungen für das Automatisierungsteam

 

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

Image
Image

 

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:

  1. Zuordnung von Quellcode zu Testfall. Bei der Ausführung von Testfällen oder Testskripten setzt das Tool einen Software-Agenten ein. Der Agent versucht, die Testfälle auf die Quellcodedateien abzubilden, indem er Profiler verwendet, um den Bytecode der Anwendung zu instrumentieren und in einem Data Lake zu speichern.
  2. Heuristik der Testpriorisierung. Aus historischen Testausführungsaufzeichnungen und Fehleraufzeichnungen werden bestimmte Testpriorisierungsheuristiken angewendet, um die Testfälle mit höherer Priorität zu bestimmen. Dies ist ein neuer Bereich der Datenwissenschaft, der als MSR (Mining Software Repositories) bekannt ist.
  3. Ableitung von Änderungen. Nachdem der Build generiert wurde, erstellt der Agent eine Liste aller hinzugefügten/geänderten/gelöschten Dateien und gibt sie an den Testsuite-Generator weiter.
  4. Testsuite-Generator. Anhand des generierten Änderungssatzes versucht das Tool, die korrekte, auf den Auswirkungen basierende Suite zu bestimmen, die auf Code Churn und einer priorisierten Liste von Testfällen unter Verwendung historischer Daten basiert. 

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.

 

Ajit Rajshekar

Ajit Rajshekar

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.

Beschleunigen Sie Ihre Markteinführung mit intelligenter Automatisierung,

 

Intelligente Automatisierung von Virtusa hilft bei SDLC-Transformation

Verwandte Inhalte