Automatisierung oder nicht – Lösen wir das richtige Problem?

Artikel von Markus Gärtner

Wenn Sie lange genug im Software-Testen tätig sind, kommen Sie früher oder später mit dem Konflikt zwischen manuellem Testen und Testautomatisierung in Kontakt. Befürworter von Testautomatisierung auf der einen Seite halten manuelle Tests für Zeitverschwendung, da ein automatisierter Test leicht wiederholt werden kann. Im anderen Lager stellen die Befürworter von manuellen Tests die Notwendigkeit, einen Test zu wiederholen, in Frage. Wenn beide Parteien aneinander geraten, können für Stunden Argumente für und wider die jeweilige Position ausgetauscht werden, ohne dass beide weiterkommen. Doch wie können wir diese beiden Polaritäten auflösen?

Automatisierung bei Softwaretests

Letzten Endes beinhalten beide Positionen einen Teil der Wahrheit. Der Konflikt zwischen Testautomatisierung und manuellen Tests bekommt eine neue Perspektive, wenn wir uns fragen, wann und wofür wir automatisierte Tests benötigen, und wofür manuelle Tests für uns von Nutzen sind. Lassen Sie uns einen genaueren Blick auf den Zweck der beiden Testvorgehensweisen werfen.

Automatisierte Tests

Tests zu automatisieren ergibt vor allen Dingen dann Sinn, wenn dieser wiederholt werden soll. Ein Test, der einmalig ausgeführt werden soll, rechtfertigt den Aufwand und die Kosten für die Automatisierung nicht. Das bedeutet, dass das primäre Ziel von Testautomatisierung diejenigen Tests sind, die mehr als einmal ausgeführt werden müssen.

Automatisierte Tests halten einen Aspekt der Applikation zu dem Zeitpunkt, an dem der Test automatisiert wird, fest. Beispielsweise findet ein Entwickler in einem automatisierten Unittest seine Entscheidungen bezüglich des Designs und der Architektur der Applikation wieder. Automatisierte Tests im Gesamtsystem spiegeln darüber hinaus das Verständnis des Teams zu der Anwendungsdomäne wieder. Kurz gesagt halten automatisierte Tests also vor allem Wissen, das wir bereits haben, in einer ausführbaren Form fest. Dieses Wissen ist ausführbar, da ein automatisierter Test quasi auf Knopfdruck darüber Auskunft geben kann, ob dieses Verhalten noch in der Anwendung verankert ist.

Was passiert, wenn ein automatisierter Test fehlschlägt? Wenn ein automatisierter Test unser Wissen über das Design, die Architektur und die Anwendungsdomäne fest hält, dann macht uns ein fehlschlagender Test darauf aufmerksam, dass unser vorheriges Verständnis der Applikation nicht mehr mit der derzeitigen Anwendung übereinstimmt. Er erinnert uns somit daran, was wir vergessen oder übersehen haben könnten. Dann ist es an uns, herauszufinden, ob unser Wissen in Form von ausführbaren Tests veraltet ist und überarbeitet werden muss, oder ob wir unabsichtlich einen Fehler in die Applikation eingebaut haben, weil wir uns nicht mehr an diesen Fall erinnern konnten.

Manuelle Tests

Manuelle Tests sind da etwas anders. Erstmal ist es eine vermeidbare Verschwendung, einen Test, den man oft wiederholen möchte, immer wieder von einem Menschen durchführen zu lassen. Das menschliche Gehirn ist mit seinen Assoziationsfähigkeiten darauf optimiert, kreative Arbeiten zu erledigen. Wenn Sie einen Menschen vor einen Rechner setzen, um immer die gleichen Knöpfe zu drücken, dann ist das Verschwendung von menschlicher Gehirnkraft. Ein Computer kann das besser als ein Mensch.

Manuelle Tests sind damit vor allem dafür sinnvoll, das menschliche Gehirn einzusetzen. Der Mensch ist dem Computer in seiner Fähigkeit zu lernen überlegen. Deshalb sollten manuelle Tests auch gerade dieses Ziel haben, möglichst viel über die Anwendung herauszufinden, was wir bis dahin noch nicht wissen.

Dieses Unwissen kommt in zwei Ausprägungen. Zum einen gibt es Dinge, von denen wir wissen, dass wir sie nicht wissen: bewusstes Unwissen. Das sind beispielsweise alle Dinge über die Applikation, an denen sich Risiken manifestieren können:

  • Wie lange braucht ein Benutzer, um ein bestimmtes Ziel zu erreichen?
  • Welche Probleme im Zusammenspiel mit externen Systemen gibt es?
  • Wie intuitiv ist die Bedienoberfläche?
  • Welche Probleme treten durch unterschiedliche Eingabevorlieben (z. B. nur mit der Tastatur) auf?

Dieses Unwissen kann mit Hilfe von manuellen Tests erforscht werden. Am besten funktioniert das, indem eine dedizierte Test-Charta genau dieses Ziel hat, über die jeweilige Frage mehr herauszufinden. Dann gibt es noch all die Dinge, von denen wir noch nicht mal wissen, dass wir sie nicht wissen: unbewusstes Unwissen. Im Projektalltag sollte dieses unbewusste Unwissen möglichst gering ausfallen, allerdings können wir auch keine Aussage darüber machen, wie viel Unwissen wir in diesem Bezug haben.

Manuelle Tests dienen vor allem dazu, unsere beiden Arten von Unwissen in Wissen zu verwandeln. Nachdem wir möglichst viel über eine Applikation gelernt haben, können wir außerdem auch besser beurteilen, welche Dinge wir davon morgen noch wissen wollen, und deshalb automatisieren sollten.

Opportunitätskosten

Als sei das noch nicht alles schwierig genug, kommt noch der Aspekt von Opportunitätskosten hinzu. Opportunitätskosten sind Kosten, die entstehen, weil man A tut, und deshalb B nicht tun kann. Mit anderen Worten, wenn die Kosten, die entstehen, dadurch dass B nicht getan wurde, größer sind als die Kosten, die entstanden wären, wenn wir A nicht getan hätten, sondern stattdessen B, dann hätten wir besser B tun sollen.

In Bezug auf Testautomatisierung und manuelle Tests bedeutet das, dass wir mit jeder Tätigkeit Opportunitätskosten zu Lasten des anderen eingehen. Für jeden Test, den wir automatisieren, büssen wir so Lernen über unser Unwissen ein, welches wir durch manuelle Tests erlangen können. Für jeden manuellen Test, aus dem wir mehr lernen, können wir andere Tests als Erinnerung für morgen nicht automatisieren.

Bei der Frage nach Testautomatisierung oder manuelle Tests sollten wir uns also besser die Frage stellen, wie viel wir von dem Wissen, das wir heute schon haben, in Form von automatisierten Tests manifestieren möchten, und wie viel Zeit und Aufwand uns das Lernen über alle unsere Unbekannten wert ist.

Wenn wir ausschließlich manuell oder ausschließlich automatisiert testen, vernachlässigen wir also eine der beiden Sichtweisen. Entweder lernen wir nicht genug über die Anwendung, was sich zu automatisieren lohnen könnte. Andererseits manifestieren wir nicht genug Wissen, das wir schon haben, in ausführbaren Tests, die uns morgen daran erinnern. Die Frage lässt sich selbstverständlich nicht kontextfrei beantworten, und damit ist der Bedarf an Lernen durch Tests und der Bedarf an manifestiertem Wissen von Team zu Team, von Produkt zu Produkt und von Firma zu Firma unterschiedlich.

Weitere Artikel vom testing experience Magazin

TMMi: Warum Reifebestimmung wichtig ist von Michiel van der Voort

Händler, seid ihr bereit für die mobile Revolution?  von Chris Addis

 

 

ISTQB ® Softwaretester Zertifikate – mit Schwerpunkt Automatisierung

ISTQB ® Certified Tester Advanced Level – Test Manager
ISTQB ® Certified Tester Advanced Level – Test Analyst
ISTQB ® Certified Tester Advanced Level – Technical Test Analyst

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Kategorien

Recent Posts