Blog

Software Testing mit “Künstlicher Intelligenz” – eine Marktbetrachtung – Teil 3 von 5

Xebia
by  Xebia
04 Dec, 2020
Xebia Background Header Wave

"Künstliche Intelligenz" (KI) bzw. "Artificial Intelligence" (AI) ist in der IT-Branche, aber auch im Alltag, in aller Munde und hat längst Einzug in unsere Gesellschaft gehalten (siehe auch Artikel #2 in dieser Serie). So ist sie bereits in vielen Bereichen anzutreffen: selbstfahrende Autos, Medizin, Entertainment (beispielsweise in Computerspielen und Virtual Reality), Video- und Bildbearbeitung, beim Militär (z. B. Drohnen), in der Finanzbranche und in vielen Apps, welche man in den allgemein bekannten App-Stores herunterladen kann.

Die Verfahrensweisen der "Künstlichen Intelligenz" sind älter als das Internet. Im Jahre 1950 wurde der Turing-Test entwickelt und im Sommer 1956 fand bereits die erste Konferenz zum Thema «Künstliche Intelligenz» statt. (Die gesamte Einführung in das Thema finden Sie im Artikel #1 dieser Serie).

Als IT-Anwender im Allgemeinen und Test Engineer im Speziellen stellen sich für uns zwei grosse Fragen:

  1. Wie weit kann uns "Künstliche Intelligenz" beim Testen von Software und IT-Systemen schon heute helfen?
  2. Wie testet man "Künstliche Intelligenz" bzw. Software, die von "Künstlicher Intelligenz" gesteuert wird?

In diesem Artikel widmen wir uns der ersten Frage, auf die zweite Frage gehen wir im Artikel #4 dieser Serie ein.

Gehen wir auf die Bedeutung "KI" näher ein

Die KI ist so konstruiert und programmiert, dass sie durch einen probabilistischen Ansatz selbständig Probleme bearbeiten und lösen kann – auch für Fragestellungen, für die sie nicht explizit programmiert wurde. Sie hat die Fähigkeit, ständig weiter zu lernen und eigenes Wissen aufzubauen.

Erhält die KI Daten, die bisher nicht bekannt waren, so werden daraus neue Informationen und neues Wissen generiert. Erhält die KI die identischen Daten erneut, erkennt sie diese eigenständig. Für die Begriffe von Daten und Wissen orientieren wir uns dabei an der einfachen Wissenspyramide.

Pyramide
Wissenspyramide (Quelle und Copyright: Olaf Lipinski, SwissQ)

Business Cases für das Software Testing mit KI

Die Menge an durchzuführenden Testfällen kann von einer KI in deutlich schnellerem Tempo erledigt werden als von einem menschlichen Tester. Neben der reinen Durchführungsgeschwindigkeit wird auch die Relevanz der Testfälle gesteigert.

Viele Anbieter von Testautomatisierungswerkzeugen legen ihren Fokus zurzeit vor allem auf die Tests der User Interfaces. Es gibt aber noch andere Bereiche, in denen der Einsatz von "Künstlicher Intelligenz" im Software Testing zur Effizienzsteigerung führen kann.

Aktuelle KI-unterstützte Testing-Tools

Auf dem Markt gibt es 2020 zahlreiche Anbieter, welche KI-unterstütze Testing-Tools anbieten. Das Angebot reicht von Open-Source-Tools bis hin zu kostenpflichtigen Lizenzprodukten. Die Tools sollen die jeweilige Nutzung für den User erleichtern und intuitiv sein.

Nachfolgend einige aktuelle Beispiele:

Spidering AI

Der derzeit beliebteste Bereich der KI-Automatisierung ist die Nutzung des maschinellen Lernens zum automatisierten Schreiben von Testfällen durch "Spidering". Neuere AI/ML-Tools wie "Mabel" verfügen über eine Funktion, mit der Sie einfach auf Ihre Webanwendung verweisen können, und die Test-Anwendung beginnt automatisch zu "kriechen".

Beim Crawlen sammelt das Tool Daten, die mit Funktionen wie dem Erstellen von Screenshots, dem Herunterladen des HTML-Codes jeder Seite, dem Messen von Ladezeiten usw. zu tun haben. Diese Schritte werden stetig wiederholt. Mit der Zeit baut die KI-Anwendung einen Datenbestand zu den verschiedenen Parametern auf und trainiert ihr ML-Modell für die erwarteten Muster der Anwendung.

Wenn das KI-Tool ausgeführt wird, vergleicht es die aktuellen Parameter des System-under-Test mit allen bekannten Ausführungsmustern, die es bereits gelernt hat. Bei einer Abweichung, z. B. eine Seite, die normalerweise fehlerfrei läuft, oder wenn die Ladezeit signifikant länger als der Durchschnitt ist, wird sie als ein potenzielles Problem gekennzeichnet.

Einige dieser Unterschiede können korrekt sein, zum Beispiel bei einer Anpassung des User Interfaces. In anderen Fällen handelt es sich wirklich um einen Fehler. In jedem Fall muss ein Mensch, mit Domänenwissen, die gekennzeichneten Abweichungen überprüfen.

Obwohl dieser Ansatz noch in den Kinderschuhen steckt, glaubt Oren Rubin, CEO und Gründer von Testim, eines Herstellers von maschinellen Lernwerkzeugen, dass "die Zukunft eine grosse Chance bietet, diese Methode auch zum automatischen Verfassen von Tests oder Teilen eines Tests einzusetzen".

Visual Validation Automation Testing

Visual Validation Automation Testing zielt darauf ab, zu überprüfen, ob die richtigen Daten und Inhalte am Front-End der Anwendung angezeigt werden. Zusätzlich wird auch das Layout und das Erscheinungsbild jedes visuellen Elements der Benutzeroberfläche und der gesamten UI selbst validiert.

Beim visuellen Testen stellt der visuelle Regressionstest sicher, dass keine Stilprobleme auftauchen, wenn Änderungen an der Software vorgenommen werden. Die Anwendung sollte weiterhin so gut aussehen, wie sie war.

Ein visuelles Regressionstest-Tool nimmt Screenshots der aktuellen Benutzeroberfläche auf und vergleicht sie mit den Original-Screenshots. Bei visuellen Regressionstests werden also die historischen Unterschiede betrachtet. Er bestätigt, dass die Website auch nach Änderungen am Code in verschiedenen Browsern immer noch wie erwartet "angezeigt" wird.

Mit ML-basierten visuellen Validierungstools wie Applitools können Unterschiede in der Front-End gefunden werden, die menschliche Tester höchstwahrscheinlich übersehen würden.

API-Tests

Die Verantwortung für die API-Tests liegt üblicherweise bei den Entwicklern oder den Testern. Diese Trennung führt zu einer geringen Testabdeckung der API-Tests. Das Testen auf der API-Ebene erfordert spezielle Fähigkeiten und Tools, um eine umfassende Testabdeckung zu erzielen. Diese Tests können von einem DevOps Engineer übernommen werden, der sich auf die Integration der Softwarelösung bis hin zur Produktion konzentriert.

Mit Hilfe von KI-Tools für API-Tests lässt sich die Komplexität reduzieren. Hier setzt beispielsweise Parasoft mit seinem "Smart API Test Generator" namens SOAtest 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 des menschlichen Testers bei API-Tests. Ausserdem erhalten Unternehmen Hilfestellung beim Aufbau einer umfassenden und skalierbaren API-Teststrategie. (siehe Link)

Testfälle müssen nach einem Redesign nicht angepasst werden

In der Weiterentwicklung von Tosca (v13) hat Tricentis eine KI-unterstützte Komponente namens "NEO" hinzugefügt. Dabei wurden die bisherige Oberfläche und Bedienelemente nicht verändert. Das bedeutet, dass ein aktueller Tosca-User ohne Mehraufwand mit KI-Unterstützung arbeiten kann.

NEO wurde für das Testen von grafischen Oberflächen entwickelt, bringt aber noch weitere KI-Erweiterungen mit. Mit NEO ist der User in der Lage, Testfälle für grafische Benutzeroberflächen aufzubauen, bevor überhaupt ein User-Interfaces entwickelt wurde, zum Beispiel mittels PDF-Mockups.

Wenn sich das Design der UI ändert, bleibt der zuvor erstellte Testfall immer noch brauchbar. Die KI erkennt die Elemente der Maske, beispielsweise Buttons, automatisch, auch wenn sie jetzt an ganz anderer Stelle sind. Ein Re-Scan der Maske durch den User ist nicht mehr nötig und die Testfälle können einfach weiterhin ausgeführt werden. Laut Tricentis sieht NEO die angezeigte Maske so, wie der User sie sehen würde.

Abtesten der Benutzerfahrten

Der KI-gesteuerte Testansatz von Eggplant erstellt ein Modell des Systems, der Benutzerfahrten auf dem Monitor, und generiert automatisch Testfälle, die eine robuste Abdeckung der Benutzerfahrten sowie der Systemleistung und -funktionalität bieten.

Eggplant behauptet, dass es jedes Gerät, jedes Betriebssystem, jeden Browser und jede Technologie testen kann. Es kann auf jeder Ebene, von der Benutzeroberfläche über APIs bis hin zur Datenbank getestet werden. Aus diesem Grund wird Eggplant für vieles verwendet, vom plattformübergreifenden mobilen Banking bis hin zum digitalen Cockpit des Raumschiffs Orion, welches zurzeit von NASA und ESA entwickelt wird.

Wichtige Eigenschaften:

  • Erkennen von Fehlern: Suchen nach gemeinsamen Mustern, die auf das Vorhandensein von Fehlern hinweisen können.
  • Auswertung der Abdeckung:  Durchführen einer Coverage-Analyse in Bezug auf Daten, Aktionen und Zustände.

Quelle: Eggplant

"Künstliche Intelligenz" kann offensichtlich viele Vorteile beim Automatisieren von Testfällen bringen: Sich ständig wiederholende Testfälle prüfen, relevante Testfälle entwickeln und automatisieren. Dadurch können die Qualität der auszuführenden Testfälle und im Ergebnis die des "System-under-Test" enorm gesteigert werden.

Fazit

Viele Anbieter von automatisierten Testing-Tools setzen inzwischen auf "Künstliche Intelligenz" in der von ihnen entwickelten Testautomatisierungs-Software. Dabei wird die Benutzbarkeit der Software in den Vordergrund gestellt, damit diese auch von "Nicht-Entwicklern" ausgeführt werden kann.

Das Thema KI wird uns zukünftig verstärkt begleiten, da heutzutage dafür entsprechende Rechenleistung zur Verfügung steht, welche der KI ein Leben einhaucht.

Der Bedarf an Testern und Test Engineers, die sich mit Testautomatisierung mittels KI-unterstützer Software auskennen, wird in Zukunft steigen.

Im vierten Artikel dieser Serie erfahren dann nicht nur Tester und Test Engineers, wie man KI-gesteuerte Software testen kann.

Dieser Artikel ist eine Gemeinschaftsarbeit von Wilhelm Kapp, Olaf Lipinski und Dejan Husrefovic. SwissQ Consulting, September 2020

Questions?

Get in touch with us to learn more about the subject and related solutions