Veröffentlicht: Oktober 22, 2024
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?
`` ` 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?
`` ` 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?
- 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. - 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?
Was passiert, wenn während der Ausführung eines einzelnen Testskripts mehrere Locator-Änderungen auftreten?
Meine Tests sind wiederhergestellt: Kann ich meine Tests unverändert weiterführen oder muss ich meine Skripte ändern?
Warum heilen, wenn ich die Änderungen sowieso vornehmen muss?
Woher weiß ich, ob etwas verheilt ist?
``` 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
Auch interessant
Bewährte Verfahren zur Optimierung der Ursachenanalyse
Inzwischen ist es unbestreitbar, dass KI die Art und Weise verändert, wie…
Android 17 ist da. Ist Ihre App bereit?
Jede größere Android-Version folgt demselben Muster. Google veröffentlicht…
Der Dschinn und der Vertrag
Wie spezifikationsgetriebene Entwicklung (SDD) und testgetriebene Entwicklung (TDD) tatsächlich zusammenpassen…


