Wege zum agilen Testmanagement

Schlauer testen

von - 27.10.2021
Menschliche Tester stehen vor einer ganzen Reihe von Herausforderungen. Sie müssen die richtigen Testfälle finden und priorisieren, Muster in großen Datenmengen ausfindig machen, Fehlerquellen identifizieren und mögliche Pro­bleme vorhersagen. Künstliche Intelligenz kann dabei in allen Bereichen helfen. „KI wird das Software-Testen enorm unterstützen“, ist sich Ramiro Millan von Progress sicher. Künstliche Intelligenz sei in vielen Fällen schneller und genauer als menschliche Experten: „Es wird deshalb zu einer engen Zusammenarbeit und guten Partnerschaft zwischen Mensch und Maschine kommen, und das wird unweigerlich die Art und Weise fundamental verändern, wie wir Software-Tests durchführen.“
Ramiro Millan
Director Product Management, Developer Tools bei Progress
Foto: Progress
KI wird das Software-Testen enorm unterstützen.
Machine Learning lässt sich beispielsweise bei der statischen Code-Analyse einsetzen, um Anomalien zu identifizieren, die bei der herkömmlichen Analyse unentdeckt blieben. „Diese Technik, die besonders nützlich ist, um Ano­malien in der API-Nutzung zu finden, kann insbesondere für beliebte Betriebssystemschnittstellen oder Open-Source-Bibliotheken eingesetzt werden“, sagt Verifysoft-Geschäftsführer Lambertz. „Die Erfahrung zeigt, dass ein erheblicher Anteil der über die KI gefundenen Anomalien echten Defekten entspricht.“
KI-basierte Testautomatisierung macht es laut Nick Mears von Micro Focus überflüssig, für jede zu testende Plattform eigene Skripte zu erstellen. Der Anbieter kombiniert beispielsweise Machine Learning, Natural Language Processing, Computer Vision und neuronale Netze, um unabhängig von Plattformen, Geräten oder Browsern testen zu können. „Grundsätzlich heißt das, dass die KI genauso testen würde wie ein Mensch, nämlich visuell, ohne sich auf den komplexen Skriptcode zu konzentrieren.“
Das österreichische Start-up Symflower setzt auf Künstliche Intelligenz, um die Erstellung der Unit-Tests zu automatisieren. Dem Anbieter zufolge lassen sich auf diese Weise Testfälle im Vergleich zum manuellen Schreiben um mehrere Größenordnungen schneller generieren. Symflower nutzt dazu „Symbolic Execution“, eine KI-Methode, bei der Gleichungssysteme statt konkreter Werte für die Testfälle eingesetzt werden. „Das erlaubt es uns, alle Ausführungsmöglichkeiten eines Programms zu betrachten und Fehlerquellen flächendeckend zu identifizieren“, erklärt Evelyn Haslinger, Managing Director/Operations bei der Symflower GmbH.
Sergej Dechand
Gründer und Geschäftsführer von Code Intelligence
Foto: Simon Hecht
Wir überlassen das Testen nicht dem Zufall, sondern versuchen möglichst alle Zustände zu erreichen, die auftreten können.
Derzeit kommen die Kunden hauptsächlich aus dem Banken- und Versicherungswesen sowie aus der Telekommunikation. „Wir unterstützen aktuell die Programmiersprachen Java und Go“, sagt Haslinger, „die typischerweise im Businesslogikbereich beziehungsweise bei Server-In­frastrukturanwendungen im Einsatz sind.“
Methoden und Konzepte des Software-Testings
Diese Testtypen sollten Sie kennen:
  • Akzeptanztest: auch User Acceptance Test (UAT) oder Abnahmetest genannt; letzte Phase vor einem Release, in der geprüft wird, ob die Software aus Be­nutzersicht wie beabsichtigt funktioniert. Wird idealerweise vom Product Owner oder Kunden durchgeführt.
  • Dynamische Tests: Im Unterschied zu statischen Verfahren werden dynamische Tests zur Laufzeit eines Programms ausgeführt. Dadurch sollen vor allem Fehler erkannt werden, die im Zusammenhang mit Laufzeitparametern auftreten.
  • Fuzz-Testing: Beim Fuzz-Testing werden Applikationen mit zufälligen Eingaben konfrontiert. So soll verhindert werden, dass die Anwendung bei unerwarteten Ereignissen abstürzt oder Sicherheitslücken aufweist.
  • Headless-Testing: Test von Webapplikationen über einen Headless-Browser ohne grafische Benutzeroberfläche. Die Testfälle werden über die Kommandozeile gesteuert, was eine Testautomatisierung wesentlich erleichtert.
  • Integrationstest: Prüft, ob Komponenten eines Software-Systems fehlerfrei zusammenarbeiten.
  • Modultest: auch Unit-Test oder Komponententest genannt; frühe Teststufe im Entwicklungsprozess, in der einzelne Komponenten einer Software auf Fehlerfreiheit überprüft werden.
  • Regressionstest: Wiederholung von Testfällen, nachdem in einem bereits ver­öffentlichten Release Änderungen vorgenommen wurden.
  • Statische Code-Analyse: Überprüfung des Quellcodes auf Fehler. Neben stilistischen Verfahren kommen vor allem semantische Tests zum Einsatz, die den Code gezielt auf Schwachstellen wie Pufferüberläufe oder Speicherlecks prüfen.
  • Usability-Tests: Überprüfung der Benutzerfreundlichkeit und Bedienbarkeit einer Software; Usability-Tests kommen vor allem im E-Commerce, der App-Ent­wicklung und anderen Bereichen zum Einsatz, in denen Transaktionen mit Endkunden eine große Rolle spielen.

Fazit

Software-Testing ist essenziell, um die Qualität und Sicherheit von Applikationen zu optimieren. Ob man dabei einem eher risikobasierten Ansatz folgt, wie Roman Zednik von Tricentis empfiehlt, oder auf möglichst breites Testen durch Fuzzing-Methoden und KI setzt, hängt im Wesentlichen von der eigenen Risikobereitschaft ab, aber auch von den Folgen, die Software-Fehler nach sich ziehen können. Im Automobilsektor oder dem medizinischen Bereich wird man daher andere Maßstäbe anlegen als bei der Entwicklung einer Spiele-App.
Vor allem aber müssen Unternehmen die Vorstellung überwinden, Software-Testing sei in erster Linie ein Kostenfaktor und bremse die Entwicklung aus. „Software-Tests tragen – wenn sie richtig eingesetzt werden – nicht nur zur Qualitätssteigerung, sondern ganz erheblich auch zur Kostensenkung bei“, sagt Verifysoft-Geschäftsführer Klaus Lambertz.
Verwandte Themen