Kein
Zweifel: Intensives Testen erhöht die Qualität. Dabei hat manuelles
Testen auch Risiken: Das Testergebnis ist oft von der jeweiligen Tagesform der
Tester abhängig. Beim wiederholten Ausführen der selben Testfälle lässt meist
die Aufmerksamkeit nach. Außerdem kostet die Arbeit der Tester Zeit und Budget.
Durch den erhöhten Aufwand wird die Produktivität geringer.
Neben dem Qualitätsverständnis der Entwickler, der
konstruktiven Qualitätssicherung durch Prozesse, Methoden, Tools, Frameworks,
wieder verwendbare Komponenten, usw. ist Testautomation
ein wichtiger Schlüssel zur Erhöhung der Qualität, ohne dass dies zu Lasten der
Produktivität geht. Testautomation kann sogar zu einer Erhöhung der
Produktivität führen, da dadurch viele Fehler früher erkannt werden (mutmaßlich
mehr Fehler und wesentlich früher als beim manuellen Testen) und somit die Kosten zu
ihrer Behebung niedriger sind. Bewährt haben sich in der Praxis die folgenden
Maßnahmen:
- Kontinuierliche Integration aller vom Entwickler freigegebenen Komponenten zu einer lauffähigen Anwendung (automatisierter Build-Prozess). Dadurch wird permanent verifiziert, dass der Code auch kompilierbar ist, Referenzen auf beispielsweise Bibliotheken aufgelöst werden können, usw.
- Ausführung aller JUnit-Klassen, die von den Entwicklern erstellt wurden – im Rahmen der kontinuierlichen Integration.
- Durchführen einer toolgestützten Codeanalyse zur Überprüfung der vereinbarten Programmierrichtlinien. Dafür stehen heute sehr leistungsfähige Tools wie die Plattform Sonar zur Verfügung, die ebenfalls im Rahmen der kontinuierlichen Integration ausgeführt werden können (siehe auch: Regelmäßige Analyse der Codequalität mit Sonar)
- Automatisierte GUI-Tests (Black-Box-Tests), bei denen Skripte Eingaben in Web-Dialoge vornehmen, GUI-Elemente aktivieren und das Vorhandensein zugesicherter Ergebniswerte oder Zustände überprüfen. Hier haben sich Tools wie Sahi oder Selenium bewährt. Damit können komplexe Szenarien mit Anwendungsfällen definiert werden, die ein permanentes Funktionieren der Anwendung bei jedem neuen Build verifizieren helfen (Regressionstests).
- Automatisierte Belastungstests, die das Verhalten einer Anwendung in Bezug auf eine Dauer- oder Überlast beispielsweise bezüglich der Nutzung durch viele konkurrierende Benutzer, der Verarbeitung großer Datenmengen oder einer hohen Zahl von Transaktionen analysieren.
Durch
konsequenten Einsatz automatisierter Testmethoden lassen sich Qualität
und Produktivität zweifellos deutlich verbessern. Je früher Fehler erkannt werden, umso
geringer ist der Aufwand zu ihrer Behebung. Je höher der Automatisierungsgrad,
umso geringer der Personalaufwand. Beides wirkt sich positiv auf die
Produktivität aus.
Keine Kommentare:
Kommentar veröffentlichen