Anforderungsbasiertes Testen

R 2.0.0

Was ist anforderungsbasiertes Testen?

Was ist anforderungsbasiertes Testen?

Ein Testansatz, bei dem die Testbedingungen auf den Anforderungen basieren.

Anwendungsbeispiel

Anwendungsbeispiel
ALT MISSING

Hilde klappte die Zeitschrift zu und schaute ihn durchdringend an. Theo fühlte sich einen Moment lang unwohl, aber das war nur ein kurzer Augenblick der Unsicherheit. Er kannte den Aufsatz aus der neuesten Ausgabe von „Softwarekatastrophen" schon, aus dem Hilde gerade zitiert hatte. Insbesondere die Grafik, auf der eindrucksvoll dargestellt wurde, wie teuer die Behebung eines Fehlers war, je weiter der Softwareentwicklungsprozess fortgeschritten war. Das unterstützte lediglich das Credo aller Tester und Testmanager, so früh wie möglich mit qualitätssichernden Maßnahmen anzufangen. Er ließ die letzten Monate Revue passieren.

ALT MISSING

Dabei scrollte er durch die lange Liste von Anforderungen, so wie er das seit Projektbeginn immer wieder vor jedem Planungsmeeting getan hatte. Das sah alles sehr gut aus: Anforderungen waren eindeutig und widerspruchsfrei beschrieben und jeweils durch Akzeptanzkriterien begleitet, die durch das Testteam verifiziert werden konnten. Dabei war das eindeutige Vergeben einer ID unerlässlich gewesen und diese ID zog sich durch alle Artefakte des Softwareentwicklungszyklus.

ALT MISSING

Zu Projektbeginn hatten sie sich vorgenommen, zu jedem Akzeptanzkriterium mindestens einen Testfall zu schreiben. In der Praxis waren es dann natürlich viel mehr geworden. Aber diese systematische, strukturierte Vorbereitung erleichterte Priorisierungen bei der Auswahl und Verteilung von Ressourcen auf besonders kritische Anforderungen. Dabei hatten sie zur Unterstützung die Technik des Risikobasierten Testens eingesetzt. Mithilfe dieser Systematik war es nun ein Leichtes, Basismaße wie Überdeckungsgrade zur Verfügung zu stellen und diese in den Testberichten darzustellen. Auch das Zusammenstellen geeigneter Regressionstestsuiten war erheblich erleichtert worden, denn waren diese anfänglich noch in vertretbarer Zeit durchgelaufen, dauerte es bei dem umfangreichen Projekt irgendwann zu lange alle Tests immer wieder durchzuführen und es musste eine Auswahl getroffen werden. Diese richtete sich einerseits nach der Priorisierung der Anforderungen, andererseits nach den gerade durchgeführten Änderungen oder Erweiterungen des Funktionsumfanges.

ALT MISSING

Etwas Sorge bereitete ihm, ob der Fachbereich wohl ausreichend Zeit finden würde, durch ergänzende Testaktivitäten die Anforderungen im System zu validieren. Mitunter ergab sich in einer relativ spät angelegten Testphase noch Änderungsbedarf, weil wichtige Funktionen noch nicht vollständig durchdacht oder deren Auswirkungen auf andere Prozessschritte noch nicht klar genug herausgearbeitet worden waren. Das war in der Vergangenheit bei den komplexen Themen, für die sie die Anwendungen bauten, immer wieder aufgetreten und durch keine noch so sorgfältige Anforderungserhebung in Gänze zu vermeiden. Grundsätzlich versuchten sie diese Änderungen im Rahmen eines geordneten Releasemanagements in einem Update nachzuliefern. Dazu gab es dann einen Releaseletter, in dem die Änderungen oder Erweiterungen beschrieben und angekündigt wurden. So wurde niemand der Anwender überrascht und alle hatten hinreichend Zeit um sich vorzubereiten.

ALT MISSING

Er musste an eines seiner früheren Projekte zurückdenken, in dem das Thema Anforderungsmanagement noch unterbelichtet war. Dort waren die Anforderungen auf allen möglichen Wegen in das Projekt geströmt, befanden sich in Form von Excellisten, Worddokumenten, Memos und E-Mails oder schlicht und ergreifend nur in den Köpfen der Fachleute oder der Projektleitung. Das hatte regelmäßig dazu geführt, dass unmittelbar vor einer Auslieferung oder Inbetriebnahme Schwächen in den Anforderungen auffielen und diese mit hektischen Last-Minute-Fixes oder überhastet nachgeschobenen „Notfallauslieferungen" behoben werden mussten, was in Konsequenz oftmals zu erhöhten Fehlern und den damit verbundenen immensen Behebungskosten im Wirkbetrieb führte. An diese schlimmen Zeiten dachte er überhaupt nicht gerne zurück.

ALT MISSING

Vielleicht waren sie in ihrem Vorgehen noch nicht perfekt, aber was sie mit den vorhandenen Ressourcen hatten erledigen können, war geschehen. Auch in den nächsten Ausgaben der gefürchteten Fachzeitschrift würde ihr Projekt nicht als mahnendes Beispiel angeprangert werden.

Beschreibung

Bei anforderungsbasierten Tests werden Testfälle auf der Grundlage von Testzielen und Testbedingungen entworfen, die von den Anforderungen abgeleitet wurden.

Beispiele für anforderungsbasierte Tests sind Tests, die bestimmte Funktionen ausüben oder nicht funktionale Attribute prüfen, wie z.B. Zuverlässigkeit oder Benutzerfreundlichkeit.

Ausgangspunkt des anforderungsbasierten Testens ist das Anforderungsmanagement. Zu Beginn des Entwicklungsprozesses werden Anforderungs- und Spezifikationsdokumente erstellt (und verwaltet!), um das gewünschte System genau und vollständig zu beschreiben. Die Qualitätssicherung nutzt dann diese Anforderungen als Grundlage für die Planung und Durchführung ihrer Tests.

Vorteile des anforderungsbasierten Testens

Die Anforderungen werden zu Beginn des Entwicklungsprozesses erstellt und bestenfalls auch genau und vollständig dokumentiert. Die Qualitätssicherung nutzt diese Anforderungen als Grundlage für die Planung und Testdurchführung. Dadurch wird direkt geprüft, ob die Anforderungen richtig, vollständig, eindeutig und logisch konsistent sind. Dieses Vorgehen ermöglicht es auch den Projektfortschritt zu messen und gewährleistet, dass alle Anforderungen überprüft werden.

Mit anforderungsbasiertem Testen lassen sich Probleme schon frühzeitig im Entwicklungslebenszyklus feststellen. Und je früher ein Problem erkannt wird, desto geringer sind die Kosten zur Beseitigung des Fehlers, denn die Kosten zur Behebung von Fehlern steigen im Laufe eines Softwareprojekts drastisch an (siehe Tabelle rechts).

ALT MISSING
Abb. 1: Kosten der Fehlerbehebung im Projektverlauf

Testplanung auf Basis von Anforderungen

  1. Identifizieren und verstehen der Systemanforderungen: Es ist wichtig, alle funktionalen und nicht funktionalen Anforderungen, die getestet werden müssen, vor Beginn einer Testaktivität klar zu definieren.

  2. Testfälle entwickeln: Nachdem die Systemanforderungen identifiziert wurden, können darauf aufbauend Testfälle erstellt werden. Diese Testfälle sollten sowohl positive als auch negative Szenarien abdecken; Sie sollten auch Grenzwerte, Grenzfälle usw. enthalten, um die Anwendung gründlich zu testen.

  3. Tests ausführen: Nach dem Erstellen geeigneter Testfälle können Tester mit der Ausführung beginnen und ihre Ergebnisse aufzeichnen, z.B. den Pass/Fail-Status oder während der Ausführung aufgetretene Probleme.

  4. Ergebnisse analysieren: Nachdem Tests durchgeführt wurden, müssen Tester ihre Ergebnisse analysieren, um Abweichungen im System zu identifizieren. Diese Analyse hilft herauszufinden, ob das System die Anforderungen erfüllt oder nicht.

  5. Überarbeitung und erneuter Test: Wenn während des anforderungsbasierten Testens Probleme auftreten, sollten diese sofort behoben und erneut getestet werden, um sicherzustellen, dass sie die Gesamtleistung des Systems nicht beeinträchtigen.

Herausforderungen des anforderungsbasierten Testen

  • Verknüpfen der Anforderungen mit den Testaktivitäten (Rückverfolgbarkeit)

  • Sicherstellen, dass alle Anforderungen durch Tests verifiziert und die Tests bestanden sind

  • Verfolgen der Auswirkungen von Anforderungsänderungen

  • Erstellen von Berichten über die standardkonforme Testabdeckung von Anforderungen

  • Etablieren eines nachvollziehbaren und effizienten Prozesses zur Verifikation der steigenden Anzahl von Anforderungen

Quellen