Anforderungsbasiertes Testing kann die Softwarequaltiät massiv verbessern. Wichtig ist allerdings der Zeitpunkt der Erstellung der Testfälle.
«Bitte bring noch Kartoffeln mit.» war eine Whats-App-Nachricht, meiner Mutter an meinen Vater. Als mein Vater nach Hause kam, legte er voller Stolz eine Tüte Kartoffelchips auf die Küchentheke. Die Augen meiner Mutter wurden grösser. «Das war nicht die Art Kartoffel, an die ich gedacht habe!»
Die Anforderung in diesem Beispiel lautet «Kartoffeln nach Hause bringen». Es werden keine Angaben zu wann, wie oder in welcher Form gemacht, dass dies zu Verwirrungen führt ist klar. Auch in der Geschäftswelt können solche Beispiele auftauchen. Meistens sind diese aber gar nicht so leicht zu erkennen und das Fehlen von Informationen ist nicht immer derart offensichtlich.
Ein weiterer wichtiger Punkt ist, dass je später ein Fehler entdeckt wird, desto höher sind die Kosten für die Fehlerbehebung.
Man sieht den Wald vor lauter Bäumen nicht
Anforderungsspezialisten und Fachpersonen beschäftigen sich meist intensiv mit einem Thema und sind bestens vertraut mit der fachlichen Materie. Vertiefen sie sich bis ins Detail, gehen oft die grösseren Zusammenhänge vergessen oder Abhängigkeiten werden ausser Acht gelassen. Werden unvollständige Anforderungen dann entwickelt, folgt die böse Überraschung beim Abarbeiten der Testfälle. Obwohl, die Anforderungen eigentlich korrekt und wie vorgesehen umgesetzt wurden, entspricht das Resultat nicht den Erwartungen des Benutzers.
Anforderungsbasiertes Testing
Abhilfe bei diesem Problem schafft anforderungsbasiertes Testing. Aufgrund der Akzeptanzkriterien von Anforderungen werden Testfälle beschrieben. Das heisst, dass Testfälle von einem Test Engineer erstellt werden, der bisher nicht in die Anforderungserhebung involviert war. Der Test Engineer beleuchtet den Prozess von einer ganz neuen Seite. Unklare Anforderungen und nicht beachtete Abhängigkeiten können mit dieser Rolle entdeckt werden.
Auf das richtige Timing kommt es an
Oft sind Projekte unter Zeitdruck und man möchte die Entwicklung der Software sofort starten. Obwohl zu Beginn des Projektes anforderungsbasiertes Testen vereinbart wurde, schiebt man die Erstellung der Testfälle nun in die Entwicklungsphase. Testfälle und Softwareentwicklung geschehen parallel. Zu Beginn scheint eine Zeitersparnis einzutreten, allerdings gehen bei diesem Vorgehen die Vorteile von anforderungsbasiertem Testen verloren.
Der Nutzen besteht vor allem darin, dass sich der Test Engineer anders mit den Anforderungen, Vorbedingungen und Prozessen auseinandersetzt, als dies der Requirements Engineer und die Fachpersonen tun. Die aus der Testfallerstellung entstehenden Erkenntnisse können vor der Entwicklung bereits in die Anforderungen einfliessen. Im besten Fall wird die Sicht des Testing bereits mit Beginn der Anforderungserhebung einbezogen. Die Vorteile sind:
- Da die Qualitätssicherung bereits vor Beginn der Entwicklung geprüft wird, wird Zeit gespart.
- Kosten werden gespart, da weniger Fehlerkorrekturen entstehen.
- Motivation der Mitarbeiter wird gesteigert, da sie nicht mit einem fehlerhaften Produkt konfrontiert werden.
Was passiert, wenn die Anforderungen nach der Testfallerstellung nochmals ändern?
Werden Testfälle basierend auf den Anforderungen erstellt, ist es besonders wichtig, dass Anpassungen von Änderungen dokumentiert und bis zum Testfall hin nachbearbeitet werden. Wird die Nachdokumentation aber konsequent eingehalten, kann auch diese Schwierigkeit überwunden werden und die Vorteile von anwendungsbasiertem Testen kann voll genutzt werden.