# Exploratives Testen

Exploratives Testen ist ein Ansatz zum Testen von Software, der als gleichzeitiges Lernen, Testdesign und Testausführung beschrieben wird. Cem Kaner, der den Begriff 1984 geprägt hat, definiert exploratives Testen als "einen 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."
Während die Software getestet wird, lernt der Tester Dinge, die zusammen mit Erfahrung und Kreativität neue Tests hervorbringen. Exploratives Testen wird oft fälschlicherweise als Black-Box-Testtechnik angesehen. Korrekterweise ist es ein Testansatz, der auf jede Testtechnik in jeder Phase des Entwicklungsprozesses angewendet werden kann. Der Schlüssel ist weder die Testtechnik noch das zu testende oder zu überprüfende Objekt. Der Schlüssel ist das kognitive Engagement des Testers und die Eigenverantwortung des Testers für den sinnvollen Einsatz seiner Zeit fürs Testen.

## Geschichte

Explorative Tests wurden schon früher von erfahrenen Testern durchgeführt. In den frühen neunziger Jahren war Ad-hoc oft ein Synonym für schlampige und nachlässige Arbeit. Infolgedessen begann eine Gruppe von Testmethodikern (die sich jetzt als kontextgesteuerte Schule bezeichnen), den Begriff "explorativ" zu verwenden, um den vorherrschenden Denkprozess bei Tests ohne Skript hervorzuheben und die Praxis zu einer lehrbaren Disziplin zu entwickeln. Diese neue Terminologie wurde erstmals von Cem Kaner in seinem Buch Testing Computer Software veröffentlicht und in Lessons Learned in Software Testing. erweitert. Exploratives Testen kann genauso wie jede andere intellektuelle Aktivität gelernt werden.

## Beschreibung

Explorative Tests versuchen herauszufinden, wie die Software tatsächlich funktioniert, und Fragen zu stellen, wie sie mit schwierigen und einfachen Fällen umgehen kann. Die Qualität des Tests hängt von der Fähigkeit des Testers ab, Testfälle zu erfinden und Programmfehler zu finden. Je mehr der Tester über das Produkt und die verschiedenen Testmethoden weiß, desto besser wird der Test.
Explorative Tests können mit ihrer Antithese, den geskripteten Tests verglichen werden. Bei geskripteten Tests werden Testfälle im Voraus entworfen. Dies umfasst sowohl die einzelnen Schritte als auch die erwarteten Ergebnisse. Diese Tests werden später von einem Tester durchgeführt, der das tatsächliche Ergebnis mit dem erwarteten vergleicht. Bei der Durchführung von explorativen Tests sind die Erwartungen offen. Einige Ergebnisse können vorhergesagt und erwartet werden; andere vielleicht nicht. Der Tester konfiguriert, betreibt, beobachtet und bewertet das Produkt und sein Verhalten. Er untersucht das Ergebnis kritisch und meldet Informationen, bei denen es sich wahrscheinlich um einen Fehler handelt (der den Wert des Produkts reduzieren könnte) oder um ein Problem (das die Qualität des Testens gefährdet).
In der Praxis ist das Testen fast immer eine Kombination aus explorativen und skriptbasierten Tests, jedoch mit einer Tendenz zu beiden, je nach Kontext.
Laut Cem Kaner und James Marcus Bach ist exploratives Testen eher eine Denkweise oder "... eine Art, über das Testen nachzudenken" als eine Methodik.
Die Dokumentation von explorativen Tests reicht von der alleinigen Dokumentation der gefundenen Fehler bis hin zur Dokumentation aller durchgeführten Tests.
Beim Pair testing testen zwei Personen gemeinsam, oftmals besteht das Paar aus einem professionellen Tester und einem Softwareentwickler oder einem Business-Analyst. Als Nebeneffekt gewinnt im ersten Fall der Softwareentwickler voraussichtlich Einsichten über Risiken, während der Tester einen Einblick in die Architektur erhält. Wenn ein Tester und ein Business-Analyst im Paar arbeiten, wird der Tester dabei wahrscheinlich mehr vom Geschäft und den Erwartungen an die Software lernen.
Strukturiert exploratives Testen kurz SET ist eine Methode des explorativen Testens, bei der es darum geht weiter zu gehen als bloß bei den spezifizierten Anforderungen. Man macht sich Gedanken zu Abläufen an die zuvor noch niemand gedacht hat. Bei der Durchführung geht es darum, dass es eine vorgegebene Zeitdauer gibt, in welcher die Testpersonen ein vorher definiertes Testziel testen. Nachdem die Zeitdauer abgelaufen ist, tauschen sich die Testpersonen aus und zeigen ihre Erkenntnisse auf. Die Erkenntnisse müssen dokumentiert werden.
Sessionbasiertes Testen ist eine Methode, die speziell entwickelt wurde, um explorative Tests in größerem Maßstab überprüfbar und messbar zu machen.
Explorative Tester verwenden häufig Tools, einschließlich Bildschirmaufnahme- oder Video-Tools als Aufzeichnung bzw. Dokumentation der Tests, oder Tools, um schnell für den jeweiligen Tests interessante Situationen zu generieren, z. B. James Bachs Perlclip.

## Vor- und Nachteile

Der wichtigste Vorteil explorativen Testens gegenüber herkömmlichem Test besteht darin, dass weniger Vorbereitung erforderlich ist, wichtige Fehler schnell gefunden werden und bei der Durchführung intellektuell anregender ist als die Ausführung von Skripttests.
Ein weiterer großer Vorteil besteht darin, dass Tester auf Ergebnisse früherer Tests reagieren, und ihre aktuellen Tests geeignet verändern können. Sie müssen keine Reihe von Skripttests absolvieren, sondern können sich zielgerichtet auf neue Anforderungen konzentrieren oder diese erkunden. Dies beschleunigt auch die Fehlererkennung.
Ein weiterer Vorteil ist, dass die meisten Fehler eines Programmes oder Programmteiles bei explorativem Testen bereits nach kurzer Zeit entdeckt werden. Programme, die bestimmte Tests bestehen, bestehen in der Regel weiterhin dieselben Tests und bestehen mit größerer Wahrscheinlichkeit andere Tests oder Szenarien, die noch nicht untersucht wurden."
Ein Nachteil explorativen Testens ist, dass die im laufenden Betrieb erfundenen und durchgeführten Tests, nicht im Voraus überprüft werden können, wodurch Missverständnisse hinsichtlich der Anforderungen oder Fehler in Testfällen entstehen können. Weiterhin kann es schwierig sein, genau zu zeigen, welche Tests durchgeführt wurden. Die Nachvollziehbarkeit der gefundenen Fehler leidet unter Umständen darunter.
Es ist unwahrscheinlich, dass explorative Tests bei einer erneuten Durchführung auf genau dieselbe Weise ausgeführt werden. Dies kann von Vorteil sein, wenn es wichtig ist, neue Fehler zu finden, aber auch ein Nachteil, wenn es wichtiger ist, bestimmte Details der früheren Tests zu wiederholen. Dies kann mit spezifischen Techniken (z. B. die Aufzeichnung der Tests) durch Vorbereitung automatisierter Tests gesteuert werden.

## Untersuchungen

Replizierte Experimente haben gezeigt, dass geskriptete und explorative Tests zu einer ähnlichen Effektivität der Fehlererkennung führen (die Gesamtzahl der gefundenen Fehler). Explorative Ergebnisse führen zu einer höheren Effizienz (Anzahl der Fehler pro Zeitspanne), da kein Aufwand für die Vorplanung der Testfälle aufgewendet wird.
Beobachtungen an explorative Testern haben ergeben, dass die Verwendung von Wissen über die Domäne, das zu testende System und Kunden, ein wichtiger Faktor für die Effektivität von explorativen Tests ist.
Eine Fallstudie bei drei Unternehmen ergab, dass die Fähigkeit, schnelles Feedback zu geben, als Vorteil von explorativem Test angesehen wird, während die Schwierigkeit, den Fortschritt individueller Tester und insgesamt zu bestimmen, als Mangel eingestuft wurde.
Eine Umfrage ergab, dass explorative Tests auch in kritischen Bereichen eingesetzt werden und dass explorative Tests hohe Anforderungen an die Person stellen, die die Tests durchführt.

## Verwendung

Exploratives Testen ist besonders geeignet, wenn Anforderungen und Spezifikationen unvollständig sind oder wenn für das Testen die Zeit fehlt. Der Ansatz kann auch verwendet werden, um zu überprüfen, ob frühere Tests die wichtigsten Fehler erkannt haben.