Testautomatisierung: Die Vorteile der Qualitätssicherung in der Softwareentwicklung
Da digitale Unternehmen zunehmend Wert auf Softwarequalität und die Einhaltung von Release-Terminen legen, gewinnen Technologien zur Testautomatisierung, die in den letzten Phasen des Testens und der Qualitätssicherung (QA) zum Einsatz kommen, zunehmend an Bedeutung.

Da digitale Unternehmen zunehmend Wert auf Softwarequalität und die Einhaltung von Release-Terminen legen, gewinnen Technologien zur Testautomatisierung, die in den letzten Phasen des Testens und der Qualitätssicherung (QA) zum Einsatz kommen, zunehmend an Bedeutung.
Die zehnte Ausgabe (2018–2019) des „World Quality Report“, der von Capgemini und Sogeti in Zusammenarbeit mit Micro Focus veröffentlicht wurde, zeigt, dass Automatisierung ein wesentlicher Bestandteil agiler und DevOps-Praktiken ist und als wirksamstes Mittel zur Steigerung der Benutzerleistung dient.
Der Bericht, der auf Befragungen von rund 1.700 IT-Führungskräften in 32 Ländern (darunter 50 Befragte aus Italien) basiert, unterstreicht, wie wichtig es ist, die Nutzerzufriedenheit als vorrangiges Ziel bei Tests und der Qualitätssicherung sicherzustellen. Dieses Ziel wurde in diesem Jahr von 42 % der Befragten als entscheidend eingestuft – ein Anstieg gegenüber 27 % im Jahr 2017 –, ebenso wie die Notwendigkeit, Fehler vor der Inbetriebnahme zu identifizieren (42 %, gegenüber 34 % im Jahr 2017). Für 41 % der Befragten (im Vergleich zu 29 % im Jahr 2017) tragen Qualitätssicherung und Testkapazitäten zum Geschäftswachstum und zum Unternehmensumsatz bei.
Qualitätssicherung und Testautomatisierung revolutionieren den Entwicklungszyklus. Nach jahrelangem Einsatz in spezifischen, isolierten Umgebungen haben sich diese Verfahren ausgeweitet und gestalten den Entwicklungszyklus neu.
Den Autoren zufolge drehen sich die derzeit wichtigsten Trends um modellbasiertes Testen (zur automatischen Skriptgenerierung und zum automatisierten Testen; laut 61 % der Befragten voraussichtlich ab dem nächsten Jahr verfügbar), robotergestützte Prozessautomatisierung (RPA, 54 %) und kognitive Automatisierung (49 %). Das automatisierte Testen von APIs zeichnet sich als aufkommender Trend für die nächsten zwei Jahre ab. Dem Bericht zufolge werden bereits 18 % der Funktionstests mit Skript-Tools durchgeführt, während 16 % Testautomatisierungstools nutzen. Automatisierung kommt bei 16 % der Leistungstests und bei 16 % der Sicherheitstests zum Einsatz. Darüber hinaus setzen 15 % der Befragten in allen Szenarien eine End-to-End-Testautomatisierung ein.
Ist die Automatisierung von Testszenarien eine geeignete Lösung?
Testszenarien können automatisiert werden, wenn wichtige Funktionen wiederholte Tests erfordern oder zu komplex sind, um manuell durchgeführt zu werden. So eignen sich beispielsweise Tests mit großen Datenmengen oder komplizierten Dateneingabeverfahren für die Automatisierung.
Die Vorteile von Testautomatisierungstools gegenüber manuellen Tests
Heutzutage ist die Testautomatisierung eine unverzichtbare Strategie, insbesondere bei der Analyse komplexer Produkte oder Anwendungen mit Tausenden oder Millionen von Codezeilen, die langwierige, sich wiederholende und mühsame Testroutinen erfordern. Mithilfe von Testautomatisierungstools können Tester nicht nur ihre Arbeit beschleunigen, sondern auch potenzielle Fehler reduzieren oder ganz vermeiden. Automatisierte Tests können so programmiert werden, dass sie unbeaufsichtigt ablaufen und den Vergleich der Ergebnisse mit den erwarteten Ergebnissen erleichtern. Dies bedeutet jedoch keinen Kontrollverlust, da Testautomatisierungstools Berichtsfunktionen integrieren können, die die Aktivitäten jedes Testskripts aufzeichnen und den Fortschritt sowie den Status zu jedem beliebigen Zeitpunkt überwachen.
Durch Testautomatisierung können Sie Zeit und Ressourcen sparen, indem Sie die Genauigkeit und den Umfang der Tests verbessern und gleichzeitig Programmierfehler und Fehler effektiver und effizienter identifizieren. Außerdem ermöglicht sie es Qualitätssicherungsteams (QA), die Wiederverwendbarkeit und den Einsatz von Testautomatisierungsskripten zu steigern und so bei jeder neuen Codeüberprüfung eine einheitliche Testkonfiguration und einheitliche Testabläufe zu gewährleisten. Darüber hinaus ermöglicht die Testautomatisierung die Automatisierung von Funktionstests, Leistungstests und Belastungstests in großem Umfang. So kann sie beispielsweise eingesetzt werden, um Prüfungen in mehrsprachigen Infrastrukturen und an verteilten Standorten in verschiedenen geografischen Regionen durchzuführen.
Im Rahmen des DevOps-Modells gewinnt die Testautomatisierung noch mehr an Bedeutung
Die Bedeutung von Testautomatisierungstools nimmt im Kontext des DevOps-Modells weiter zu, das im Gegensatz zu traditionellen Methoden, die auf dem klassischen „Kaskaden“-Paradigma basieren, darauf abzielt, die Agilität und Automatisierung im Softwareentwicklungs- und -bereitstellungszyklus zu verbessern. Heute sind agile und DevOps-Entwicklungsmethoden in IT-Abteilungen weit verbreitet, um Software-Releases zu beschleunigen, Kosten zu senken und die Codequalität sowie die Zuverlässigkeit zu gewährleisten. Durch CI/CD-Praktiken (Continuous Integration, Continuous Delivery/Continuous Deployment) fördert DevOps eine vollständig integrierte und automatisierte Pipeline für die Erstellung, Verteilung und Implementierung von Code.
Innerhalb dieser hochautomatisierten Pipeline sollte die Testphase den Gesamtprozess jedoch nicht behindern. Daher setzt das DevOps-Modell auf kontinuierliches Testen, bei dem der Code in jeder Phase des kontinuierlichen Bereitstellungsprozesses durch einen rekursiven Mechanismus für kontinuierliches Feedback getestet wird. Wenn beispielsweise Code geändert wird, wird er sofort durch eine Reihe automatisierter Unit-Tests überprüft. Schlägt der Test fehl, wird der Code abgelehnt; ist er erfolgreich, gelangt er in die nachfolgenden Bereitstellungsphasen und so weiter. Ergänzt wird das kontinuierliche Testen durch das „Shift-Left-Testing“, eine Strategie, die darauf abzielt, Softwaretests bereits früh im Entwicklungszyklus einzuführen.
Ein zentraler Bestandteil des kontinuierlichen Testens
Kontinuierliches Testen als Testmethodik lässt sich nicht allein durch die Einführung neuer Technologien oder Testwerkzeuge erreichen; es erfordert einen kulturellen Wandel in der Denkweise der Tester sowie eine Umgestaltung der Entwicklungsprozesse. Ohne geeignete Testautomatisierungswerkzeuge lässt sich kontinuierliches Testen jedoch nicht umsetzen.
Im Rahmen des kontinuierlichen Testens werden automatisierte Tests eingesetzt, um verschiedene Vorgänge automatisch auszuführen. Dazu gehören beispielsweise die Überprüfung einzelner Komponenten und Programmcodeabschnitte (Unit-Tests), Funktionstests, Regressionstests (die darauf abzielen, die Softwarefunktionalität nach der Hinzufügung neuer Features und Funktionen zu validieren) sowie Integrationstests (bei denen das Systemverhalten ganzheitlich sowie die Korrektheit der Interaktionen zwischen Programmmodulen, APIs, Drittanbietersoftware und anderen Komponenten der Anwendungsarchitektur bewertet werden).


