Noch einarbeiten: Beitrag bearbeiten „Inwiefern die Testautomatisierung über die Ablösung manueller Tester hinausgeht“ ‹ IT Kosmopolit — WordPress
Noch einarbeiten: Beitrag bearbeiten „Inwiefern die Testautomatisierung über die Ablösung manueller Tester hinausgeht“ ‹ IT Kosmopolit — WordPress
Verweis auf: Beitrag bearbeiten „Erfolgskriterien in der UI-basierten Testautomatisierung“ ‹ IT Kosmopolit — WordPress
Nachteile manueller Tests
manuelle Tests sind teuer | Manuelle Tests: man zahlt für jeden Testrun immer höhere Summen, weil Tests immer umfangreicher werden müssen. Automatische Tests: man investiert zu Beginn und zahlt dann nur noch wenig für die kontinuierlichen Anpassung. ROI-Diagramm siehe unten |
manuelle Tests sind unzuverlässig | Faktor Mensch: Konzentration lässt nach, Betriebsblindheit, Änderungen werden ignoriert, … |
manuelle Tests sind grob | Testkombinatorik (z.B. verschiedene Browser testen) kaum möglich -> unentdeckte Bugs können sehr teuer werden. Testabdeckung wird durch Testautomatisierung höher. |
manuelle Tests sind monoton | „Fließbandarbeit“ -> Jobattraktivität niedrig |
Zum verbreiteten Argument, dass manuelle Tests per se langsamer sind: siehe
Vorteile automatischer Tests
bereits bei niedriger Testabdeckung:
Fast & Focussed Feedback | Die automatischen Tests sind die Grundvoraussetzung für Continuous Integration und all deren Vorteile sind somit die der Testautomatisierung. Dieser Punkt ist der wichtigste – hier ist der größte Effizienzhebel des Testautomatisierung für’s Softwareprojekt! Nightly build (Mindestziel bei Testautomatisierung): Nachts automatisch komplett testen und am nächsten Morgen haben Entwickler Kenntnis über mögliche Regressionen ihrer Codeänderungen. Focussed: – Je weniger Systemänderungen (nicht nur Commits, auch Plattformupdates etc.), die von einem Regressionstests erfasst werden, desto besser. Weil der „Ursachenraum“ entsprechend klein ist, kann die Ursache der Regression auch schneller gefunden werden. Dies spart gegenüber sog. Big Bangs sowohl Zeit als auch Geld über die gesamte Lebensdauer eines Projekts. Fast: – Je schneller die Tests erfolgen, desto frischer ist das Thema noch im Kopf des Entwicklers und er muss sich nicht nach 3 Wochen wieder in die Thematik aufwändig einarbeiten, um das Problem zu lösen. – Vermeiden von Folgefehlern — Entwickler baut seine Lösung nicht auf einem wackligen Fundament weiter. Wegen des Defects müsste er eigentlich einen anderen Ansatz nehmen, weil er ihn aber nicht frühzeitig entdeckt, verschwendet er Zeit mit diesem Ansatz — Entwicklerkollegen (und auch der Entwickler selbst) bauen ihre Lösungen u.U. auf dem Defect auf, die Fehlerdichte kumuliert immer mehr und am Ende entsteht ein gordischer Knoten. Die technischen Schulden steigen |
Heben Nachteile manueller Tests auf | * niedrigere Kosten * höhere Zuverlässigkeit * ausdifferenziertere Tests möglich (Kombinatorik) * höhere Jobattraktivität |
Risikoärmere Hotfixes | Hotfixes müssen nicht mehr ungeprüft eingespielt werden bzw. können zeitnah nach dem Einspielen auf der Produktivumgebung nachgetestet werden. -> geringeres Risiko von teuren Bugs |
Bessere Verteilung | Wenn alle Bugs erst zum monatlichen Regressionstests gefunden werden, reicht die Debuggingzeit möglicherweise nicht mehr aus, den Deploymenttermin zu halten. Monatliche Regressionstests werden selten ein zweites Mal nach dem Debugging durchgeführt, obwohl mit jedem Debugging potenziell eine weitere Regression stattfinden kann. |
ab hoher Testabdeckung:
Kürzere Time-To-Market | Releasezyklen können stark verkürzt werden -> kürzere Time-To-Market: wichtige Features werden zeitnah und nicht erst beim nächsten Release wirksam. |
Mutigeres Programmieren wird ermöglicht | Softwareentwickler müssen nicht mehr so defensiv programmieren, weil sie mit der Testautomatisierung ab einem bestimmten Level ein gutes Sicherheitsnetz haben. Defensives Programmieren kostet das Projekt unnötig Entwicklerzeit. |