Testing innerhalb von Entwicklungsprozessen digitaler Projekte


Im Rahmen digitaler Transformationsprozesse entstehen digitale Produkte, die in der Regel von einer Vielzahl an Personen gesteuert und entwickelt werden. Somit ist es naheliegend, dass diese Produkte mehr oder weniger fehlerbehaftet sind. Aufgabe eines integrierten Projektmanagements ist es daher, notwendige Testzyklen während des Entwicklungsprozesses zu berücksichtigen. Nur so kann eine erfolgreiche Fertigstellung innerhalb der vorgegebenen Budget- und Zeitrahmen ermöglicht werden. Um digitale Produkte auf Fehler zu überprüfen, sind die Methoden und Techniken des Software-Testings nach den Standards ISO/IEC/IEEE 29119 geeignet. Im Folgenden sollen grundlegende Fragen zum Testing geklärt werden.
  • Was ist ein Bug?
Der Begriff Bug im Kontext des Testings beschreibt einen Fehler im Programm, der zu einer Fehlfunktion der Laufzeitumgebung oder sogar zu einem Systemabsturz führen kann. Gegensätzlich zu physikalischen Systemen entstehen Bugs nicht mit voranschreitender Weiterentwicklung des Systems, sondern befinden sich seit Beginn des Entwicklungszyklus im Code. Erst durch Testläufe des jeweiligen Codeabschnittes können sogenannte Fehlerwirkungen (engl. failure) festgestellt werden. Mit steigender Komplexität des Programms erhöht sich auch dessen Anfälligkeit für Fehler. Man kann zwischen technischen Bugs, funktionalen Bugs und Bugs in der Benutzeroberfläche (UI) unterscheiden.
  • Was ist (Applikations-)Testing?
Testen wird oft mit Debugging gleichgesetzt. Diese beiden Begriffe beschreiben jedoch unterschiedliche Tätigkeiten im Produktentwicklungszyklus. Während Debugging die Behebung eines Fehlerzustands beschreibt (Make it!) ist es Aufgabe des Tests, Fehlerwirkungen gezielt und systematisch aufzudecken (Break it!). Unter dem Testen einer Applikation wird somit die Ausführung eines Testobjektes unter festgelegten Rahmenbedingungen verstanden, die zur Überprüfung des jeweiligen Objektes dienen. Ziel dabei ist:
  1. der Nachweis von Fehlerwirkungen
  2. die Bestimmung der Qualität eines Produktes
  3. die Erhöhung des Vertrauens in ein Programm
 
  • Welche Kosten verursacht das Testing?
An dieser Stelle ist zu betonen, dass die Ausgaben für ein nicht durchgeführtes oder mangelhaftes Testing die Kosten eines konsistenten und integrierten Testmanagements um ein Vielfaches übersteigen können. Grund ist, dass die Kosten für Fehlerbehebungen mit Fortschreiten der Produktentwicklung immens höher werden. Studien* haben das folgende komparative Kostenmodell aufgestellt:
Entwicklungsstadium Komparative Kosten für Fehlerbehebung
Anforderungen/ Kriterienkatalog 1 USD
Coding 10 USD
Programm-Testing 100 USD
System-Testing 1.000 USD
Nutzerakzeptanz-Testing 10.000 USD
Live-System 100.000 USD
Daher ist es aus Kosten- und Effizienzgründen unabdingbar, die richtigen Voraussetzungen für ein frühzeitiges Testing zu ermöglichen, sodass Fehlerwirkungen in einem frühen Stadium entdeckt werden können. Dafür können auch einzelne Code- oder Software- Abschnitte in einer, vom Testmanager zur Verfügung gestellten, Testumgebung getestet werden, schon bevor die gesamte Entwicklung abgeschlossen ist. Die Frage nach den genauen Kosten eines Testings ist nicht eindeutig zu beantworten, ohne die Art des zu testendenden Produktes zu kennen. So können sich der Grad der Komplexität und somit der Umfang an Programmzeilen zwischen unterschiedlichen Produkten erheblich unterscheiden. Haupttreiber der Kosten ist immer das Risiko eines fehlerhaften Produktes, sprich die Folgen eines Systemfehlers. Somit ist der Testaufwand von dem Schweregrad des Systemausfalls abhängig. Die tatsächlichen Faktoren, welche die Testkosten beeinflussen, können wie folgt unterschieden werden:
  1. Reifegrad der Produktentwicklung
  2. Qualität und Testbarkeit des Produktes/ der Applikation
  3. Testinfrastruktur
  4. Mitarbeiterqualifikation
  5. Qualitätsziele
  6. Teststrategie
Anhand der obigen Einflussfaktoren und der Größe des Projekts muss der Testmanager den Aufwand schätzen und eine entsprechende Teststrategie wählen.
*Vgl. Hambling B. et al., „Software Testing: An ISTQB-ISEB Foundation Guide“, 2011, S. 18