Montag, 18. März 2013

Kann Qualitätssicherung die Produktivität erhöhen?



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