Test­automatisierung

Warum Testautomatisierung?

Analysiert man die aktuellen Situationen der Softwareschmieden, stellt man unweigerlich fest, dass es bei fortgeschrittenem Projekt und -Softwarekomplexität kaum noch möglich ist, einen ausreichenden Grad an Qualitätssicherung durch manuelles Testen sicherzustellen.

Diese sogenannten Seiteneffekte lassen sich mit manuellen Testaufwänden kaum identifizieren, bzw. nur unter hohem Aufwand. Hinzukommt, dass im Laufe des Softwarelebenszyklus konstant Testfälle hinzukommen und auch wiederholt werden müssen (Regressionstests). Das Ergebnis ist eine exorbitante Anzahl von Testfällen. Hierfür Personal einzusetzen ist aus ökonomischer Sicht schlichtweg unwirtschaftlich.

Führt ein manueller Tester jeden Tag bzw. alle paar Tage die gleichen Regressionstests aus, kann man sicherlich eine gewisse Betriebsblindheit unterstellen. Bei einer solchen Vorgehensweise ist es nur verständlich das man mal etwas übersieht. Dies liegt in der Natur der Sache. Wir sind nun mal Menschen und keine Maschinen. Diese Umstände führen unweigerlich zu einer Art Abwärtsspirale des Qualitätsniveaus. Grundsätzlich spricht eine hohe Anzahl an Regressionstests für eine Testautomatisierung.

Diesem Problem ließe sich durch Ausbau, Rotation und Skalierung des Testteams entgegenwirken, jedoch nicht vollständig beseitigen. An dieser Stelle kommt die Testautomatisierung ins Spiel.

Die Qualitätskontrolle ist ein angeknüpfter Servicebaustein des Produktionsprozesses. Diese muss begleitend und entsprechend den Fortschritten der Entwicklung, automatisiert stattfinden. Empirische Forschungen und unsere persönlichen Erkenntnisse bestätigen, dass es nach Änderungen einer bestehenden Software immer wieder passiert, dass sich Fehler einschleichen welche zuvor bereits erfolgreich eliminiert wurden.

Was ist Testautomatisierung?

Der Begriff der (Software-)Testautomatisierung bezeichnet im Groben die Automatisierung der verschiedenen Testaktivitäten. Dabei werden mit auf dem Markt befindlichen Werkzeuge oder individuell entwickelter Tools ein Softwareprodukt getestet.
Diese Automatisierungswerkzeuge befehligen die zu testende Software und steuern diese somit. Das Ansteuern der Software erfolgt dabei systematisch und nach etablierten Methoden. Nach jedem Prüfschritt werden Verifikationspunkte ausgewertet. Dadurch kann sichergestellt werden, dass das Ergebnis auch den Vorgaben und damit dem erwarteten Verhalten entspricht.

Werden Abweichungen registriert, wird ein negatives Testergebnis inkl. Fehlerprotokoll zurückgegeben. Man unterscheidet verschiedene Level, an denen eine Testautomatisierung aufsetzen kann:

  • Tests auf einer grafischen Benutzeroberfläche
  • Schnittstellen-Tests (z.B. HTTP, REST)
  • Unit-Tests (Codeebene – Modultests & Komponententests genannt)

Befindet sich eine Software beispielsweise in ihrer Anfangsphase, bei der sie sich sehr stark und oft ändert, kann eine Testautomatisierung auch hinderlich sein. Durch die permanenten Änderungen an der Software resultieren bei der Testautomatisierung nicht zu unterschätzende Wartungsaufwände.
Gerade in der Agilen Softwareentwicklung (CI-Continuous Integration und CD-Continuous Delivery), kann und sollte auf automatisierte Tests nicht verzichtet werden. Unit-Tests und Headless-Tests lassen sich in den automatischen Build-Prozess integrieren und helfen bei kurzen Iterationen oder jedem Code-Check-In lassen sich schnelle Ergebnisse und somit Rückschlüsse auf die Softwarequalität schließen.

Testservices für:

  • Testmanagement
  • Coaching von Projektmitarbeitern
  • Testautomatisierung
  • Security Awareness Schulungen
  • Penetrationstest
  • Barrierefreiheitstest

Was sind die Ziele der Testautomatisierung im Vergleich zum manuellen Testen?

  • Sicherstellung einer dauerhaft hohen Qualität des Produkts
  • Effizientes Arbeiten und Kostenersparnis durch Zeitgewinn
  • Schnelle Analyse und Rückmeldung zur Softwarequalität
  • Aufspüren von Seiteneffekten die durch Fehlerbehebung oder Neuimplementierung hinzugekommen sind
  • Kostenersparnis durch Verkürzung der Entwicklungszeit aufgrund früher gefundenen Fehler

Testservices für:

  • Testmanagement
  • Coaching von Projektmitarbeitern
  • Testautomatisierung
  • Security Awareness Schulungen
  • Penetrationstest
  • Barrierefreiheitstest

Braucht es den manuellen Test dann noch?

Bei Softwareänderungen ist es nötig Änderungen im Testskript vorzunehmen. Es kann passieren, dass das Testskript zwar noch durchläuft, aber nicht mehr alles korrekt prüft. Die Qualität der Testskripte ist essenzieller Bestandteil der Testautomatisierung. Die automatisierten Tests sind nur so gut wie ihre entworfenen Testskripte. Ein Testautomatisierungsskript besitzt keine umfassende Intelligenz. Es prüft nämlich nur exakt das, was man im ihm definiert hat. An dieser Stelle kommt der Faktor Mensch wieder ins Spiel. Hier kann der manuelle Tester seine Erfahrungen einbringen indem er über den Tellerrand schaut und abseits des vorgegebenen Pfads noch weitere und umfangreicheren Tests ausführt. Hierzu werden „explorative Test“ und „erfahrungsbasierter Test“ durchgeführt und bieten sich als ideale Ergänzung zur Testautomatisierung an. Ferner gibt es Testarten bei denen eine Automatisierung schwer bzw. gar nicht durchführbar sind. (Usability Test)

Testservices für:

  • Testmanagement
  • Coaching von Projektmitarbeitern
  • Testautomatisierung
  • Security Awareness Schulungen
  • Penetrationstest
  • Barrierefreiheitstest

Werden manuelle Tests dann noch benötigt?

Bei Softwareänderungen ist es nötig Änderungen im Testskript vorzunehmen. Es kann passieren, dass das Testskript zwar noch durchläuft, aber nicht mehr alles korrekt prüft.

Die Testarchitektur

Verstehen alle dasselbe unter den Begriffen SUT (System under Test), EUT (Equipment under Test), MUT (Modul under Test). Soll ich bei den Unit Tests auch die Testabdeckung bezüglich Anforderungen oder bezüglich Source Code nachweisen? Ist die Code Coverage pro Zeile genügend oder muss auch jede Verzweigung mit Tests abgedeckt sein? Benötige ich ein Testsystem, das alle möglichen Tests (Unit, Modul, System, Funktion, Integration, Debug) abdeckt oder kann ich mit simulierten Komponenten arbeiten?

Proof of Concept

Mit einem PoC gewinnt man relevante Erkenntnisse für weitere Entscheidungen auf Anbieter und Kundenseite und erhält erste Einblicke in die technische Leistungsfähigkeit des eingesetzten Automatisierungstools unter Kundenbedingungen

Umsetzung der Testautomatisierung

Testautomatisierungs-Experten helfen Ihnen, eine funktionierende und wartbare Testautomatisierung für Ihr Projekt zu erstellen oder eine vorhandene Automatisierung auszubauen.

Reporting

Um den aktuellen Stand der Qualität einschätzen zu können, wird ein Reporting benötigt. Dies gilt für das manuelle Testen, aber noch mehr für das automatisierte Testen, da diese Einschätzung hier alleine nicht ausreichen. Es müssen Daten, wie Tabellen, Diagramme und Statistiken, geliefert werden.

Test Automation Engineer

Sie fragen sich, wer die Testautomatisierung durchführt bzw. diese entwickelt? Ein Softwaretester, eine Softwareentwicklerin? Die Entwicklung der Testskripte ist eine Aufgabe, die zwischen dem Testbereich und der Entwicklung verortet werden kann. Deshalb gibt es hierfür auch eine neue Rolle:
Der Test Automation Engineer.

Risiko Management

Das Testobjekt, für das die Automatisierung erstellt wird, ändert sich. Zum einem durch Weiterentwicklung, zum anderen, weil sich das Umfeld ändert, indem beispielsweise neue Versionen des Betriebssystems installiert werden oder sich Applikationsversionen (Datenbank, Webserver) ändern. Nicht zu vergessen sind Datenänderungen, z.B. bei Preisen in Shops oder bei Passwörtern von Usern. Diese Änderungen sollten Sie stets im Auge behalten, damit Sie bereits im Vorfeld gegensteuern können.