Erfahrung bei der Einfuehrung von Testautomatisierung - Probleme, Huerden, Best Practices und Gegenrede
1. Erfahrungen bei der Einführung von
Testautomatisierung
Probleme, Hürden, Best Practices …
und Gegenrede
Leipzig Software Qualitätssicherung und Testen Meetup
Ramon Anger, Leipzig 15.05.2019
Image source: https://commons.wikimedia.org/wiki/File:Factory_Automation_Robotics_Palettizing_Bread.jpg by author KUKA Roboter Gmbh
2. Probleme bei der Einführung
●
Organisationsprobleme
– Gemeinsame(s) Verständnis/Erwartungshaltung/Ziele → Erwartungs- und Stakeholder Management
– Entwickler/Tester/Automatisierer sind deine Freunde, nicht deine Feinde
●
Testabdeckung halten/erhöhen
– Hohe Änderungsfrequenz im bestehenden Testset → Neue Funktionalität erfordert neue Tests →
Knappe Test-Ressourcen → Death March
– Testautomatisierung ist Software-Entwicklung
●
Testautomatisierung scheitert
– Erste Messung: 5% Abdeckung → Erwartung Management: 50%
– Erwartungshaltung nicht erfüllt → Geduld verloren → Es wird wieder manuell getestet
– Testautomatisierung als Lern-/Veränderungsprozess akzeptieren
– Nicht nur Kosten, sondern auch Nutzen transparent machen
Image source: https://commons.wikimedia.org/wiki/File:Factory_Automation_Robotics_Palettizing_Bread.jpg by author KUKA Roboter Gmbh
3. Hürden bei der Einführung
●
Wir brauchen Testdaten! Viele Testdaten!
– Woher bekommen wir Testdaten? Anonymisierung, Pseudonymisierung …
– Testdaten (pro Test) zurücksetzen → Abhängigkeiten
●
Wo anfangen?
– Was soll getestet werden? → Wo liegen die Schmerzen?
– Ohne Testkonzept geht es nicht
●
Richtiges Werkzeug für jeweiliges Problem
– App vs. Web / Performance vs. Useability / Regression vs. Acceptance …
– Kenne deine Werkzeuge
●
Falsche Anreize/Messmittel
– Anzahl gefundener/anerkannter Fehler / Fehlerklassifizierung
●
Testen unter realen Bedingungen
– Ausstattung Testumgebung: Speicher/Kerne/Datenmenge
–
Image source: https://commons.wikimedia.org/wiki/File:Factory_Automation_Robotics_Palettizing_Bread.jpg by author KUKA Roboter Gmbh
4. Best Practices bei der Einführung
●
UI-Tests auf Code-Ebene hinterfragen
– Aufwand bei Änderungen vs. Wiederverwendung
●
UI nicht zu früh automatisieren
– Hohe Änderungsfrequenz vs. Hoher Aufwand
●
Lerne UI Tests zu schreiben, die resistent gegen Veränderung sind
●
Laufzeitveränderung der Tests messen → per Script
●
Warte! → Webanwendungen neigen dazu nicht deterministisch zu reagieren → WaitFor ...
●
Verwende/Kreiere eine Test-Muster-Sprache
●
Parallelisiere Testausführung, wenn du kannst (Laufzeit, frühes Feedback, Nightly)
– Webanwendung, Cloud, CI/CD
●
Nicht zu viel (weg)managen → Testen und Fehler beheben
●
Trotz aller Automatisierung → Benutze deine Augen
Image source: https://commons.wikimedia.org/wiki/File:Factory_Automation_Robotics_Palettizing_Bread.jpg by author KUKA Roboter Gmbh
5. Wenn Automatisierung so schwierig
ist, warum sollen wir dann …
●
Frühes / schnelles Feedback
– Nicht erst, wenn (manuelle) Tester oder Kunde Zeit haben
●
Regression → partielles Sicherheitsgefühl
– Kompatibilität
– Write Once, run on most devices/browser (versions)
– Stabile Tests sind preiswert
●
Design for Testability führt zu einfacherer Software
– APIs, Services, TDD
●
Test wird sicher durchgeführt
– CI/CD
●
Protagonisten (Entwickler wie Tester) leichter in der Lage, die richtigen Dinge zu testen/zu
entwickeln
Image source: https://commons.wikimedia.org/wiki/File:Factory_Automation_Robotics_Palettizing_Bread.jpg by author KUKA Roboter Gmbh