Die Kunst, gute Testfälle zu schreiben
Hennigsdorf, Juli 2022, Walja Korolevski, Henrietta Horvath
Gute Testfälle erleichtern das Finden von Softwarefehlern und verbessern somit die Qualität der Software
Die Qualität von Software ist ein entscheidender Faktor für den Erfolg von Produkten und Unternehmen. Qualität wird als Erfüllung der Anforderungen angesehen. Diese werden mit Hilfe von Testfällen validiert. Dabei werden Unterschiede zwischen dem Ist- und dem Sollzustand aufgedeckt und Abweichungen ausfindig gemacht. Die Ursachen für Abweichungen sind vielfältig und schwer vorhersehbar. Ziel ist es, alle Abweichungen vor Produktivsetzung zu finden, zu bewerten und unter gegebenen Umständen bestimmte Abweichungen durch Bugfixing noch zu eliminieren. Wie erfolgreich dieser Prozess verläuft, hängt dabei maßgeblich von den definierten Testfällen ab.
Es gibt Softwaretests, die unterschiedliche Aspekte der Software prüfen, z.B.: Funktionalität, Sicherheit, Leistung, Usability, Stabilität. Es gilt also zum einen eine gute Auswahl an Testfällen zu treffen. Dafür musst Du alle relevanten Anwendungsszenarien kennen. Am besten ist es, wenn die Anwendungsszenarien basierend auf Anforderungsdokumentation definiert werden, die einen hohen Qualitätsstandard erfüllen und ständig aktuell gehalten werden.
Zum anderen müssen die Testfälle so beschrieben sein, dass sie für die Tester eindeutig sind und korrekt durchgeführt werden können. In diesem Artikel wollen wir auf den letztgenannten Punkt eingehen und ein paar nützliche Tipps geben, wie Du gute Testfälle schreiben kannst.
Wie schreibst Du gute Testfälle – unsere Tipps für Testdesigner
Leider gibt es kein Universalrezept für „gute“ Testfälle. Auf jeden Fall solltest Du die internationalen Qualitätsstandards von ISTQB® (International Software Testing Qualifications Board) und IEEE 829 (Standard for Software Test Documentation) kennen und ihnen folgen.
Wir haben einige Tipps aus unserer täglichen Praxis zusammengestellt, die uns geholfen haben, die Qualität unserer Testfälle zu verbessern:
1. Berücksichtige Fachwissen und Erfahrung des Testers
Bei dem Detaillierungsgrad der Testfälle solltest Du das Fachwissen und die Erfahrung des Testers unbedingt berücksichtigen. Für Tester mit Expertenwissen über das Testobjekt können die Testfälle weniger detailliert beschrieben sein als für fachfremde Tester. Aber wenn die Testfälle zu viel Fachwissen voraussetzen, wird es sehr zeitaufwändig, neue Tester einzuarbeiten und fast unmöglich, bei Kapazitätsengpässen schnell neue Tester an Bord zu holen. Mit steigender Granularität erhöht sich auch der Pflegeaufwand für den Testfall.
Finde einen guten Mittelweg zwischen detaillierter Beschreibung und Aufwand. Denke daran, dass auch bei weniger detaillierten Tests die Testdokumentation nachvollziehbar sein muss.
2. Führe einen verbindlichen Qualitätsstandard ein
Ein verbindlicher, dokumentierter Qualitätsstandard, an den sich alle halten, verbessert die Qualität der Testfälle enorm. Dieser beinhaltet z.B. die Verwendung von Namenskonventionen für die Titel von Testfällen: Die Titel von Testfällen sollten einem definierten Schema folgen. Dies führt dazu, dass jedem auf den ersten Blick klar wird, was getestet wird.
Außerdem sollte jeder Testfall einem Review unterzogen werden. Neu erstellte oder geänderte Testfälle sollten nicht sofort zum Testen verwendet werden, sondern zuvor durch eine übergeordnete QS-Instanz oder die Fachabteilung überprüft und freigegeben werden.
Schreibe die Regeln und Prüfkriterien für Testfälle in einem Dokument auf.
3. Vergiss nicht die Negativ-Testfälle
In Positivtests wird das Verhalten des Testobjekts infolge gültiger Vorbedingungen und Eingaben überprüft. In Negativtests (auch Robustheitstest genannt) wird das Verhalten des Testobjekts infolge ungültiger Vorbedingungen und/oder Eingaben überprüft. Letzteres wird bei der Testfallerstellung oft vergessen. Natürlich ist es wichtig zu überprüfen, dass die Anwendung ihre Funktionalität wie spezifiziert durchführt, aber genauso wichtig ist es zu verifizieren, dass die Anwendung eine ausreichende Fehlerüberprüfung aufweist und mit Fehlersituationen umgehen kann.
Definiere negative Tests als ein Muss, da sie die funktionale Robustheit der Anwendung sicherstellen.
4. Strebe Unabhängigkeit von konkreten Testdaten an
Wir empfehlen zum Testen speziell dafür vorbereitete Testdaten zu nutzen. In der realen Welt ist jedoch die Verwendung von Produktionsdaten häufig unvermeidbar, die in regelmäßigen Abständen in die Testsysteme eingespielt werden. Dabei können eine Reihe von Problemen auftreten: Beispielsweise müssen Datenkonstellationen getestet werden, die es noch nicht im Testsystem gibt. Außerdem werden die Daten oft bei der Durchführung der Test „verbraucht“, d.h. so verändert, dass sie bei einer Testwiederholung nicht mehr verwendet werden können.
Bei der Testfallerstellung müssen auf jeden Fall entweder die notwendigen Testdaten oder eine Anleitung wie man sie erstellt als Voraussetzung für den Testfall beschrieben werden.
Versuche Testfälle unabhängig von den konkreten Testdaten zu schreiben, damit Du deine Testfälle für mehrere Testdatensätze verwenden kannst. Du kannst konkrete Testdaten auch in einer externen Tabelle oder Datenbank verwalten und sie über Parameter referenzieren.
5. Pflege deine Testfälle
Testfälle müssen laufend gepflegt werden. Bei jeder Änderung am System, z.B. im Programmcode, in den Daten, in den Schnittstellen usw., müssen die vorhandenen Testfälle entsprechend aktualisiert werden.
Wenn die Anforderungen/ Use Cases oder Voraussetzungen für einen Testfall sich ändern, muss der Testfall angepasst werden. Eventuell sind zusätzliche, neue Testfälle nötig.
Halte deine Testfälle aktuell, dann kannst du deine Software jederzeit ohne viel Vorbereitungszeit testen.
Aufbau eines Testfalls
Jeder Testfall sollte bestimmte grundlegende Informationen enthalten, damit die Testfälle eindeutig zu identifizieren und einfach zu nutzen sind. Wir haben in einem Beispiel (siehe Abbildung 1) die Attribute aufgezählt, die wir bei unseren Testfällen benutzen (entsprechend dem Standard IEEE829 ). Diese Felder sollten auf jeden Fall in Deinen Testfällen vorhanden sein. Du kannst aber noch zusätzliche Felder entsprechend Deinen Bedürfnissen einfügen.
Fazit
Das Testen ist ein wichtiger Bestandteil der Entwicklung und Wartung und verbraucht oft mehr als 30-40% des Gesamtbudgets. Die Erstellung qualitativ hochwertiger Testfälle und deren Pflege ist eine Investition, die sich auszahlt:
- Kostensenkung: je früher im Prozess die Fehler erkannt werden, desto weniger Kosten resultieren daraus. Fehler, die erst im Produktivsystem erkannt werden, können zudem viele Folgekosten nach sich ziehen.
- Effizienzsteigerung: Eine Standardisierung des Testvorgehens vereinfacht die Arbeit aller Beteiligten und führt zu Synergien. Daraus resultiert auch ein Zeitgewinn, den Du z.B. für zusätzliche Tests nutzen kannst.
- Qualitätsverbesserung: Gut geschriebene und aktuell gehaltene Tests ermöglichen es, eine Vielzahl von Fehlern vor der Produktivsetzung zu finden und zu beheben. Zudem helfen zuverlässige Aussagen aus den Testergebnissen dem Kunden dabei, den aktuellen Qualitätszustand des Produktes besser einschätzen zu können.
Unsere Tipps resultieren aus einer langjährigen Erfahrung und wurden in vielen Projekten erfolgreich eingesetzt. Probiere es aus oder kontaktiere InMediasP, wenn Du professionelle Unterstützung brauchst. Viel Erfolg!