Die COVID-19-Pandemie hat einen Digitalisierungsschub ausgelöst und die Abhängigkeit von funktionierender Software in vielen Bereichen erhöht. Unternehmen berichten von rekordverdächtiger Auslastung aller digitalen Interaktionsmöglichkeiten als Folge des zunehmenden Arbeitens im Homeoffice. Im privaten Bereich haben wir uns an ein reichhaltiges Anwendererlebnis gewöhnt, daher erwarten wir auch ein hohes Qualitätsniveau unserer Arbeitsumgebung. Dies führt uns die Wichtigkeit der Qualität von Software vor Augen.
Quality Engineering (QE)
Bisher waren wir sehr stark vom Software-Testing als einer kritischen Komponente im Softwarelebenszyklus abhängig, wenn es darum ging, einen gewissen Qualitätsstandard zu gewährleisten. Das Testing ist jedoch hinter der erforderlichen Geschwindigkeit zurückgeblieben und es mangelte den gesamten Lebenszyklus hindurch an einer ganzheitlichen Sicht der Anwendungsqualität. Diese kritische Funktion erfüllt das weitreichende moderne Feld des Quality Engineering, in dem das gesamte Team die gleichen Pflichten im Hinblick auf die Anwendungsqualität hat.
Die Entwicklung hin zum Quality Engineering sollte zur maximal tatsächlich erreichbaren Geschwindigkeit führen und dabei gleichzeitig die Lieferung in gewünschter Qualität sicherstellen. In Wirklichkeit sind viele Unternehmen nach wie vor in erster Linie auf Software-Testing fokussiert und haben im Laufe der Zeit Kompromisse bei der Qualität hingenommen. Testing ist – zumal als abschließender Schritt im Arbeitsablauf – definitiv mehr ein Hindernis als ein Enabler hochwertiger Softwarequalität.
Verkürzte Durchlaufzeiten bei der Leistungserbringung sind nur einer der Faktoren, die sich auf die Softwareentwicklung auswirken. Die zunehmende technologische Komplexität und die Bedeutung, die der User Experience (UX) beigemessen wird, haben ebenso zur Ausweitung der Kluft im Hinblick auf das Quality Engineering beigetragen (siehe Abbildung 1). Möglicherweise genügt sogar kontinuierliches Testen nicht mehr, um diese Anforderungen gleichzeitig zu erfüllen. Letztlich stellen diese gegenläufigen Belastungen für das Quality Engineering ein zentrales Problem dar.
Abb. 1: Lücke beim kontinuierlichen Testing, Quelle: Sogeti
Parallel zu diesem Bedarf an Effizienzsteigerung für das Quality Engineering treiben die Fortschritte bei der Rechenleistung kombiniert mit der Kosteneffizienz bei der Speicherung die Entwicklungen bei der KI mit zunehmendem Tempo an. [AIforQE.3] [AIforQE.4]
Wie können wir von diesen Innovationen profitieren, um Quality Engineering jetzt und in naher Zukunft intelligenter zu machen? Hierzu betrachten wir in Kurzform die wichtigsten Aktivitäten im Testprozess und untersuchen die Eignung von KI, die jeweilige Aktivität signifikant zu unterstützen. Wo möglich, benennen wir Produkte oder Lösungen, die bereits heute genutzt werden können. Darüber hinaus wird auf die Abschnitte der Studie „State of AI applied to Quality Engineering“ [AIforQE.1-7] verwiesen, in denen die jeweiligen Testaktivitäten detaillierter untersucht werden (siehe Kasten 1).
Kasten 1: Studie „State of AI applied to Quality Engineering“
KI im Testdesign
Das Testdesign ist von zentraler Bedeutung dafür, das Richtige in der dem Risiko und Qualitätsziel angemessenen Tiefe zu testen. Gleichzeitig ist es zunehmend schwierig geworden, denn unzureichend spezifizierte Anforderungen oder User-Storys verursachen Fehler und Ineffizienzen während der Sprint-Tests. Die Teams testen in manchen Bereichen zu viel und in anderen zu wenig. Angemessene Methoden des Testdesigns sollten eine ausreichende Abdeckung sicherstellen und das Schreiben von Testfällen ebenso erleichtern wie die Testautomatisierung.
Mittels KI können wir nunmehr die Geschäftslogik in Form eines digitalen Zwillings (Digital Twin) unserer wichtigsten Transaktionen ausdrücken. Der digitale Zwilling ist eine lebende und dynamische Darstellung der Kernprozesse einer Organisation, anhand der Tester mit der Veränderung Schritt halten können. Er wandelt Beobachtungen in Handlungen um und versetzt damit die Organisation in die Lage, das Team mit dem Eintritt der Veränderung zu informieren, aufgrund von Beobachtungen zu handeln, um sich darauf zu konzentrieren, was genau getestet werden muss, Teilprozesse zu automatisieren und so effektive Strategien zur Risikoentschärfung zu unterstützen.
Einen starken Anwendungsfall stellt die Fähigkeit dar, Modelle echter „User-Journeys“ mit wiederkehrenden Fehlern zu identifizieren, um die Priorisierung zu verbessern und besonders die Testfälle in den Fokus zu nehmen, die dabei helfen, Fehlerwirkungen aufzuspüren.
- Anbieter: Curiosity Software, Keysight
KI kann darüber hinaus die Korrelation zwischen Code, Metadaten und Test verbessern, um Testfälle zu identifizieren, zu (ent-) priorisieren und zu entwickeln. Damit kann das inhärente Code-Risiko aus Commit-Record-Kommentaren und aus der Bewertung der Aufwandsverteilung der Entwickler im laufenden Projekt besser verstanden werden.
- Anbieter: CA Broadcom, Sealights
Mehr dazu findet sich in [AIforQE.2].
Nutzung von KI zur Messung und Interpretation
Moderne Quality Gates betten KI ein, um prädiktive und präskriptive Metriken bereitzustellen, um die Zuweisung der Testressourcen zu optimieren, das Risiko im Zusammenhang mit Modifikationen und Änderungen in der Produktion zu bewerten und duplizierte oder nicht abgedeckte Testobjekte zu identifizieren.
Es ist darauf hinzuweisen, dass es sich bei der natürlichsprachlichen Textgenerierung (NLG, für natural language generation) um eine noch junge Technologie mit zahlreichen möglichen Anwendungen handelt, bei deren Nutzung der Markt noch am Anfang steht. [AIFORQE.3.1] [AIFORQE.3.2]
Nutzung von KI zur Testautomatisierung
Automatisierte UI-Tests laufen häufig langsam, sind technisch komplex und wenig robust. Diese Schwächen werden durch die Computer-Vision angegangen, die darauf abzielt, Computern beizubringen, digitale Bilder nach menschlichem Vorbild zu sehen, zu verstehen und zu interpretieren. Dies hilft, die Unzuverlässigkeit von Tests bei der UI-Automatisierung zu verringern, die Automatisierungsgeschwindigkeit und -genauigkeit zu steigern und Tests durchzuführen, indem die Nutzeroberfläche der Anwendung nach Objekten (wie z. B. Eingabefeldern, Menüs oder Schaltflächen) abgesucht und das Testing an Änderungen in der Benutzeroberfläche oder Umgebung angepasst wird.
Da der Algorithmus nicht von der Implementierung oder den Eigenschaften eines Objekts abhängt, läuft er so lange weiter, wie der Testablauf unverändert bleibt, sogar für den Fall, dass Objekte ihre Lage oder andere Eigenschaften verändern.
- Anbieter: Micro Focus, Tricentis, Applitools
Von der Computer-Vision einmal abgesehen, können Modelle für maschinelles Lernen verwendet werden, um das Design mobiler Benutzeroberflächen und ihre Eignung für andere domänenspezifische Tests zu bewerten. Die Nutzung von KI zur Bewertung der Benutzerfreundlichkeit steckt noch in den Kinderschuhen. Ansätze zum Selbstlernen mithilfe Künstlicher Intelligenz können Quality Engineers dabei unterstützen, menschliche Fehler und Voreingenommenheit zu reduzieren. Die Skalierung der Automatisierung im Quality Engineering wird durch den Einsatz selbstheilender RPA, also robotergestützter Prozessautomatisierung, erreicht.
- Anbieter: Kobiton, Digital.ai, Worksoft
Von Logs zu Tests: Nutzungsgesteuerte Regressionstests
Die Schwachstellen bei funktionalen Regressionstests sind der Verlust der Relevanz, eine unklare Abdeckung und ein unverhältnismäßiger Wartungsaufwand. Was wäre, wenn wir für jeden neuen Build den idealen Regressionstest haben könnten? Durch die Nutzung einer KI-Lösung könnte ein QS-Team eine Gauß’sche Glockenkurve der Nutzerflows bauen, welche die echten Nutzer spiegeln und diese Tests auf neue Builds anwenden. All das kann erfolgen, ohne irgendeinen Code zu schreiben.
- Anbieter: Appvance
Auf dem Weg zum autonomen Testen
KI-Plattformen sind bereits heute in der Lage, selbstständig Tests zu entwickeln und Fehler zu ermitteln – und zwar im Rahmen eines dreiteiligen Vorgehens:
- die KI darin trainieren, eine Ausgangsbasis für Benutzeroberflächen und API-Anfragen/-Antworten zu etablieren,
- den KI-Blueprint mit jedem neuen Build in Kontakt bringen, damit die KI selbstständig lernt, was sich geändert hat, und neue Skripts auf der Grundlage von Modellen und Grenzwerten entwickeln, die im Training bereitgestellt werden,
- die Skripts auf der Grundlage der Erkenntnisse aus den Standard-API-Produktionsprotokollen feinabstimmen und ein Upscaling der API-Anfragen zu UI-Aktionen vornehmen.
- Anbieter: Appvance
Mehr dazu findet sich in [AIforQE.4.1].
Nutzung von KI für Testdaten
KI kann bei der Entschärfung bestehender Risiken im Testdatenmanagement unterstützen. Hierzu erweitert sie das Konzept der synthetischen Testdaten, um eine angemessene Abdeckung der Testdaten sicherzustellen, die Datenschutzbestimmungen einzuhalten, welche die Verwendung von Produktionsdaten in Testumgebungen verbieten, und die Zeit zu verringern, die erforderlich ist, um repräsentative Testdaten für Ende-zu-Ende-Tests zu erstellen. Diese auf maschinellem Lernen beruhenden Systeme können jede Art von Daten synthetisch erstellen, während sie dabei die erlernten Eigenschaften und Beziehungen bewahren. Dadurch können geltende Regularien wie die DSGVO sicher eingehalten werden.
Sogeti hat eine auf Deep Learning beruhende Plattform unter dem Namen ADA (Artificial Data Amplifier) entwickelt. Sie erzeugt synthetische Daten, die wie echte Daten aussehen und sich auch so anfühlen. ADA bildet reale Daten ab und generiert synthetische Daten, die alle Beziehungen und Eigenschaften beibehalten. ADA bietet damit Zugriff auf alle relevanten Varianten von Daten, ohne das Vertrauen der Kunden, die Einhaltung von Bestimmungen, Datenschutz und Sicherheit zu gefährden.
- Anbieter : Sogeti
Mehr dazu findet sich in [AIforQE.5].
Nutzung von KI für Performance-Tests
Das Feld des Performance Engineering vollzieht einen Wandel, um mit der Geschwindigkeit und der Komplexität der Software Schritt zu halten. KI kann hier helfen, die dabei auftretenden Optimierungsprobleme zu lösen. Hierzu wird der Raum möglicher Konfigurationen intelligent durchsucht, um schnell eine ideale Konfiguration zu finden. Bei jedem Durchlauf wird eine Konfiguration angewendet, und die Systemleistung unter Last wird bewertet, um die nächste vielversprechende Konfiguration für den nächsten Versuch zu finden, und so weiter – bis man ein ideales Ergebnis erhält.
- Anbieter: Akamas
Mehr dazu findet sich in [AIforQE.6].
Nutzung von KI für Sicherheitstests
Viele Cybersicherheitsprobleme sind aufgrund ihrer Komplexität oder des schieren Datenvolumens, das erfasst, korreliert und analysiert werden muss, kaum zu bewältigen. Es ist, als müsste man Hunderte von Potenziometern auf einem Musikmischpult einstellen – mit welchem Drehknopf fängt man da am besten an?
Künstliche Intelligenz hilft uns, zusätzliche Sicherheitsfehler zu identifizieren und unser System vor Bedrohungen zu schützen. Der Einsatz von KI reduziert die Anzahl der Probleme, die bei der Codeüberprüfung durch Dritte gefunden werden. Das Erkennen gefährlicher Bibliotheken von Drittanbietern und das Wissen, durch welche Bibliotheken sie ersetzt werden sollten, kann die Wahrscheinlichkeit versehentlicher Sicherheitsprobleme ebenfalls verringern.
Mehr dazu findet sich in [AIforQE.7].
Fazit
Welche Rolle wird KI beim Quality Engineering in Zukunft spielen? Bestehende KI-Lösungen werden leichter zugänglich sein. Sie erfordern weniger manuelles Training und Programmierwissen. Anbieter werden versuchen, die Automatisierung voranzutreiben oder die Zeit zu verkürzen, die erforderlich ist, um Algorithmen zu trainieren.
- Die Analyse für Testergebnisse wird versuchen, Unit-, API-, UI- und End-to-End-Tests über die Analyse von Test-, UI- und Log-Output zu verknüpfen. Um ungetestete und unzureichend abgedeckte Testaktivitäten in allen Testing-Phasen zu identifizieren, wird die KI die Schnittstellen zu Coverage-Werkzeugen stärker nutzen.
- Schließlich wird die KI den Weg für Testautomatisierung ohne Programmieraufwand ebnen. Dieser Rahmen existiert bereits, um API-Aufrufe anhand kodierungsfreier Tools zu erstellen. Es gibt einen ähnlichen Rahmen, um die UI ohne Programmierung zu steuern.
- Mit der Zeit werden KI-Algorithmen in der Lage sein, Fehler zu prognostizieren und Entwicklern bei deren Abwendung zu helfen. Nicht prädiktive Ansätze, sondern präskriptive Ansätze sparen Zeit, indem das Hin und Her zwischen Entwicklung und Qualitätssicherung zur Fehlererkennung und -lösung reduziert wird.
- Darüber hinaus werden Künstliche Intelligenz und Algorithmen des maschinellen Lernens extensiver eingesetzt, um die Unterstützungsfunktionen des Software-Testing wie Testdaten-, Testumgebungsmanagement oder Impact-Analysen auf die Geschäftsprozesse zu automatisieren
Wenn Sie gerade dabei sind, sich in das Thema des Einsatzes der Künstlichen Intelligenz im Quality Engineering zu vertiefen, beginnen Sie mit einer Problemstellung, die Sie anspricht – ganz gleich, ob es sich um langsame, manuelle oder fehleranfällige Prozesse handelt. Es ist Zeit, sich für die Zukunft fit zu machen!
Referenzen
[AIforQE]
Link zum vollständigen Report:
https://www.sogeti.com/ai-for-qe/
[AIforQE.2]
Nutzung des Designs für das Quality Engineering, siehe:
https://www.sogeti.com/ai-for-qe/section-2-design/
[AIforQE.3]
Nutzung von maschinellem Lernen für das Quality Engineering, siehe:
https://www.sogeti.com/ai-for-qe/section-1-get-started/chapter-3/
[AIforQE.4]
Nutzung von Deep Learning für das Quality Engineering, siehe:
https://www.sogeti.com/ai-for-qe/section-1-get-started/chapter-4/
[AIforQE.3.1]
Nutzung von KI zur Messung, siehe:
www.sogeti.com/ai-for-qe/section-3-1-inform-measure/
[AIforQE.3.2]
Nutzung von KI zur Interpretation, siehe:
https://www.sogeti.com/ai-for-qe/section-3-2-inform-interpret/
[AIforQE.4.1]
Nutzung von KI zur Automatisierung, siehe:
https://www.sogeti.com/ai-for-qe/section-4-1-automate-see/
[AIforQE.5]
AI to manage, siehe:
https://www.sogeti.com/ai-for-qe/section-5-manage-data/chapter-4/
[AIforQE.6]
Nutzung von KI für die Performance, siehe:
https://www.sogeti.com/ai-for-qe/section-6-perform/
[AIforQE.7]
Nutzung von KI für die Sicherheit, siehe:
https://www.sogeti.com/ai-for-qe/section-7-secure/