DevOps
27.10.2021
Im Spannungsfeld von DevOps und Continuous Development

Wege zum agilen Testmanagement

Shutterstock / Andrey Suslov
Wie Unternehmen Funktionsfähigkeit, Benutzerfreundlichkeit und Sicherheit von Applikationen optimieren können.
Kann man sich auf Software verlassen, die seit 25 Jahren kontinuierlich weiterentwickelt wird  und die bei Millionen von Unternehmen im Einsatz ist? Die Antwort lautet: lieber nicht! Zumindest nicht, wenn es sich um Microsoft Exchange Server handelt. Gravierende Sicherheitslücken in den Versionen 2010 bis 2019 führten im Januar und Februar 2021 dazu, dass Hacker Hunderttausende von Exchange-Servern übernehmen konnten.
Das nach einer vermutlich regierungsnahen chinesischen Hackergruppe namens Hafnium benannte Debakel ist nur die Spitze des Eisbergs. Die CVE-Liste (Common Vulnerabilities and Exposures), eine Sammlung öffentlich bekannter Schwachstellen, umfasst mehr als 200.000 Einträge. Allein dieses Jahr kamen bis Mitte April über 8000 neue hinzu. Die auf der Plattform Hacker One organisierten Pentester und Cybersecurity-Spezialisten finden im Durchschnitt alle 2,5 Minuten eine Sicherheitslücke. Die Gesamtmenge aller dort dokumentierten Lücken beläuft sich auf mehr als 565.000. Diese Zahlen dürften eigentlich niemanden überraschen. Laut der von Veracode, einem Spezialisten für Applikationssicherheit, herausgegebenen Studie „State of Software Security“ weisen 76 Prozent aller Anwendungen mindestens eine Sicherheitslücke auf. Rund die Hälfte der Schwachstellen ist sechs Monate nach ihrer Entdeckung noch nicht behoben.
Jürgen Bernert, Geschäftsführer von Avision, Spezialist für Software-Modernisierung, glaubt, dass diese Zahlen sogar noch untertrieben sind: „Ich gehe davon aus, dass sich in 100 Prozent der Software Sicherheitslücken finden lassen.“ Mit Testlösungen wie Vega Vulnerability Scanner, HP Fortify und anderen ließen sich viele Schwachstellen zwar aufdecken, das allein reiche aber nicht aus. „Wenn Entwickler keinen Wert auf Sicherheit legen, nutzt das beste Testen nichts.“
Hinzu kommt laut Klaus Lambertz, Gründer und Geschäftsführer der Verifysoft Technology GmbH, dass außerhalb sicherheitskritischer Bereiche die Überprüfung von Software auf Bugs noch immer eher stiefmütterlich behandelt wird. „Bei den funktionalen Tests mag das Produkt dann funktionieren“, erklärt Lambertz. „Ändern sich aber die Umstände – etwa durch eine andere Nutzung oder Erweiterung der Software, können Fehler auftreten, die bei den funktionalen Tests nicht aufgedeckt worden sind.“
„Testen ist nicht dazu da, Fehler zu finden“
com! professional sprach mit Oral Avcι, Leiter Competence Center Testing beim IT-Dienstleister  Adesso, darüber, warum Unternehmen nicht aus Fehlern lernen und was die wirklichen Ziele des Software-Testens sind.
com! professional: Herr Dr. Avcι, Sie beschäftigen sich seit vielen Jahren mit dem Software-Testen in der Software-Entwicklung. Wo sehen Sie aktuell die größten Herausforderungen?
Oral Avcι: Das Testen wird zunehmend komplexer und anspruchsvoller. Zwar entwickeln sich auch die Methoden weiter, aber die Praxis hinkt oft hinterher. Darüber hinaus beschleunigen sich die Release-Zyklen, was die Anforderungen an das Testtempo erhöht. Schließlich steigt auch der Anteil der Abläufe, die digital abgebildet und durch Software-Systeme unterstützt werden. Der Digitalisierungsschub im vergangenen Jahr hat diesen Trend noch verstärkt. Und wo viel Software eingesetzt wird, muss auch viel getestet werden.
com! professional: Welchen Stellenwert hat das Testen in den Unter­nehmen?
Avcι: Das Thema wird unterschätzt, sowohl was den Aufwand und Zeitbedarf angeht, als auch was die Qualifikation des Testpersonals betrifft.
com! professional: Gilt das Testen denn immer noch als Kostenfaktor und Bremse?
Avcι: Zum Glück muss man nicht mehr generell über die Notwendigkeit des Testens diskutieren. Aber das Thema ist nach wie vor von Missverständnissen geprägt. In der Wahrnehmung vieler Unternehmen generiert ein Entwickler Mehrwert, ein Tester vor allem Kosten. Es herrscht immer noch die Vorstellung, das Ziel des Testens sei es, Fehler zu finden.
com! professional: Ist das denn nicht so?
Avcι: Nein, Testen ist nicht dazu da, Fehler zu finden, sondern Transparenz über die Qualität einer Software zu schaffen. Fehler sind ein Baustein dieser Transparenz genauso wie erfolgreich ausgeführte Testfälle. Das Testen stellt eine Momentaufnahme des aktuellen Zustands dar und hilft Entscheidungsträgern dabei, die Frage zu klären, wie kritisch die gefundenen Software-Fehler sind, und ob ein Release veröffentlicht werden kann oder nicht. Testen ist wie eine Versicherung. Man nutzt es, um bestimmte Risiken zu vermeiden. Wenn nichts passiert, kann wie bei einer Versicherung leicht der Eindruck entstehen, dass die Maßnahmen eigentlich überflüssig sind und nur Kosten verursachen.
com! professional: Wie entscheide ich über Art und Umfang der Tests?
Avcι: Das hängt vom Qualitätszielprofil der Software ab. Die Steuerung für einen Herzschrittmacher stellt andere Herausforderungen an das Testen als ein Handy-Spiel. Auch die Zielgruppe spielt eine wichtige Rolle. Auf einem öffentlich zugänglichen E-Commerce-Portal sind Usability-Tests wesentlich wichtiger als bei einem internen System, wo man Schwächen in der Benutzerführung unter Umständen durch intensivere Schulungen kompensieren kann.
com! professional: Wann kann eine Software als ausreichend getestet gelten?
Avcι: Viele Unternehmen denken, wenn die Software einmal geprüft und veröffentlicht wurde, ist die Sache erledigt. Tatsache ist aber: Bei jeder Anpassung muss wieder getestet werden. Gerade bei Modernisierungsprojekten, wo oft wenig an der Funktionalität, aber viel an der Architektur geändert wird, sind gründliche Tests unerlässlich. Vor allem bei Fachanwendern herrscht allerdings oft Unverständnis, warum sie erneut testen sollen, obwohl sich an den Funktionen gar nichts geändert hat. Bestimmte Probleme, etwa im Zeitverhalten oder bei der Sicherheit einer Software, findet man außerdem nicht, wenn man nur punktuell auf Funktionalität prüft. Dazu braucht es qualifiziertes Testpersonal.
com! professional: Wie gehen Unternehmen mit Software-Fehlern um? Lernen Sie daraus?
Avcι: Das ist leider viel zu selten der Fall. Meist werden Fehler erfasst, in ein Defect-Management-System eingetragen und behoben. Die Ursachen werden aber nicht analysiert. Um wirklich daraus lernen zu können, muss man einen Schritt zurückgehen und sich fragen: Wie ist das Problem entstanden? Gibt es bestimmte Muster? Häufen sich Fehler an bestimmten Stellen? Nur so kann man die Ursachen an der Wurzel bekämpfen.
com! professional: Und was sind die häufigsten Ursachen für Software-Fehler?
Avcι: Meines Erachtens liegt es in der Mehrzahl der Fälle an einem mangelhaften Requirements Engineering. Vergessene, unvollständige oder missverstandene Anforderungen führen zu Change Requests, die man hätte vermeiden können. Wenn Fehler aber nur stur abgearbeitet werden, fallen diese Zusammenhänge nicht auf.
com! professional: Wie kann man Fehler finden, die man nicht erwartet hätte? Ist das überhaupt möglich?
Avcι: Das ist tatsächlich ein Problem. Qualifizierte Tester prüfen daher auch Anwendungsfälle, die gar nicht vorgesehen sind. Wenn etwa ein Feld für einen bestimmten Zeichensatz und eine definierte Maximallänge der Zeichenkette spezifiziert ist, wird es der Tester mit Eingaben außerhalb dieser Spezifikation konfrontieren. Es gibt immer noch Systeme, die durch solche unerwarteten Ereignisse in einen undefinierten Zustand gebracht werden können. Ein anderes Beispiel sind mobile Lösungen. Sie müssen natürlich auch bei schwacher Netzabdeckung oder Verbindungsabbrüchen funktionieren – was getestet werden muss.
com! professional: Lässt sich so das Ziel einer fehlerlosen „Zero Defect“-Software erreichen?
Avcι: Das wird eine Wunschvorstellung bleiben. Tests können immer nur stichprobenartig prüfen, man kann nicht erschöpfend testen. Es handelt sich stets um eine Risikoabschätzung.
com! professional: Wie lassen sich Tests effizienter gestalten?
Avcι: Es gibt empirische Untersuchungen, dass sich Fehler an bestimmten Stellen häufen. Auf solche Bereiche muss man sich konzentrieren, statt nach dem Gießkannenprinzip das Lastenheft durchzutesten. Diesen risikobasierten Ansatz muss man aber auch methodisch umsetzen und nicht einfach nur „nach Gefühl“.
com! professional: Welche Rolle spielt dabei die Automatisierung?
Avcι: Ohne Testautomatisierung wird keine Organisation Release-Zyklen beschleunigen und gleichzeitig die Testabdeckung aufrechterhalten oder sogar erweitern können. Die Frage ist nur, was genau man automatisiert. Auch da gibt es häufig falsche Erwartungen. Die Hoffnung, mit Automatisierung schnell Personal einsparen und auf Tester verzichten zu können, ist fatal.
com! professional: Wie können Unternehmen eine Testautomatisierungs-Strategie erfolgreich umsetzen?
Avcι: Sie sollten die Testautomatisierung wie ein Entwicklungsprojekt betrachten. Letztendlich ist die Automatisierungslösung auch nur ein Stück Software, an das die üblichen Kriterien der Wartbarkeit, Modularität und Erweiterbarkeit anzulegen sind. Vor allem aber muss die Architektur der Automatisierungslösung so flexibel sein, dass sie sich einfach an Veränderungen in der zu testenden Software anpassen lässt. Wir erleben immer wieder, dass Automatisierungsprojekte „mal schnell“ aufgesetzt werden, ohne auf diese Flexibilität zu achten. Beim nächsten Release-Wechsel ist dann der Aufwand für die Anpassung so hoch, dass lieber wieder auf manuelles Testen umgestellt wird.
com! professional: Sie betonen immer wieder die Bedeutung qualifizierter Tester. Finden Unternehmen solche Experten überhaupt am Markt?
Avcι: Das ist schwierig, es gibt ein krasses Missverhältnis zwischen dem Riesenbedarf an Testern und den Ausbildungsangeboten. Das Thema ist in den Lehrplänen der Studiengänge Informatik und Wirtschaftsinformatik völlig unterrepräsentiert. Es ist allenfalls ein kleiner Abschnitt in einer Vorlesung. Das müsste sich dringend ändern, um dem Bedarf an Experten und der Bedeutung des Testens in der Praxis gerecht zu werden.
com! professional: Die Rolle des Testers ist natürlich auch nicht so attraktiv wie die eines Data Scientists oder Cloud-Architekten …
Avcι: … dabei ist das ein ausgesprochen anspruchsvoller und interessanter Beruf. Tester stehen im Mittelpunkt der Software-Erstellung, sie sind der Brückenbauer zwischen Fachbereich, Entwicklung und Betrieb, haben koordinierende, planende und technische Aufgaben. Sie können mit einer Fehlerstichprobe nicht nur Aussagen über die Software-Qualität machen, sondern auch gezielt Hinweise geben, wie die Ursachen abgestellt werden können.
com! professional: Was muss man mitbringen, um für den Testberuf geeignet zu sein?
Avcι: Neben der fachlichen Expertise zeichnet Tester ein gewisser kritischer Professionalismus aus. Man muss Spaß daran haben, eine Software auseinanderzunehmen, Annahmen auf ihre Korrektheit zu überprüfen und Fehler zu finden.

Schneller testen

Eine Ursache für die gravierenden Sicherheitsprobleme liegt im zunehmenden Tempo bei der Software-Entwicklung: „Die größte Herausforderung ist es, mit den mittlerweile extrem schnellen Zyklen bei der Markteinführung von Software Schritt zu halten und dabei den gestiegenen Qualitätsanforderungen gerecht zu werden“, erklärt Ramiro Millan, Director Product Management, Developer Tools bei Progress. Dafür müssten Unternehmen ihre Teststrategie agiler und schlanker gestalten, meint Roman Zednik, VP Presales Solution Architects bei Tricentis: „Ohne den Einsatz von Testautomatisierung ist dies heutzutage nicht mehr möglich. Manuelles Testen muss auf ein Minimum reduziert werden.“ Laut Nick Mears, Functional Testing Product Marketing Manager bei Micro Focus, beschleunigt Automatisierung das Testen deutlich: „Durch den Wechsel von manuellen zu automatisierten Tests konnten einige unserer Kunden die Testzeit von drei bis vier Arbeitstagen auf nur noch eine Nacht reduzieren.“
Avision-Geschäftsführer Bernert warnt jedoch vor übertriebenen Hoffnungen in die Automation: „Man muss den Kunden sagen, dass eine Testautomatisierung nicht billiger ist als manuelles Testen.“ Auch der Pflegeaufwand für eine automatisierte Testumgebung sei nicht zu unterschätzen: „Ich habe viele gute Test-Frameworks veralten sehen.“ Vor allem die traditionelle skriptbasierte Testautomatisierung erfordert ständiges Nachjustieren. Ändern sich Abläufe oder Abhängigkeiten, müssen die Skripte jedes Mal angepasst werden – ein mühsamer Prozess, der selbst für Fehler anfällig ist. Nick Mears’ Kollege Don Jackson, Chief Technologist, Application Delivery Management bei Micro Focus, empfiehlt Unternehmen deshalb, auf eine robuste Automatisierung zu achten: „Um robust zu sein muss die Automatisierung folgende Charakteristika erfüllen: Sie muss belastbar sein und darf nicht abhängig von der Fertigstellung des Codes sein. Des Weiteren sollte sie in die vorhandene Pipeline integrierbar sein, angemessen datenorientiert und vollständig auf die Geschäftslogik, einschließlich der Geschäftsprozesse, abgestimmt sein.“
Schnelleres Testen lässt sich nach Ansicht von Roman Zednik aber auch dadurch erreichen, dass man weniger testet: „Im Durchschnitt bieten 67 Prozent der großteils manuell durchgeführten funktionalen Tests keinen Mehrwert.“ Der Tricentis-Manager empfiehlt statt flächendeckender Tests einen risikobasierten Ansatz: „Unternehmen können den Großteil ihrer Risiken mit nur wenigen Tests abdecken. 20 Prozent des Aufwands reichen bereits aus, um 80 Prozent der Geschäftsrisiken abzudecken.“ Schnelle Risikobewertungen und strukturierte Methoden zum Test-Case-Design helfen dabei, zu bestimmen, welche Tests das sind. „Automatisiert man diese, erhöht sich die Release-Frequenz deutlich.“ Zednik plädiert für eine „neue Währung“ im Software-Testing: „Wir müssen umsteigen und anstatt der Anzahl der Testfälle die erzielte Risikoabdeckung als neue Messgröße einführen.“

Früher testen

Ein weiterer Ansatz, der Software-Qualität bei kürzeren Release-Zyklen garantieren soll, ist „Shift Left“: Das Testen soll früher in die Entwicklungs-Pipeline integriert werden und nicht erst als großer Block am Ende einer Release-Phase stehen. „Das Shift-Left-Testing hilft, Probleme anzugehen, bevor sie auftreten“, sagt Ramiro Millan von Progress. „Idealerweise wird der Code bereits vom Beginn der Entwicklung an regelmäßig statisch untersucht“, ergänzt Klaus Lambertz. Es sei erst dann sinnvoll, den Code durch Code-Reviews, Unit-Tests oder Integrationstests zu prüfen, wenn die statische Code-Analyse keine Fehler mehr anzeigt, so der Verifysoft-Geschäftsführer weiter. Statische Code-Analyse-Tools überprüfen den Code auf Syntax, Semantik, Kontrollfluss- und Datenflussanomalien, Nebenläufigkeitsprobleme sowie die Einhaltung von Codierrichtlinien und -standards. „Werkzeuge für die statische Analyse decken ohne Schreiben von Testfällen eine Vielzahl von Bugs auf und identifizieren sicherheitsgefährdende Schwachstellen“, sagt Lambertz. Die erfassten Code-Metriken geben außerdem Hinweise auf Qualitätsmerkmale wie Wartbarkeit, Erweiterbarkeit, Analysierbarkeit und Testbarkeit der Software, so Lambertz weiter. „Um die Software-Qualität langfristig zu sichern und die Release-Frequenz erhöhen zu können, macht die Beachtung von Metriken durchaus Sinn.“
Sergej Dechand, Gründer und Geschäftsführer der Firma Code Intelligence, die eine Plattform für automatisierte Software-Security-Tests anbietet, warnt allerdings davor, statische Code-Analysen überzubewerten: „Das reine Scannen des Codes führt dazu, dass viele Fehler übersehen und jede Menge Fehlalarme generiert werden.“ Sobald die Software lauffähig ist, sollten die statischen Analysen durch dynamische ergänzt werden. „Bei sicherheitskritischer Software – also Software, bei der im Problemfall Menschen zu Schaden kommen können – sind dynamische Testverfahren und der Nachweis der Testabdeckung aus gutem Grund verpflichtend“, betont Klaus Lambertz.

Breiter testen

Programmierer und Tester stehen vor der Herausforderung, dass sich das ganze Spektrum möglicher Nutzeraktionen nur schwer vorhersehen lässt. Unerwartete Eingaben können zu Sicherheitslücken und Qualitätsproblemen führen. „Bei funktionalen Tests fokussiert man sich auf die er­warteten Anforderungen“, erklärt Code-Intelligence-Chef Dechand. „Es gibt aber so viele andere Ereignisse, die passieren können, an die ein Entwickler vielleicht nicht denkt.“ Jürgen Bernert von Avision empfiehlt daher, eine zweite Qualitätsstufe einzubauen und einen unabhängigen Tester mit der Überprüfung zu betrauen. „Wir haben eigens Kollegen im Team, die genau für diese Aufgabe zuständig sind.“
Eine weitere Möglichkeit, auch unerwartete Eingaben zu finden, die Fehler oder Sicherheitsprobleme nach sich ziehen, ist das sogenannte Fuzz-Testing. Seit den 1980er- Jahren nutzt man dieses Verfahren, um nach der Schrotschussmethode Software so lange mit zufälligen Eingaben zu konfrontieren, bis diese abstürzt. Code Intelligence hat diesen Ansatz verfeinert und weiterentwickelt. Die Lösung des Anbieters analysiert Reaktionen der Software auf Eingaben und passt die Testfälle auf Basis der Ana­lyseergebnisse so an, dass die Code-Abdeckung maxi­miert wird. „Wir überlassen das Testen nicht dem Zufall, sondern versuchen, möglichst alle Zustände zu erreichen, die auftreten können“, erklärt Dechand. Je breiter die Abdeckung, desto mehr potenzielle Sicherheitslücken und Fehler würden aufgedeckt. „So lässt sich der Grad der IT-Sicherheit in Software deutlich erhöhen“, verspricht der CEO von Code Intelligence.
Dechand vergleicht seine Lösung gerne mit Penetra­tionstests, bei denen Security-Experten versuchen, Software zu hacken und in Systeme einzudringen. Da sie jedoch nur ein begrenztes Zeitbudget zur Verfügung haben, finden sie nicht notwendigerweise alle kritischen Sicherheitslücken. „Ein Pentester hat vielleicht fünf Tage Zeit für seine Prüfung – was passiert aber, wenn ein Krimineller zehn Tage in seinen Angriff investiert?“, fragt Dechand. Die Code-Intelligence-Lösung skaliere wesentlich besser als der Einsatz von Personal und könne so die Risiken weiter reduzieren: „Wir finden auch nach abgeschlossenen Pentests fast immer noch Fehler.“ Fuzz-Testing entlaste außerdem die menschlichen Experten: „Statt sich mit trivialen Code-Fehlern zu beschäftigen, können sich Pentester auf Fehlerklassen konzentrieren, bei denen wir nicht so gut sind, etwa Fehler in der Kryptografieanwendung oder bei Pfaden, die sich nicht automatisiert erreichen lassen.“
Die Vorteile des Fuzz-Testings werden laut Dechand auch zunehmend von Behörden und Standardisierungsgremien erkannt. „Im Sommer wird mit der ISO 21434 ,Road ve­hicles – Cybersecurity engineering‘ ein neuer Standard zur Cyber-Security im Automobilbereich veröffentlicht, in dem Fuzz-Testing als Ersatz für Pentesting genannt wird.“ Auch im medizinischen Bereich gebe es ähnliche Ansätze. „Ich denke, es ist nur eine Frage der Zeit, bis auch die Bafin und ähnliche regulatorische Instanzen das Fuzz-Testing zum Pflichtprogramm hinzufügen.“
Tabelle:

Schlauer testen

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.“
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.
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.

mehr zum Thema