Exploratives Testen

R 2.0.0

Was ist exploratives Testen?

Was ist exploratives Testen?

Exploratives Testen ist ein Testansatz, bei dem die Tester auf der Grundlage ihres Wissens, der Erkundung des Testobjekts und der Ergebnisse früherer Tests dynamisch Tests entwerfen und durchführen.

ALT MISSING
Abb. 1: Cem Kaner

„Ein Stil des Softwaretests, der die persönliche Freiheit und Verantwortung des einzelnen Testers betont, die Qualität seiner Arbeit kontinuierlich zu optimieren, indem er testbezogenes Lernen, Testdesign, Testdurchführung und Interpretation der Testergebnisse als sich gegenseitig unterstützende Aktivitäten verwendet, die während des gesamten Projekts parallel ablaufen.“ - Cem Kaner


ALT MISSING
Abb. 2: James Bach

„Die einfachste Definition von explorativem Testen ist Lernen, Testfallerstellung und Testfalldurchführung gleichzeitig“ – James Bach



Beschreibung

Der Begriff „Exploratives Testen“ bezeichnet einen der möglichen Ansätze für Testdurchführungen. Es handelt sich um ein erfahrungsbasiertes Vorgehen, das von den Testern sowohl in der Planung als auch in der Durchführung selbst gesteuert wird. Es ist daher im Ansatz freier und unstrukturierter als geplante Vorgehen.

Beim Explorativen Test geht es nicht darum, vorgegebene Testfälle unreflektiert abzuarbeiten, sondern sich von dem gerade entdeckten Teil des Testobjektes zu neuen Testfällen anregen zu lassen und diese gleich durchzuführen.

Das explorative Testen ist ein „erforschendes" Testen - Tester erforschen das Testobjekt. Dabei dienen die bereits durchgeführten Tests und die daraus gewonnenen Erfahrungen als Informationsquelle für weitere Testüberlegungen, um neue Testfälle reifen zu lassen, zu spezifizieren und ausführen zu können.

Grundideen des explorativen Testens:

  • Ergebnisse eines Testfalls beeinflussen die Erstellung und Ausführung der weiteren Testfälle.

  • Während des Testens sammelt der Tester Erfahrungen bezüglich des zu testenden Programms, der Leistungsfähigkeit und der Funktionsweise. Entsprechend der gemachten Erfahrungen wird das Testvorgehen angepasst.

Indem Testdesign, Testdurchführung, Testinterpretation und testbezogenes Lernen als sich gegenseitig unterstützende Aktivitäten behandelt und gleichzeitig während der Projektlaufzeit fortgeführt werden, kann die Arbeitsqualität der testenden Personen optimiert werden.

Somit hat der einzelne Tester zwar mehr persönliche Freiheit um seine Arbeit zu planen, muss aber auch im Gegenzug eine hohe Disziplin aufbringen, wenn es darum geht, dass seine Arbeitsergebnisse und eventuell gefundene Abweichungen aufgrund einer nachvollziehbaren Dokumentation nachgestellt werden können.

Was bedeutet dies für die Hauptbestandteile des Testens?

Exploratives Testen bedeutet NICHT "einfach herumklicken"!

Tests erstellen

Auch beim explorativen Test sind Testdesigntechniken relevant. Je besser sich der Tester mit Testentwurfsverfahren (Grenzwertanalyse, Entscheidungstabelle, Ableiten von Test aus Zustands-Diagrammen) auskennt, desto besser wird er auch darin „spontan" gute Tests durchzuführen.

Tests durchführen

Ein Vorteil vom Explorativen Testen ist, dass im Vorfeld keine Testfälle schriftlich erstellt werden müssen, auch wenn dies gegebenenfalls hilfreich sein kann.
Der Tester beginnt normalerweise spontan mit der Durchführung der Tests und kann deren Fokus entsprechend von Erfahrungen oder im Test gewonnenen Eindrücken verschieben. Gegebenenfalls auch in eine Richtung, die bis zu diesem Zeitpunkt nicht, oder nicht intensiv, berücksichtigt wurden.

Steuern/Analysieren

Jeder Test erweitert die Erfahrung bezüglich des Systemverhaltens und ermöglicht so die Identifizierung von Schwachstellen, die im Nachgang dann intensiv geprüft werden können. Die Testfälle, mit denen diese gefunden wurden, werden problemfrei in die strukturierten Testdurchläufe, wie z.B. dem Regressionstest, aufgenommen und damit deren Aussagekraft erhöht werden.

Lernen

Während der Tester also die Software erkundet kommt er auch immer mehr dahinter, wie sie funktioniert und welche Marotten und Eigenarten sie hat. Testen besteht aus Testdesign, Testdurchführung und einem Lernfaktor, der zukünftige Testfallermittlungen in Form von Erfahrung beeinflusst.
Im „traditionellen" Test wird hingegen oftmals das Testdesign und die Testausführung von unterschiedlichen Personen wahrgenommen und der Lernprozess dementsprechend nicht optimal vollzogen. Insbesondere bei Kommunikationsproblemen zwischen Testdesigner und Testausführer kommt der Lerneffekt häufig nicht zustande.

ALT MISSING
Abb. 3: Exploratives Testen

Wie viele Tester sind sinnvoll?

Eine optimale Anzahl für die Durchführung von Explorativem Testen gibt es nicht.

Grundsätzlich ist dieses Vorgehen allerdings besser für kleine Teams oder Einzelpersonen geeignet, da ein zu hoher Koordinationsaufwand dem Charakter des spontanen Vorgehens zuwiderläuft.

Wie viel Zeit darf der Test in Anspruch nehmen?

Der Zeitrahmen für explorative Tests ist unterschiedlich. Das Testmanagement kann klare Zeitfenster für deren Durchführung vorgeben (session-based-testing), da sonst die Gefahr besteht, sich in der Anwendung zu verrennen. Die Vorbereitungen für solche Sitzungen werden weiter unten beschrieben.

Ebenfalls möglich ist allerdings auch eine spontane Handlungsweise, die sich in etwaigen Freiräumen zwischen anderen Tätigkeiten oder bei der Durchführung von geplanten Testfällen ergibt. Dabei werden häufig Beobachtungen, die gemacht aber nicht durch den Testfall selber abgedeckt werden, verifiziert oder Abweichungen überprüft.

Als gut planbar haben sich in der Praxis Testsitzungen von bis zu zwei Stunden bewährt, da danach die Konzentration der Testenden nachlässt.

Wie dokumentieren wir?

Auch wenn Exploratives Testen wenig formal abläuft, sollten bestimmte Dinge festgehalten werden. Während der Explorativen Tests helfen sinnvolle Notizen, um z.B. Fehler zu erfassen und nachvollziehbar zu machen. Außerdem sollte der Testverlauf protokolliert werden, um ermessen zu können, welche Bereiche und Funktionen geprüft wurden.

Die Vorgaben zur Dokumentation können schlank gehalten werden, um den agilen Charakter des explorativen Tests zu erhalten.

Einsatzmöglichkeiten für exploratives Testen

Exploratives Testen kann ohne Probleme sowohl in agilen als auch in klassisch geführten Projekten eingesetzt werden.

In agilen Projekten können die Testenden ihr Wissen, Erfahrungen, Neugier und Kreativität sehr gut in die inkrementelle Vorgehensweise integrieren und in den Sprints schnelle Rückmeldungen zum Qualitätsstand liefern. Dadurch, dass die Tests nicht im Detail vorgeschrieben und vorab dokumentiert werden, passen die flexiblen Methoden ideal zueinander.

In klassischen Projekten eignet sich das Explorative Testen hingegen sehr gut als Ergänzung zu formaleren Testmethoden und bringt den wichtigen Blickwinkel der Fachexperten sowie deren Einschätzung zur Benutzbarkeit der Software ein. Hier gilt es in der Praxis, einen passenden Mix aus formalen und explorativen Tests zu finden.

Vorteile exploratives Testen

  • Erfahrene Tester:innen können mehr kritische Fehler finden.

  • Exploratives Testen ist zeiteffizienter als spezifikationsbasiertes Testen.

  • Die Tester sind in der Regel motivierter als beim spezifikationsbasierten Testen.

  • Die Lernkurve (System und Testing Skills) ist steiler als beim spezifikationsbasierten Testen.

  • Exploratives Testen fördert das kritische Denken der Tester.

  • Es ist einfacher und schneller, neue Tests zu schreiben (Charter), als beim spezifikationsbasierten Testen.

  • Der Aufwand, um die Tests (Charter) zu warten, ist geringer.

  • Das Wissen der letzten Exploratory-Testing-Session kann genutzt werden, um neue Testideen zu generieren.

  • Ganzheitliche Testabdeckung

Nachteile exploratives Testen

  • Es gibt keine direkte Zurückführung zu den Anforderungen.

  • Es gibt keine direkte Verifizierung der Anforderungen.

  • Die Testabdeckung lässt sich nur schwer überblicken.

  • Unerfahrene Tester benötigen einen Mentor.

Referenzen

Sie möchten mehr dazu lesen?

  • James Bach: Exploratory Testing Explained Hier beschreibt James Bach den explorativen Charakter des Softwaretests. Er stellt grundlegende Konzepte vor, die das Wesen der Softwarepraxis ausmachen. Er möchte den Leser davon überzeugen, dass Testen ein explorativer Prozess ist.

  • Michael Bolton: Resources for Exploratory Testing Auf dieser Seite findet man viele interessante Links zu Veröffentlichungen, die Michael Bolton selber geschrieben hat oder die er für hilfreich und nützlich befunden hat.

  • Michael Bolton: HICCUPPS Consistency Heuristics Eine Struktur für Exploratives Testen bietet die HICCUPPS Eselsbrücke von James Bach und Michael Bolton. HICCUPPS steht für History, Image, Comparable Products, User Expectations, Product, Purpose und Standards & Statutes. Dahinter verbergen sich verschiedene Orakel – ein Prinzip oder Mechanismus, anhand dessen man feststellen kann, ob die Software im Sinne eines bestimmten Anwenders funktioniert. Orakel helfen dabei, Inkonsistenzen in einem Produkt festzustellen. Wenn sich beispielsweise von der Produktversion 2003 zur Produktversion 2007 von Microsoft Office die Benutzeroberfläche komplett ändert, dann ist sie inkonsistent zur gewohnten Arbeitsweise des Nutzers, der History in der obigen Liste.

  • Elisabeth Hendrickson: Test Heuristics Cheat Sheet Der Test Heuristiken Spickzettel von Elisabeth Hendrickson bietet Ideen für unterschiedlichste Testaspekte. Seien es verschiedene Hinweise zu Datentypen, Web-basierten Tests oder allgemeinen Heuristiken. Falls man nicht weiter weiß, bietet er Anregungen für weitere Ideen.

  • Cem Kaner: A Tutorial in Exploratory Testing Tutorial zum Explorativen Testen von Cem Kaner

  • Cem Kaner & James Bach: The Nature of Exploratory Testing …​ und noch ein paar interessante Folien zum Thema Exploratives Testen

  • Alexandra Schladebeck: Mikroheuristik Alexandra Schladbeck, begeisterte und sehr erfahrene explorative Testerin, beobachtete, dass zwei Tester oftmals die gleiche Vorstellung davon haben, was der nächste Schritt oder die nächste Aktion sein könnte, während sie exploratives Tests durchführen. Dies geschieht auch dann, wenn der nächste Schritt kein 'logischer' nächster Schritt ist. Ihr Verdacht: Es gibt gemeinsame Modelle, Annahmen und Muster, die sich aus dem Lernen über Testen, Wissen und Software, Auftreten von Fehlern und stundenlangem Testen ergeben. Diese Dinge kommen einem schnell in den Sinn, wenn man etwas entdeckt und gibt so eine Idee, was als Nächstes zu tun ist. Für dieses Phänomen hat sie den Begriff "Mikroheuristik" geprägt und stellt hier ihre gesammelten Mikroheuristiken vor.

  • Session-Based Testing: durch einer vorab definierten Struktur kann man exploratives Testen nachhaltiger und vor allem auch messbar machen.

Quellen