Teil 2: Qualitätsmanagement ist ein Feld, mit sehr vielen Blickwinkeln. Nachdem wir im ersten Teil der Themenreihe den Umgang mit Bugs genauer beleuchtet haben, geht es in diesem Beitrag eine Stufe tiefer. Denn: Ohne ausführliches Testing und die komplexe Infrastruktur hinter dem QM würde die Projektentwicklung in vielen Prozessen sehr viel uneffektiver agieren.
Im zweiten Teil unserer Themenreihe zum Qualitätsmanagement klären wir, was Testing ausmacht und wie es betrieben werden sollte.
Komplexität nicht unterschätzen
Projektteams, die zum ersten Mal mit dediziertem Qualitätsmanagement in Berührung kommen, sollten zu Beginn eins genau verinnerlichen: „Mach mal schnell QM“ funktioniert nicht. Denn auf dem Papier hört es sich einfach an, einfach schnell einen Test fahren, überprüfen ob alles passt und weiter geht’s. Wozu also überhaupt dediziertes Testing? Die Antwort ist schnell erläutert: Unerfahrene Teams, die ohne einen QM arbeiten, wären aufgrund des entstehenden Aufwands sehr schnell komplett überfordert.
Sogar sehr simpel anmutende Testszenarien haben oft eine Vielzahl von Variablen und Bedingungen, die von den meisten unterschätzt wird. Wie komplex schon ein vermeintlich kleiner Test eines Login-Fensters sein kann, zeigt folgende Grafik:
Es gibt etliche Möglichkeiten, was bei einem Login-Versuch schieflaufen kann: Passwort falsch, Nutzername falsch, beides falsch usw. So können bei diesem Beispiel ganze 108 unterschiedliche Fehlerszenarien bei einem Login auftreten, die alle implementiert sein müssen, um korrekt erkannt zu werden. Das dies nicht einfach so eben aus dem Kopf geht, sollte einleuchten.
Aus diesem Grund ist es besonders wichtig, einen Qualitätsmanager im Team zu haben der für solche Prozesse Standards einführt und wenn möglich auch durch Automatisierung vieles vereinfacht.
Mythos 100% Testabdeckung
Strukturierte Testing-Prozesse sind also essentiell für eine erfolgreiche Projektentwicklung. Da liegt es doch nahe, komplett alles durch Testing abzudecken. Dabei entstehenden folgende Fragen: Ist eine hundertprozentige Testabdeckung möglich? Und ist dies überhaupt erstrebenswert?
Um dies zu beantworten, ist es die Aufgabe eines Qualitätsmanagers, das Testing zu bewerten. Halten sich Aufwand und Nutzen die Waage oder spielt die Verhältnismäßigkeit keine Rolle? Hierzu passt wieder das weiter oben bereits genannte Beispiel mit dem Login-Test: Eigentlich ein schlichtes Feature, dessen Testung aber durch die große Anzahl an Möglichkeiten sehr aufwendig ist – dennoch es für die Nutzung aller Funktionen eines Onlineshops imminent wichtig. Demnach muss der Test in jedem Fall immer durchgeführt werden, egal wie aufwändig er ist.
Gegenspiel: Einen Test zu schreiben, dessen Entwicklung dann etwa 10 Personentage beansprucht, wenn der gleiche Vorgang auch in einer Minute „per Hand“ erledigt werden kann, ist ganz eindeutig nicht rentabel.
Testautomatisierung Ja oder Nein?
Im Fall des zuerst genannten Beispiels ist eine Automatisierung des Testings sinnvoll. Immer gleiche Abläufe und Testszenarien können so ohne Zeitverlust in die Projektentwicklung integriert werden. Für die Automatisierung gelten indes die gleichen Fragenstellungen nach Nutzen vs. Aufwand. Um zu entscheiden, ob eine Automatisierung sich lohnt, sollten folgende Stichpunkte abgearbeitet werden:
- Wahrscheinlichkeit: Wie wahrscheinlich ist es, dass ein Fehler an einer Stelle auftritt?
- Kritikalität: Wie kritisch wäre es, wenn ein Fehler an der Stelle auftritt?
- Gegebenheiten: Existieren bereits Tests?
- Erfahrung: Es ist bekannt, dass an dieser Stelle häufig Fehler auftreten.
- Sicherung: An dieser Stelle sind schon Fehler aufgetreten.
Es gilt immer die Sinnhaftigkeit von Szenarien zu hinterfragen, bevor man sie automatisiert. Projektteams sollten deshalb keinesfalls den Fehler begehen, Test zu schreiben, nur, um sie zu haben. Denn dies kann wie bereits erwähnt auch kontraproduktiv sein. Tests müssen gewartet werden und verursachen unter Umständen mehr Aufwand als nötig. Außerdem können bei der Entwicklung von Test wiederum auch Fehler entstehen, was die Zahl an möglichen Bugs erhöht.
Die Vorteile von dediziertem QM
Auch wir bei netz98 achten bei unserer Projektentwicklung auf einen hohen Standard beim Qualitätsmanagement. Alle Projekte leben von agiler und testbasierter Entwicklung und deshalb betreiben wir standardmäßig ein strukturiertes Testing.
Dies wird unter anderem durch ein ausgeklügeltes Ticket-System bewerkstelligt. Sollte bei einem Test ein Bug auftreten oder ein anderer Wert als erwartet herauskommen, wird dazu direkt ein Ticket angelegt, um die Probleme zu beheben. Die Herangehensweise, modernes Qualitätsmanagement und dediziertes Testing in die Projektentwicklung mit aufzunehmen bringt einige Vorteile:
- Planung: Fehler werden als eigene Entität planbarer und nehmen keinen Einfluss auf die Sprintplanung.
- Kommunikation: Entitäten können von Kunden genutzt werden, um in der Projektentwicklung auf Augenhöhe mitzugestalten – ohne dabei Einfluss auf die Sprints oder die Tickets nehmen zu müssen.
- Priorisierung: Durch die Abgrenzung als eigene Entität sind Bug-Tickets eher priorisierbar, bevor sie in die Entwicklung gehen.
- Aufmerksamkeit: Die Prozesse bleiben für den Kunden transparent und nachvollziehbar, was das Vertrauen in den Dienstleister stärkt.
Auf Basis dieser offensichtlichen Vorteile gehen wir gemeinsam mit dem Kunden sehr offen mit dem Thema Qualitätsmanagement um. Ziel dabei ist es, vor allem präventiv auf mögliche Fehler einzugehen, anstatt reaktiv auf Ungereimtheiten zu reagieren.
Planung, Kommunikation und Lösungsfindung, diese Attribute machen eine agile Entwicklung aus und deshalb sollte das Gleiche auf für den Umgang mit Bugs gelten. Modernes Qualitätsmanagement macht genau das.
Teil 1 – Modernes Qualitätsmanagement: Keine Angst vor Bugs
Teil 2 – Modernes Qualitätsmanagement: Testing nicht unterschätzen
Teil 3 – Modernes Qualitätsmanagement: Methoden und Werkzeuge
Bilder: netz98, iStock