Vorteile der Testautomatisierung

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 teuerManuelle 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ässigFaktor Mensch: Konzentration lässt nach, Betriebsblindheit, Änderungen werden ignoriert, …
manuelle Tests sind grobTestkombinatorik (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 FeedbackDie 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 HotfixesHotfixes 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 VerteilungWenn 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-MarketReleasezyklen 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öglichtSoftwareentwickler 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.