Erleichtern Sie die Wartung von Appium-Skripten mit KI-gestützter Selbstheilung

Der Tag ist zu Ende, das Testteam packt zusammen und macht sich auf den Heimweg. Da die letzte Person, die geht, traditionell das Licht ausschaltet, gibt es noch eine weitere Aufgabe zu erledigen. Unterwegs muss eines der Teammitglieder den nächtlichen Testlauf als Teil seiner Regressionstests für mobile Geräte. Am nächsten Morgen stellt das Team jedoch zum Schock und Entsetzen fest, dass viele seiner Tests aufgrund einer Änderung des Locators innerhalb der Anwendung fehlgeschlagen sind.

Diese Art von Änderungen kommt häufig vor und bleibt aus verschiedenen Gründen unbemerkt. Ein kurzes Beispiel wäre, dass das Entwicklungsteam eine Änderung vorgenommen hat, die so klein war, dass sie als unbedeutend angesehen und daher dem QA-Team nicht mitgeteilt wurde.

Der Zeit- und Arbeitsaufwand zum Überprüfen fehlgeschlagener Skripts, Aktualisieren von Locators und erneuten Ausführen von Tests kann einen Sprint schnell entgleisen lassen und das Risiko erhöhen, dass Mängel in die Produktion gelangen.

In einer Welt, in der KI eine immer zentralere Rolle im SDLC spieltEntwickler erhalten jetzt Unterstützung durch kontextbezogene Vorschläge, Codeoptimierung und sogar die Generierung von Unit-Tests. Dies beschleunigt zwar die Entwicklung, kann aber spätere Herausforderungen für QA-Teams mit sich bringen, da sie mit der zunehmenden Zahl erstellter Codes kaum Schritt halten können.

Kleinere UI-Änderungen wie die oben genannte wirken sich häufig auf automatisierte End-to-End-Tests aus. Durch die Integration von AI Self-Healing können Skripte jedoch im laufenden Betrieb angepasst werden und defekte Locators während der Ausführung reparieren, ohne den Testablauf zu unterbrechen. Diese Funktion hilft QA-Teams, mit schnellen Entwicklungszyklen Schritt zu halten, die Testwartungszeit erheblich zu verkürzen und schnelleres Feedback zu liefern – und das alles bei gleichzeitiger Erhöhung der Teststabilität.

In diesem Blog wird untersucht, wie KI-gestützte Selbstheilung behebt Elementfehlanpassungen zur Laufzeit autonom und ohne menschliches Eingreifen.

Voraussetzungen: Diese Funktion ist nur für Pro- und Premium-SaaS-Kunden verfügbar

Um Ihnen ein besseres Verständnis der KI-Selbstheilung und ihres Verhaltens auf unserer Plattform zu vermitteln, werden wir uns Folgendes ansehen: Digital.ai's für Android entwickelte Banking-Anwendung und führen Sie durch einen einfachen Test für die Anmeldeseite, bei dem eine Änderung erkannt wird.

Wir werden zwei Versionen derselben Anwendung haben, eine unveränderte (ein Build, von dem erwartet wird, dass es funktioniert) und eine geänderte (bei der einer der Locators geändert wurde).

In der unveränderten Version der Anwendung sehen wir, dass die ID „usernameTextField“ den Benutzernamen-Locator identifiziert:

Auf diesen Locator wird im Automatisierungsskript wie unten gezeigt verwiesen. Die folgenden Zeilen validieren und interagieren mit dem Benutzernamenfeld, nachdem die automatisierten Appium-Tests ausgelöst wurden:

``` warten.bis(ExpectedConditions.elementToBeClickable(By.id("com.experitest.ExperiBank:id/usernameTextField"))); treiber.findElement(By.id("com.experitest.ExperiBank:id/usernameTextField")).sendKeys("tester01"); ```

Unter normalen Umständen, wenn die Locator-Parameter nicht geändert werden, würde das Skript ohne Probleme ausgeführt.

Betrachten wir jedoch ein Szenario, in dem sich der Locator für das Feld „Benutzername“ geändert hat. Anstelle von „UsernameTextField“ wird es in diesem geänderten Build jetzt als „UserTextField“ identifiziert:

In diesem Fall würde das Skript sofort mit einer „NoSuchElementException“ fehlschlagen.

Wie können wir dieses Problem lösen?

Es ist so einfach wie das Hinzufügen einer Zeile zu Ihrem Test-Setup innerhalb der gewünschten Funktionen. Schauen wir uns ein einfaches Testskript-Setup an, um eine Anwendung zu installieren und zu starten auf Digital.ai Continuous Testing Lernumgebung:

`` `
Gewünschte Capabilities-Obergrenzen = neu Gewünschte Fähigkeiten ();

caps.setCapability("Testname", „login_scenario_test“);
caps.setCapability("Zugriffsschlüssel", ZUGRIFFSSCHLÜSSEL);
caps.setCapability("Geräteabfrage", "@os='android'"); //
https://docs.digital.ai/bundle/TE/page/device_queries.html
caps.setCapability(„App“, „Cloud: com.experitest.ExperiBank/.LoginActivity“);
caps.setCapability("Anwendungspaket", „com.experitest.ExperiBank“);
caps.setCapability("Anwendungsaktivität", „.LoginActivity“);

gewünschte Fähigkeiten.set(Großbuchstaben);
Fahrer.Satz(neu AndroidDriver(neu URL("https:// /wd/hub"), Kappen));

`` `

Fügen Sie nun im Rahmen Ihrer Möglichkeiten einfach die folgende Zeile hinzu, um dem Skript mitzuteilen, dass es im Selbstheilungsmodus ausgeführt werden soll:

`` ` 
caps.setCapability("Selbstheilung", was immer dies auch sein sollte.);

`` `

Sie können die automatisierten Skripte nun wie gewohnt ausführen. Es sind keine weiteren Änderungen erforderlich, weder von Ihrer IDE (z. B. Eclipse / IntelliJ) noch von einer CICD-Pipeline (z. B. Azure DevOps).

Hat die Aktivierung der KI-Selbstheilung Auswirkungen auf die reguläre Testausführungszeit?

Das Aktivieren der Selbstheilung kann möglicherweise die Testausführungszeit verlängern, da das Selbstheilungsmodul während des Testlaufs Seiten kontinuierlich auf Änderungen überprüft. Um Flexibilität zu bieten, haben wir die Option zum Anhalten und Fortsetzen der Selbstheilung in Ihr Skript integriert. Wenn beispielsweise die Anmeldeseite stabil ist und wahrscheinlich keine Fehler verursacht, kann das Deaktivieren der Selbstheilung für diesen Abschnitt dazu beitragen, die Testausführungszeit zu verkürzen. Mit einem Einzeiler, der dem Testskript hinzugefügt wird, können Sie den Selbstheilungsmodus anhalten:

`` `

Fahrer.executeScript(„siehetest:client.stopHealing“);

`` `

Und wenn Sie fortfahren möchten, rufen Sie einfach einen weiteren Einzeiler auf:

`` `

Fahrer.executeScript("siehetest:client.startHealing");

`` `

Ist die Selbstheilung anpassbar?

Die KI-gestützte Selbstheilung kann an die Anforderungen der getesteten Anwendungen angepasst werden, insbesondere bei unterschiedlichen Komplexitätsgraden.

  1. Wiederherstellungsversuche: Definiert die Gesamtzahl der Versuche, die der Algorithmus unternimmt, um einen passenden Locator zu finden.
    Standardmäßig versucht Self-Healing einmal pro Element, Locator-Änderungen zu identifizieren. Wenn der Algorithmus beispielsweise keinen Ersatz-Locator für das Feld „Benutzername“ findet, wird er es nur einmal versuchen, bevor er fortfährt.
  2. Punkte-Obergrenze: Legt einen Übereinstimmungsschwellenwert basierend auf der Wahrscheinlichkeit einer erfolgreichen Übereinstimmung fest. Der Standardwert ist auf 0.6 auf einer Skala von 0.1 bis 1.0 eingestellt.
    Ein Wert von 0.6 gibt an, dass die Selbstheilung für neu identifizierte Ortungsgeräte nur dann ausgelöst wird, wenn die Wahrscheinlichkeit einer Übereinstimmung über 60 % liegt.

Das Digital.ai Das Supportteam kann diese beiden Eigenschaften auf Anfrage ändern.

Funktioniert die KI-Selbstheilung bei allen Arten von mobilen Anwendungen?

Derzeit wird AI Self-Healing für native mobile und Webtests unter Android sowie für Webtests unter iOS unterstützt. Die Unterstützung für native mobile Anwendungen unter iOS ist noch nicht verfügbar – bleiben Sie jedoch für zukünftige Updates gespannt.

Was passiert, wenn während der Ausführung eines einzelnen Testskripts mehrere Locator-Änderungen auftreten?

Unabhängig davon, ob es sich um eine einzelne oder mehrere Änderungen am Locator handelt: Wenn die AI-Selbstheilung aktiviert ist, wird der Selbstheilungsmechanismus aktiviert und aktualisiert automatisch alle betroffenen Locators während einer einzigen Testausführung – ohne manuelles Eingreifen.

Meine Tests sind wiederhergestellt: Kann ich meine Tests unverändert weiterführen oder muss ich meine Skripte ändern?

Sie können Ihre automatisierten Tests weiter ausführen und sie werden wie erwartet funktionieren. Die Digital.ai platform erkennt weiterhin die Änderungen und stellt sicher, dass die Skripts wie erwartet ausgeführt werden. Dies löst das Problem jedoch nicht vollständig. Während der Test während der Laufzeit repariert wird, ändert er das eigentliche Skript nicht, unabhängig davon, ob Sie es von einer IDE wie IntelliJ oder einer CI/CD-Pipeline wie Azure auslösen. DevOps. Sie müssen die ursprünglichen Automatisierungsskripte ändern und die erforderlichen Änderungen vornehmen.

Warum heilen, wenn ich die Änderungen sowieso vornehmen muss?

Der Vorteil der Selbstheilung besteht darin, dass Locator-Änderungen die Testausführung nicht stören. Nach dem Lauf können Sie die Berichte nach Belieben überprüfen, um festzustellen, welche Locators geheilt wurden, und dann Ihr Skript entsprechend aktualisieren. Die Unterscheidung zwischen echten Testfehlern und Automatisierungsproblemen hilft dabei, sich besser auf Aufgaben mit höherer Priorität zu konzentrieren, die einen viel größeren Einfluss auf die Endbenutzer haben könnten. Dadurch können Sie neue Updates veröffentlichen, ohne sich ständig Sorgen machen zu müssen, dass fehlerhafte Tests den Fortschritt behindern.

Woher weiß ich, ob etwas verheilt ist?

Das ist ganz einfach! Sehen wir uns ein Beispiel an. Sie können von Ihrem Browser aus zu Ihrer Reporter-Seite navigieren (funktioniert am besten mit Chrome):

``` https:// /Reporter/Reporter/Tests ```

Alternativ können Sie auf der Hauptplattform oben rechts auf Ihre Initialen klicken und „Zum Reporter"

 

Gehen Sie zu „TestsRegisterkarte: 

 

In dieser Ansicht werden alle für Ihr Projekt ausgeführten Tests angezeigt, einschließlich des Prozentsatzes der Tests, die behoben wurden:

 

Mit einem Klick auf die Geheilt Der Status im Kreisdiagramm filtert die Ergebnisse, um nur die Tests anzuzeigen, die geheilt wurden:

 

Sie können auch auf jeden Bericht klicken, um detaillierte Informationen zu den geheilten Erkrankungen anzuzeigen:

Fazit

KI-gestützte Selbstheilung bedeutet einen großen Fortschritt in der Testautomatisierung. Es macht die Wartung von Appium-Skripten effizienter und reduziert den manuellen Aufwand, der erforderlich ist, um mit schnellen Entwicklungszyklen Schritt zu halten. Auch wenn Self-Healing die Notwendigkeit, Skripte zu aktualisieren, möglicherweise nicht vollständig ersetzt, bietet es ein nahtloses Erlebnis, indem es Testunterbrechungen verhindert und wertvolle Einblicke in die Skriptwartung liefert. Dies macht es zu einem leistungsstarken Tool und verbessert die Testzuverlässigkeit. Wenn Sie bereit sind, herauszufinden, wie AI Self-Healing Ihre Testautomatisierungsstrategie verändern kann, und mehr über unsere KI-Innovationen erfahren möchten, wenden Sie sich an uns!

Auch interessant