Der Maschine das Testen beibringen mit KI

Das Testen lässt sich heutzutage in zwei Kategorien aufteilen – das manuelle Testen und das automatisierte Testen. Dabei gewinnt der Bereich des automatisierten Testens immer mehr an Bedeutung. Wem kann dies auch verübelt werden? Durch den automatisierten Test lassen sich Testszenarien schneller durchführen und die Kosten für manuelle Tester senken.

Heutzutage wird das Thema Künstliche Intelligenz (KI) häufiger im Themenfeld der Qualitätssicherung betrachtet. Ist dies das Ende des manuellen Testens?

Immerhin wird aktuell an Software gearbeitet, die Programme selbstständig analysieren und passende Testfälle selbst schreiben kann. Zudem kann Testsoftware, die auf KI basiert, über Brute-Force ein viel weiteres Spektrum abdecken als es einem manuellen Tester möglich ist.

Doch bevor wir weiter auf den Vergleich zwischen manuellem Testen und Testen mit KI eingehen, sollten wir uns die Funktionsweise und Grenzen der KI anschauen.

Das logische Denken bei uns Menschen wird durch die neuronalen Verbindungen in unserem Gehirn gefördert. Mit demselben Konzept wird versucht, eine KI zu erstellen. Es wird ein neuronales Netz aufgebaut, welches sich über mehrere Ebenen entwickeln kann und mehrere Knoten besitzt.

Abbildung 1: Aufbau eines neuronalen Netzes

Wie hier im Bild gezeigt wird, gibt es die Eingangs- und die Ausgangsknoten. Die Eingangsknoten kann man beispielsweise mit den Augen des Menschen vergleichen. Sie reagieren auf einen Reiz und verarbeiten diesen in einem Hidden-Layer mit unterschiedlichen Algorithmen. Die Ausgangsknoten geben die Reaktion wieder, auf die der Mensch reagiert. Genauso verarbeitet eine Software, die auf KI basiert, die Informationen.

Entsprechend der Aufgabe der KI muss die Anzahl der Eingangs- und Ausgangsknoten proportional steigen. Die Anzahl der Knoten und Ebenen im Hidden-Layer gibt die Komplexität des entstehenden Algorithmus an. Mit steigender Anzahl der Knoten steigt natürlich auch die hardwareseitig benötigte Rechenleistung. Nicht alle Knoten müssen miteinander verbunden werden. Die Knoten kann man zu bestimmten Aufgaben bündeln, indem nur eine gewisse Anzahl von Verbindungen zwischen den Knoten erstellt wird. So können z. B. die Algorithmen für das Sehen und das Hören erst einmal separat implementiert und im Nachhinein miteinander verbunden werden. Anschließend gibt es eine Reaktion auf die eingehenden Reize.

Abbildung 2: Bündelung der Knoten im neuronalen Netz

Nun haben wir also ein neuronales Netz aufgebaut. Doch wie funktioniert dieses Netz? Ganz simpel gesprochen könnte man sagen, dass die Eingangsknoten mit jedem Reiz eine „1“ signalisieren oder ohne Reiz eine „0“. Diese „1“ oder „0“ wird von jedem Knoten mit einem bestimmten Faktor multipliziert. Am Ende hat jeder Ausgangsknoten ein Ergebnis vorliegen und der Ausgangsknoten mit dem höchsten Wert startet die gewünschte Reaktion.

Aber woher kommen die Faktoren für die Knoten im Hidden-Layer? Hier kommt der Punkt ins Spiel, in welchem der Mensch nicht weggelassen werden kann. Eine durch KI gesteuerte Software kann zwar viele Vorgehensweisen und Möglichkeiten berechnen, doch weiß sie nicht, was richtig oder falsch ist. Würde ein Mensch einen Ball auf sich zufliegen sehen, würde er durch das, was er mit dem Auge sieht, sofort mit seinen Armen reagieren und den Ball fangen. Die KI könnte dies natürlich auch tun, aber sie könnte auch nichts tun, ausweichen, den Ball wegschlagen oder mit einer von vielen anderen Möglichkeiten auf den Reiz reagieren. Der Mensch selbst muss der KI erst einmal sagen, welche für die jeweilige Situation die richtige Reaktion ist. Dafür geben wir der KI mehrere Situationen vor und sagen ihr, wie sie dabei reagieren soll. Die KI passt dementsprechend die Faktoren ihrer Knoten an, um einen Algorithmus zu entwickeln. Der nächste Schritt wäre es, der KI Situationen vorzugeben, auf die sie selbst reagieren muss und der Mensch bewertet die Antwort der KI, um den Feinschliff des Algorithmus zu fördern. Erst ab diesem Punkt kann die KI allein arbeiten. Dieses Vorgehen nennt sich auch Deep-Learning, da die Tiefen des neuronalen Netzes geformt werden.

Hier kommt auch der Knackpunkt, warum das automatische Testen die manuellen Tester nicht komplett aus dem Verkehr ziehen kann. Jede KI muss auf die jeweilige Software erst einmal angepasst werden. Die KI selbst weiß nicht, worum es sich bei der Software handelt oder welche Reaktionen richtig sind.

Abbildung 3: Manuelle Einstellungen des Test-Programms

Es müssen erst einmal die bedienbaren Felder definiert werden, die von der KI genutzt werden sollen. Es gibt natürlich auch Software, die sämtliche bedienbaren Objekte auf der GUI suchen und diese zum Testen nutzen kann. Doch auf diese Art und Weise würden per Brute-Force alle möglichen Kombinationen durchgeführt werden. Dementsprechend müssten von einem Tester eine Black- und eine White-List erstellt werden. Man kann natürlich der KI über mehrere Stunden freien Lauf lassen, in denen sämtliche Varianten der Einstellungshäkchen oder unzählige Textkombinationen im Namensfeld ausprobiert werden. Doch es wäre effizienter, die primären Testziele mit einer Eingrenzung zu fokussieren. Die KI liefert sämtliche Ergebnisse, die sie durch ihr stundenlanges Testen bekommen hat und gibt diese als Testszenarien aus, die neu geschrieben wurden und einen Failed- oder Passed-Zustand haben. Nun muss sich wieder ein Tester damit auseinandersetzen, bei welchen Tests es sich wirklich um einen Software- oder Bedienfehler handelt. Weiterhin können dann Testszenarien, die von der KI erstellt wurden, bei ihrem eigenständigen Testen gespeichert und später für automatisierte Tests weiterverwendet werden.

Es gibt heutzutage mehrere Firmen, die solche KI-Software anbieten wie z. B. Eggplant.io, Test.ai oder Retest. Außerdem entwickeln fast die Hälfte aller deutschen Softwarefirmen ihre QA-Abteilung im Bereich der KI weiter.

Der World Quality Report fasst Ergebnisse einer weltweiten Befragung zur Anwendungsqualität und Testing-Verfahren zusammen. In der aktuellen Ausgabe wird darüber berichtet, dass KI im Bereich intelligenter Automatisierung als wichtigster Punkt für die Verbesserung der Qualitätssicherung in den nächsten zwei bis drei Jahren herangezogen wird.

Ich hoffe, ich konnte mit diesem Blogbeitrag einen kleinen Einblick in das Testen mit KI geben und zeigen, dass die Automatisierung einen großen Schritt mithilfe von KI macht. Dennoch sind manuelle Tester dadurch noch nicht zum Aussterben verdammt – was uns die Zukunft bringen wird, kann jedoch aktuell noch niemand genau sagen.

Neco Giedrojc

Neco Giedrojc schloss sich kurz nach seinem Studienabschluss im Bereich „Computer Engineering“ dem Testbereich der Saxonia Systems AG an und arbeitet dort als Tester. Dabei befasst er sich in seinem Hauptprojekt aktuell mit dem Integrationstest komplexer Systeme.