Praktische Anwendung des risikobasierten Testens in unterschiedlichen Einsatzsenarien
Risikobasiertes Testen
von Florian Fieber
Risikobasiertes Testen ist eine der effektivsten und effizientesten Testvorgehensweisen und eine sinnvolle Unterstützung bei der adäquaten Priorisierung und Verteilung der Aufwände in einem Testprojekt. In diesem Artikel werden die Grundlagen des Risikomanagements und seiner Anwendung im Testen beleuchtet und unterschiedliche Einsatzszenarien zur praktischen Anwendung des risikobasierten Testens in verschiedenen Projektsituationen vorgestellt.
Die Priorisierung von Testaktivitäten
Eine wesentliche Rahmenbedingung des Testens ist der Grundsatz, dass vollständiges Testen praktisch nicht möglich ist. Die Menge der Anforderungen an das Testobjekt sowie deren Ausprägungen, Varianten, Beziehungen und Wechselwirkungen erzeugen eine riesige Menge an potentiellen Testbedingungen, welche bei einem nicht-trivialen Testobjekt weder in angemessener Zeit noch mit angemessenem Aufwand durch Tests abgedeckt werden können. In den meisten Testprojekten ist somit eine der zentralen Herausforderungen, sich auf eine beherrschbare, endliche Menge an Testbedingungen zu konzentrieren, um das Testen möglichst effektiv und effizient umzusetzen. Für das Testprojekt muss folglich eine geeignete Strategie zur Auswahl und Priorisierung der Testbedingungen und einer entsprechenden Aufwandszuweisung für die Testaktivitäten gewählt werden. Eine häufig gewählte Teststrategie stellt das anforderungsbasierte Tes-ten dar, bei dem die Testbedingungen und ihre Prioritäten aus den Anforderungen und deren Prioritäten (sofern vorhanden) abgeleitet werden. Diese Vorgehensweise stößt jedoch dann an ihre Grenzen, wenn die Testbasis besonders groß, lückenhaft und/oder schlecht priorisiert ist. In solchen Situationen lohnt es, sich mit den Risiken des Testobjekts auseinanderzusetzen und diese Risiken systematisch in den Testaktivitäten zu berücksichtigen.
Grundlagen des Risikomanagements
Ein Risiko ist definiert als „ein Faktor, der zu negativen Konsequenzen in der Zukunft führen könnte, gewöhnlich ausgedrückt durch das Schadensausmaß und die Eintrittswahrscheinlichkeit“ (vgl. https://glossary.istqb.org/ de/term/risiko) oder vereinfacht ausgedrückt:
Risiko = Schadensausmaß x Eintrittswahrscheinlichkeit
Zur systematischen Behandlung von Risiken sollte ein entsprechendes Risikomanagement etabliert werden. Es umfasst die Identifizierung, Bewertung und Minderung von Risiken und folgt dem Prinzip, aus höheren Risiken umfassendere und dringendere Maßnahmen abzuleiten als aus niedrigeren Risiken. Grundsätzlich lassen sich im Risikomanagement Projektrisiken und Produktrisiken unterscheiden. Projektrisiken sind Risiken, die den Projekterfolg beeinträchtigen, sie treten während des Projekts auf und müssen während des Projekts behandelt werden. Produktrisiken sind Risiken, die die Qualität des Produkts beeinträchtigen, sie treten nach dem Projekt auf (d. h. während der Nutzung des Produkts), müssen aber auch schon während des Projekts behandelt werden. Projektrisikenwerden auch Planungsrisiken genannt und werden im Rahmen des Projektmanagements eines Projekts behandelt. Produktrisiken werden auch Qualitätsrisiken genannt, deren Behandlung widmet sich das risikobasierte Testen.
Risikomanagement und Testen
Sowohl Projekt- als auch Produktrisiken sind im Kontext von Testprojekten relevant. Allgemeine Projektrisiken (z. B. Personalengpässe) sowie testspezifische Projektrisiken (z. B. verspätete Bereitstellung des Testobjekts) können und sollten im Rahmen des Testmanagements behandelt werden. Für das risikobasierte Testens stehen jedoch die Produktrisiken im Vordergrund.
Risikobasiertes Testen zur Behandlung von Produktrisiken
Risikobasiertes Testen ist ein systematischer Ansatz zur Behandlung von Produktrisiken. Aus Sicht des Testens stellt ein Produktrisiko i. d. R. das mögliche Auftreten und die Auswirkung eines Fehlers im laufenden Betrieb dar. Das risikobasierte Testen hat zum Ziel, diese Risiken frühzeitig zu erkennen, geeignete Testmaßnahmen zu planen und umzusetzen und damit das Produktrisiko zu mindern. Beim risikobasierten Testen werden Risiken derart reduziert, dass die Eintrittswahrscheinlichkeit gesenkt wird, das Schadensausmaß lässt sich i. d. R. nicht durch Testen reduzieren. Die Eintrittswahrscheinlichkeit wird gesenkt, indem getestet wird, Fehler gefunden und behoben werden und die Fehler demnach nicht mehr auftreten können. Je intensiver getestet wird, desto mehr Fehler können gefunden und die Eintrittswahrscheinlichkeit entsprechend gesenkt werden.
Identifizierung, Bewertung und Minderung von Produktrisiken
Zur Identifizierung von Produktrisiken ist sowohl eine fachliche als auch eine technische Sicht notwendig. Neben Testern sollten hierfür insbesondere Stakeholder mit einem geschäftlichen Hintergrund (z. B. Produktmanager, Analysten, Product Owner) wie auch Stakeholder mit einem technischen Hintergrund (z. B. Entwickler) eingebunden werden. Produktrisiken können mittels Risiko-Workshops, Checklisten oder Experten-Interviews identifiziert werden, können sich aber auch aus einer Analyse der Testbasis ergeben oder als Ergänzung zur Testbasis ermittelt werden, z. B. auf Grundlage bekannter Fehler oder Erfahrungen der Stakeholder. Bei der Bewertung von Produktrisiken ist ebenso eine fachliche und technische Perspektive erforderlich. Während die fachlichen Stakeholder dabei insbesondere die Faktoren für das Schadensausmaß identifizieren bewerten können (z. B. Bedeutung der betroffenen Funktion für die Geschäftsziele, mögliche Vertragsstrafen oder Image-Schäden), können die technischen Stakeholder vor allem die Faktoren für Eintrittswahrscheinlichkeit identifizieren und bewerten (z. B. die Komplexität des Testobjekts, eingesetzte Werkzeuge und Technologien). Für beides sind geeignete und abgestimmte Bewertungskriterien und Skalen erforderlich, um eine möglichst konsistente und akzeptierte Bewertung zu erhalten. Für die Minderung von Produktrisiken werden entsprechende Testaktivitäten geplant und durchgeführt. Die Risikostufe dient damit als Priorisierung der Testaktivitäten:, je höher die Risikostufe, desto intensiver und früher sollten die Testaktivitäten erfolgen. Die Höhe der Risikostufe kann Einfluss auf alle Testaktivitäten haben, z. B. Umfang, Detaillierungsgrad und Formalisierung der Testarbeitsergebnisse, Bestimmung der Testverfahren (vgl. Abbildung 2), Teststufen und Testarten oder Festlegung der Reihenfolge der Testdurchführung.
Einsatzszenarien des risikobasierten Testens
Im Folgenden sollen nun beispielhaft typische Projektsituationen vorgestellt werden, in denen das risikobasierte Testen praktisch angewendet werden kann. Allen Beispielen gemein ist, dass bei den entsprechenden Testaktivitäten „risikobasiert gedacht“ wird, d. h. grundsätzlich die Dimensionen Schadensausmaß und Eintrittswahrscheinlichkeit in die Testaktivitäten einbezogen werden.
Szenario 1: Tests priorisieren bei nicht oder ungenügend priorisierter Testbasis
Die Elemente der Testbasis (z. B. einzelne Anforderungen) sind entweder gar nicht oder nur ungenügend priorisiert (z. B. haben 90 % aller Anforderungen die höchste Priorität). Aus dieser Testbasis lässt sich direkt keine sinnvolle Priorisierung der Testaktivitäten ableiten, weil der Umfang gleich priorisierter Anforderungen zu hoch ist. Es fehlen zunächst entsprechende Informationen, auf deren Grundlage eine sinnvolle Priorisierung vorgenommen werden könnte. Das risikobasierte Testen liefert in diesem Szenario durch die Analyse der Testbasis bzw. ihrer Elemente und die Bewertung der ermittelten Risiken eine gute Grundlage für die Priorisierung der folgenden Testaktivitäten.
Szenario 2: Lücken in der Testbasis schließen
Die Anforderungen an das Testobjekt sind nicht vollständig erfasst und dokumentiert, es steht folglich nur eine nicht vollständige bzw. lückenhafte Testbasis zur Verfügung. Für den Test wäre es nicht ausreichend nur die spezifizierten Elemente der Testbasis abzudecken, da dadurch wesentliche Aspekte des Testobjekts nicht bzw. nicht ausreichend getestet blieben und möglicherweise kritische Fehler nicht aufgedeckt würden. Es fehlen zunächst entsprechende Informationen, um diese weiteren Testbedingungen zu identifizieren. Die Lücken in der Testbasis stellen hierbei mögliche Produktrisiken dar, diese lassen sich z. B. durch frühe und regelmäßige Risiko-Workshops mit den Stakeholdern identifizieren und bewerten und auf dieser Grundlage die entsprechenden Tests planen und priorisieren. Die Teststrategie könnte in diesem Szenario als eine Kombination aus anforderungsbasiertem Testen (Testbedingungen aus der Testbasis) und risikobasiertem Testen (Testbedingungen aus den Produktrisiken) ausgeprägt werden.
Szenario 3: Abweichungen und Fehler bewerten
Bei der Testdurchführung wird eine Menge von Abweichungen gefunden, bei denen zunächst nicht klar ist, ob es sich tatsächlich um Fehler handelt. Test, Entwicklung und Fachseite haben unterschiedliche Perspektiven auf die Abweichungen und kommen zu unterschiedlichen Bewertungen, sodass ein Konsens schwer zu finden ist – insbesondere bei Abweichungen, welche sich nicht direkt aus der verfügbaren Testbasis ergeben. Insbesondere bei der Bewertung von Abweichungen, die „einfach so“ gefunden werden, d. h. nicht auf Grund eines zuvor spezifizierten Testfalls der sich auf eine bestimmte Testbedingung bezieht, unterstützt das risikobasierte Testen dabei, die verschiedenen Perspektiven zu integrieren, zu gewichten und damit einen gemeinsame und abgestimmte Bewertung der Abweichungen zu finden.
Szenario 4: Testaufwände für User Storys schätzen und planen
Bei der Schätzung und Planung der Testaufwände für eine User Story ist das risikobasierte Testen eine einfache und pragmatische Vorgehensweise für die Tester. Nimmt man die Priorisierung und Aufwandszuweisung auf Ebene der einzelnen User Storys vor, so lässt sich zur Bewertung der Eintrittswahrscheinlichkeit die geschätzte Komplexität der User Story verwenden und zur Bewertung des Schadensausmaßes der Business Value der User Story. Beide Informationen sind wesentliche Attribute einer User Story, die Risikostufe lässt sich daraus sehr leicht (und ggf. sogar automatisiert) ermitteln.
Szenario 5: Effektive Testsitzungen beim explorativen Testen
Die Effektivität des explorativen Testens hängt u. a. stark von der individuellen Erfahrung und Intuition der Tester und Testerinnen ab. Insbesondere bei der Anwendung von Timeboxes im sitzungsbasierten Testen kommt es darauf an, in der verfügbaren Zeit die besten Tests zu identifizieren und auszuführen. Eine risikobasierte Denkweise kann hierbei enorm helfen, indem sich die Testerin oder der Tester regelmäßig die Fragen „Wo ist der höchste Schaden zu erwarten?“ und „Wo ist ein Fehler am wahrscheinlichsten?“ stellen, und damit in der begrenzten Zeit das effektivste Ergebnis liefern.
Zusammenfassung
Das risikobasierte Testen hat gegenüber anderen Testvorgehensweisen, wie z. B. dem anforderungsbasierten Testen, wesentliche Vorteile. Ein großer Vorteil liegt vor allem darin, dass die Testaufwände effizienter verteilt und das Testen effektiver gestaltet werden kann. Das Testen orientiert sich sowohl an geschäftlichen als auch technischen Risiken, wodurch an den Stellen getestet wird, an denen der höchste Schaden zu erwarten und die Wahrscheinlichkeit des Auftretens eines Fehlers am höchsten sind. Risikobasiertes Testen lässt sich in der Praxis sehr unterschiedlich ausprägen, es lässt sich informell und leichtgewichtig für einzelne Testaktivitäten genauso anwenden wie formal und schwergewichtig für den gesamten Testprozess inkl. der angrenzenden Prozesse.