fbpx

Einführung exploratives Testen

Was ist exploratives Testen?

Exploratives Testen gehört zu den erfahrungsbasierten Testverfahren, soll heißen: Hier spielt die Erfahrung des Testers eine große Rolle. Beim explorativen Testen gibt es im Gegensatz zu den spezifikationsbasierten Testverfahren keine Schritt-für-Schritt-Anleitung. Stattdessen handelt es sich beim explorativen Testen um einen Testansatz, der dem Tester viel Freiraum lässt, um seine Erfahrung voll einfließen zu lassen. Das hat für erfahrene Softwaretester:innen einen großen Vorteil, kann jedoch für unerfahrene Tester:innen zu viel Freiraum bedeuten.

Definition: Was bedeutet exploratives Testen?

Es gibt unterschiedliche Definitionen zum explorativen Testen. Eine mögliche ist zum Beispiel: 

Exploratives Testen ist eine Aktivität zum parallelen … 

 

  • … Lernen 
  • … Tests-Entwerfen
  • … Tests-Ausführen 
  • … Notizenmachen 

Damit wir diese Definition besser verstehen, vergleichen wir exploratives Testen mit den spezifikationsbasierten Testentwurfsverfahren:

Bei diesen sind die unterschiedlichen Aktivitäten in Phasen aufgeteilt und werden in manchen Fällen von unterschiedlichen Personen ausgeführt. Wie der Name schon sagt, ist hier die Basis die Spezifikation, woraus die Testfälle abgeleitet werden. Der/die Softwaretester:in entwirft anhand der Spezifikation mit verschiedenen Test-Techniken Testfälle und führt diese anschließend aus.

Spezifikationsbasierte Testentwurfsverfahren:

spezifikationsbasiertes-testen-prozess

Beim explorativen Testen hingegen werden diese Aktivitäten in der Regel von derselben Person ausgeführt. Außerdem werden die verschiedenen Phasen nicht nacheinander, sondern parallel durchgeführt. Die Basis für das Testen bilden nicht die Spezifikationen, sondern die Softwareanwendung selbst.   

Das Lernen und die Erfahrung spielen beim explorativen Testen eine große Rolle. Dadurch, dass die/der Software-Tester:in keine Schritt-für-Schritt-Anleitung hat, wie er die Testfälle ausführen soll, besteht hier die Möglichkeit, sehr viel über die Softwareanwendung, die Geschäftsprozesse der Anwendung und die eingesetzten Technologien zu lernen.

Vorgehen beim explorativen Testen

Beim explorativen Vorgehen halten wir uns trotz des explorativen Gedankens doch an einen Plan, um diese Methode strukturiert und planbar anwenden zu können.

Wichtig ist dabei, die Testaufwände so zu dosieren, dass wir die Teile der Software intensiv testen, die im Falle eines Fehlers einen hohen Schaden anrichten könnten. Diese Art der Dosierung von Testaufwänden nennt man auch risikobasiertes Testen und erfordert eine detaillierte Analyse unserer zu prüfenden Software daraufhin, welche Teile einem hohen oder geringen Risiko ausgesetzt sind.

Die folgenden Schritte setzen wir um, um eine ganze Applikation, ein Feature oder auch nur einen Teilaspekt zu testen.

vorgehen-exploratives-testen

1. Test Charter schreiben 

2. Die Session: 

In der Regel timeboxed (30 bis 90 Minuten)

Mission ausführen: 

Tests entwerfen (Fragen formulieren)

Tests ausführen (Fragen stellen)

Notizen (Wichtiges dokumentieren)

3. Die Notizen analysieren und nächste Schritte ableiten

 

Schauen wir uns das Vorgehen genauer an:

Was ist ein Test-Charter

Ein Charter ist ein Dokument, in dem wir die Mission, auf die wir uns in der explorativen Testing-Session begeben, beschreiben. Ein Test-Charter kann unterschiedliche Informationen beinhalten und sowohl sehr generisch als auch sehr konkret formuliert werden. Je detaillierter wir in der Charter beschreiben, was wir konkret vorhaben, desto eingeschränkter wird der Freiraum beim Erforschen der Anwendung.

Konkrete Charter mit wenig Freiraum:

Stell dir vor, du wirst von deinem Freund gebeten, ihm Tomaten auf dem Markt zu kaufen. Die Tomaten sollen nicht zu groß sein. Des Weiteren gibt er dir vor, an welchem genauen Stand du sie kaufen sollst. Wie viele unterschiedliche Stände und Tomaten wirst du dir in diesem Beispiel anschauen? Wie gut kennst du den Markt danach und weißt, wo es welche Tomaten gibt?

Charter mit Freiraum:

Die andere Situation ist, dass du von deinem Freund nur die Vorgaben hast, auf dem Markt Tomaten zu kaufen. Du wirst dir unterschiedliche Stände anschauen, die Tomaten probieren und anschließend anhand der Information, die du gesammelt hast entscheiden, welche Tomaten du kaufst.

Diese Beispiele zeigen gut: Je mehr Vorgaben in einem Test-Charter sind, desto kleiner wird der Freiraum für das freie Erforschen der Anwendung. Schauen wir uns das ganze anhand von zwei Beispiel-Charter an:

Test-Charter: 

Meine Mission ist es, das Log-in Feature der amazon.de Seite zu erforschen

exploratives-testes-test-charter-amazon

Das obige Beispiel beschreibt nur, was wir testen wollen, jedoch nicht wie. Wie in unserem Beispiel, dass wir Tomaten auf dem Markt kaufen sollen, aber nicht wo wir sie kaufen und wie viel sie kosten sollen.

Ein Testing-Charter kann noch zusätzliche Informationen beinhalten, wie:

  • Welche Testtechniken setze ich ein?
  • Welche Testdaten setze ich ein?
  • Wonach schaue ich?
  • Welche Testideen möchte ich umsetzen?

Ein Test-Charter-Muster, das oft eingesetzt wird, ist von Elisabeth Hendrickson: Sie präsentiert in ihrem Buch „Explore It*“ ein Template/Muster für die Formulierung von Test-Charter.

Explore (Ziel)  

with (ressources)

to discover (information)

Mit unserem Login-Feature von oben sieht das dann folgendermaßen aus:

Explore the amazon.de Login Feature 

with Invalid & Valid Data 

To discover if the system handles it properly  

 

Die beiden Charter im Vergleich:

 

1. Test-Charter

Meine Mission ist es, das Login Feature der amazon.de Seite zu erforschen 

 

Dieser Charter lässt sehr viel Freiraum

 

2. Test-Charter:

Explore the amazon.de Login Feature 

with Invalid & Valid Data 

To discover if the system handles it properly

 

In diesem Charter haben wir mehr Informationen/Vorgaben zu unserer explorativen Test-Session. Es bleibt aber auch noch Freiraum zum Erforschen.

Zusammenfassung Charter: 

Je mehr Informationen wir zu einem Test-Charter hinzufügen, desto weniger Freiraum lassen wir für das Erforschen der Anwendung, da wir unseren Fokus vorab im Charter definieren. Die Charter erstellen wir, bevor wir mit unserer Testing-Session starten. Um Ideen für Charter zu generieren, können wir unterschiedliche Quellen nutzen, wie:

  • Die Anforderungen
  • Die Softwareanwendung selbst 
  • Test Heuristiken 
  • Unterschiedliche Test Techniken
  • Personas  

Die explorative Testing-Session

Eine explorative Test-Session dauert in der Regel zwischen 30 und 90 Minuten. Wir setzen uns dazu ein Zeitlimit, bevor wir mit der Session starten. Wie lange die Session gehen soll, kann der Test-Charter bestimmen, schließlich legen wir darin fest, wo unser Fokus sein soll und welche Informationen wir nach der Session haben wollen.

Tests entwerfen und ausführen

Beim Testen einer Softwareanwendung wollen wir wichtige Informationen über diese sammeln. Einen Test können wir uns deshalb auch gut als Frage vorstellen, die wir der Anwendung stellen, um mehr über sie zu erfahren. 

Nehmen wir als Beispiel den nachstehenden Test-Charter: 

Exploratives Testen – Beispiel: 

Meine Mission ist es, das Log-in-Feature der amazon.de-Seite zu erforschen

Test entwerfen

Wir stellen uns jetzt in unserer explorativen Test-Session die Frage, ob es eine Begrenzung an Zeichen für die E-Mail gibt und wie die Anwendung reagiert, wenn wir eine sehr lange E-Mail mit bspw. 100 Zeichen eingeben.

Test ausführen

Wir haben beim Entwerfen des Tests unsere Frage formuliert und stellen diese nun der Anwendung, um Informationen zu bekommen. Wir gegen also eine E-Mail mit 100 Zeichen ein und beobachten, wie die Anwendung reagiert.

 

Exploratory Testing Dokumentieren

Während wir unsere Explorative-Testing-Session ausführen, dokumentieren wir unterschiedliche Informationen, wie z. B.: 

  • Welche Testideen haben wir ausgeführt? (Frage formuliert und gestellt)
  • Wie hat die Anwendung reagiert? 
  • Was ist uns aufgefallen?
  • Welche Testdaten haben wir benutzt?
  • Welche Fragen sollten wir dem Product Owner/Softwareentwickler etc. stellen?
  • Welche Dinge sind uns aufgefallen?

Diese Notizen können wir für unterschiedliche Zwecke verwenden: 

  • Transparent machen, was getestet wurde 
  • Überblick, was die nächsten Schritte sind 
  • Fragen, die wir aufgeschrieben haben und mit anderen Personen klären müssen
  • Für Analysezwecke nach der Session 
  • etc.

Analyse der Session

Nach unserem explorativen Test Session analysieren wir noch einmal unsere Notizen und reflektieren, wie die Testing-Session war. Bei dieser Analyse achten wir in der Regel auf die folgenden Punkte: 

 

  • Welchen Eindruck haben wir von der Anwendung/Features?
  • Was sollten wir noch genauer testen?
  • Was haben wir noch nicht abgedeckt und warum?
  • Wie viel Aufwand müssen wir noch ins Testen stecken?
  • Welche neuen Testideen sind uns eingefallen? 
  • Wer kann unsere offenen Fragen beantworten?
  • Was ist unsere subjektive Einschätzung zur Qualität und warum?

Vergleich exploratives Testen vs. spezifikationsbasiertes Testen

Ein Interview als spezifikationsbasierter Test

Nehmen wir an, wir sind ein Journalist, der eine berühmte Person interviewt. Wenn wir das im spezifikationsbasierten Sinne machen würden, dann würden wir vor dem Interview Informationen zu der Person recherchieren und uns anhand dieser Informationen Fragen notieren, die wir der Person stellen wollen. Im Interview würden wir dann ausschließlich diese Fragen stellen und gar nicht darauf eingehen, was die Person uns erzählt. Anstatt eine Gelegenheit zu schaffen, neue Informationen zu erhalten, um möglicherweise bessere Fragen stellen zu können, würden wir einfach nur unsere Frageliste der Reihe nach abarbeiten.

Ein Interview als explorativer Test

Beim explorativen Testen hingegen würden wir ein Charter formulieren wie: „Unsere Mission ist es, mehr über die Kindheit der Person zu erfahren.” Im Gespräch würden wir die neuen Informationen, die wir von der Person erfahren, nutzen, um noch bessere Fragen zu stellen und so mehr über deren Kindheit zu erfahren.

Warum exploratives Testen?

Es gibt wissenschaftliche Studien, die zeigen, dass das explorative Testen zeiteffizienter ist und dass mehr kritische Fehler damit identifiziert werden können als mit spezifikationsbasierten Tests. Zusätzlich hat es den großen Vorteil, dass erfahrene Software-Tester:innen ihre Erfahrungen und ihr Wissen einsetzen können, um ihr volles Potenzial zu entfalten. Ein:e Software-Tester:in, welche/welcher noch nicht sehr viel Erfahrung hat, kann durch eine:n Mentor:in, der sie/ihn beim explorativen Testen anleitet oder die Charter für sie/ihn schreibt, eine hohe Lernkurve erreichen.

Das explorative Testen hat aber auch Nachteile. Es ist wichtig, die Vor- und Nachteile zu kennen und situationsbedingt zu entscheiden, welches Testverfahren eingesetzt werden soll. So können wir dazu beitragen, eine Software zu entwickeln, die den Wünschen des Nutzers entspricht.

Nachstehend die Vor- und Nachteile von explorativen Testen

 

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.

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.

Herausforderungen beim explorativen Testen 

Da das explorative Testen ein erfahrungsbasiertes Testverfahren ist, kommen unterschiedliche Softwaretester:innen zu unterschiedlichen Ergebnissen. Das betrifft sowohl die Session selbst als auch die Notizen der Session. Gerade in skalierten Softwareentwicklungsprojekten mit mehreren Teams kann das zu einer Herausforderung werden. Diese besteht oft darin, allen Beteiligten einen Überblick zu verschaffen, was getestet wurde und was noch getestet werden muss. Um hier eine Vereinheitlichung der Abläufe und Notizen zu gewährleisten, empfiehlt es sich, das Session-Based-Testing einzusetzen. Dieses schafft eine gemeinsame Struktur, um die nachstehenden Fragen besser zu beantworten:

  • Was wurde getestet? 
  • Wie wurde es getestet? 
  • Was sollten wir noch testen? 
  • Wie verlief die Testing-Session und womit haben wir unsere Zeit verbracht?
    • Testen 
    • Bug-Reports schreiben 
    • Bugs analysieren 
    • etc. 
  • Wie ist unsere subjektive Meinung als Softwaretester:in über die Softwareanwendung/das Feature?

Exploratives Testen in agilen Projekten 

Viele Unternehmen entwickeln ihre Software mit agilen Vorgehensmodellen. Dank diesen hat das explorative Testen an Popularität gewonnen. Dadurch, dass die Softwareanwendung in agilen Softwareentwicklungsprojekten inkrementell wächst, bietet diese Vorgehensweise optimale Bedingungen, um die Anwendung in jedem Sprint-Zyklus mit dem explorativen Testverfahren zu testen. In vielen agilen Teams ist das explorative Testverfahren das meist eingesetzte Testverfahren.  Hinzu kommt noch, dass die Testautomatisierung ein fester Bestandteil der agilen Softwareentwicklung ist. Dies ermöglicht es, Tests, die wiederholt werden müssen, zu automatisieren. Dadurch kann der/die agile Software-Tester:in sich auf das explorative Testen fokussieren und muss nicht die wiederholenden Tests (auch Regressionstests genannt) für jeden Sprint ausführen.

Exploratives Testen Tools 

Beim explorativen Testen setzen wir in der Regel unterschiedliche Tools ein, die uns dabei helfen, das explorative Testen effizienter auszuführen. Die Tools verfolgen unterschiedliche Zwecke, wie

  • Generieren von Testdaten 
  • Analysieren des Datenflusses vom Frontend und Backend 
  • Effiziente Erstellung von Notizen
  • Erstellung von Screenshots und Videos

5 Testing Tools für exploratives Testen

Testdaten Erstellung

Bugmagnet: 

Ein Add-on für den Browser Chrome zur Erstellung unterschiedlicher Testdaten. Zum Add-on Bugmagnet

Random String Creator: 

Eine Webseite, die uns dabei helfen kann, Zufallszeichenketten zu erstellen. Zum Tool Random String Creator

Datenaustausch analysieren:

Chrome Developer Tools:

Ein Set an Tools, die in jedem Chrome Browser integriert sind und uns bei der Analyse des Datenaustausches zwischen Frontend und Backend unterstützen können. Zum Tutorial Chrome Dev Tools

Charles Proxy:

Ein Proxy-Server, mit dem wir den Datenaustausch zwischen zwei Systemen oder mehreren Teilen eines Systems analysieren und manipulieren können. Zum Tool Charles Proxy 

Notizen erstellen

XRay Exploratory App: 

Ein Tool, das uns dabei unterstützt, unser Charter zu schreiben, und uns hilft, unsere explorative Test-Session zu dokumentieren. Zum Tool XRay Exploratory App

Zusammenfassung exploratives Testen 

Das explorative Testen ist ein wirksamer Testansatz, der in keinem Softwareentwicklungsprojekt fehlen sollte. Ein:e erfahrene:r Software-Testerin kann mit explorativem Testen in der Regel effizienter kritische Fehler finden als mit klassischen Testansätzen. Wenn unerfahrene Tester einen Mentor haben, der sie im explorativen Testen anleitet, haben sie die Möglichkeit, kontinuierlich ihre Fähigkeiten zu erweitern

Das explorative Testen hat auch Nachteile und es ist wichtig, die Vor- und Nachteile der unterschiedlichen Testverfahren zu kennen, um entscheiden zu können, welches Testverfahren in welcher Situation den größten Nutzen bringt.

Gretel Engel-Finke

Gretel Engel-Finke

Test Engineer Qcademy UG (haftungsbeschränkt)

Gretel Engel-Finke ist als Quereinsteigerin ins Software Testing gestartet. Ihre Leidenschaft ist es, in Softwareentwicklungsteams dazu beizutragen, Software zu entwickeln, die der User gerne nutzt. Sie beschäftigt sich nicht nur beruflich mit dem Thema Software Testing, sondern schreibt in ihrer Freizeit gerne Artikel zum Thema Software Testing und Testautomatisierung.

Die mit Sternchen (*) gekennzeichneten Links sind sogenannte Affiliate-Links. Wenn du auf so einen Affiliate-Link klickst und über diesen Link einkaufst, bekommen wir von dem betreffenden Online-Shop oder Anbieter eine Provision. Für dich verändert sich der Preis nicht. Damit unterstützt Du die Wartungskosten der qcademy.de Website