Der Zusammenhang von Anforderung und Testfall
Eine grundlegende und wichtige Erfahrung aus vielen Projekten lautet: Testfälle müssen stets inhaltlich vollständig gegenüber der Anforderung sein. Dies bedeutet, dass mit dem Testfall bzw. den Testfällen genau die Erfüllung der Anforderung verifiziert werden kann (Bild 1). Dies ist wichtig, weil während eines Tests nur selten das Anforderungsdokument zu Hilfe genommen wird. Daher dürfen Testfälle keine weiteren versteckten Anforderungen aufweisen, die in den ursprünglichen Anforderungen nicht erwähnt wurden. Genauso wenig sollten Details aus Anforderungen in den Testfällen ausgelassen werden. Vor diesem Hintergrund werden typischerweise mehrere Testfälle für eine Anforderung formuliert und deren Inhalte während der Erstellung der Testfälle gegeneinander abgeglichen. Nur so ist es möglich, spätere kostenträchtige Nachentwicklungen zu minimieren.
Es existieren mehrere Möglichkeiten, Testfälle zu klassifizieren. Eine typische ist die Unterscheidung nach der Art ihrer Darstellung – natürlichsprachlich oder formalisiert – und ihrem Abstraktionsgrad – inklusive Testdaten für die Prüfung oder abstrakt ohne konkrete Werte. Auf Basis dieser Klassifikation ergeben sich vier unterschiedliche Arten der Testfalldokumentation, die in Bild 2 dargestellt sind.
Meist werden Testfälle lediglich als Basis für den Test angesehen. Sie stellen jedoch in unseren Projekten seit Jahren ein effizientes Qualitätssicherungswerkzeug dar, um Anforderungen zu verbessern. Die notwendigen Überarbeitungen betreffen bis zu 50 % aller Anforderungen. Vor allem in der Kombination von abstrakten, formalisierten und konkreten, natürlichsprachlichen Testfällen werden viele Anforderungslücken oder -fehler entdeckt.
Die Ersparnis während des Gesamtprojekts lässt sich leider nicht konkret beziffern. Durch die qualitativ hochwertigeren Anforderungen werden aber definitiv Folgekosten eingespart, da die folgenden Tätigkeiten auf vollständigeren und korrekteren Anforderung beruhen und später weniger Überarbeitungsbedarf am Produkt besteht. Vor dem Hintergrund, dass im Projekt spät entdeckte Fehler teurer zu beheben sind als früh entdeckte, entstehen daher weniger Fehlerbehebungskosten im Projektverlauf.
Zudem wird das Zusammenspiel zwischen Anforderungen und den zugehörigen Testfällen optimiert und daher die Anforderungen passender voneinander abgegrenzt (siehe Bild 3). Diese Überarbeitung führt zu weniger überlappenden Testfällen, die ansonsten zu höheren Testkosten aufgrund redundanter Testdurchführung führen würden.