Reicht Testen aus?

Continuous Architecture  –  0 Kommentare
Anzeige

Fehler in Software müssen verhindert werden – dazu ist Software heutzutage zu wichtig. Also müssen Softwareteams testen. Aber reicht das aus?

Für ein Problem gibt es immer mehr als eine Lösung. Softwaretests verhindern, dass Fehler in der Software negative Auswirkungen haben. Tests verhindern keine Fehler: Sie finden Fehler, bevor sie zu Problemen führen.

Anzeige

Performancetests sind besonders schwierig: Das Benutzerverhalten muss simuliert werden, die zu erwartenden Benutzerzahlen müssen bekannt sein, und es muss ein Testsystem geben, das produktionsnahe Leistung erreichen kann. Diese Anforderungen sind oft unrealistisch. Bei neuen Features kann das Benutzerverhalten noch gar nicht bekannt sein. Ein System mit produktionsnaher Performance aufzubauen, ist oft zu teuer und zu aufwendig.

Wie kann ein Team ohne Tests Performanceproblem finden, bevor sie zu Problemen führen? Das Team kann eine neue Version nur auf einem Teil der Server deployen. Wenn es ein Performanceproblem gibt, können die Server mit der alten Version die Last abarbeiten. Die neue Version kann wieder aus der Produktion genommen werden – ohne dass es negative Auswirkungen gab. Dieses Vorgehen heißt Canary Releasing.

Für dieses Vorgehen muss das Monitoring passende Werte liefern, damit ein Problem frühzeitig erkannt wird. Ebenso müssen das Deployment und das Rollback automatisiert sein, um schnell und zuverlässig zu reagieren. Also lohnt sich neben Testen eine Investition in Monitoring und Deployment.

Bei Performance ist dieser Ansatz immer sinnvoll, weil Performancetests allein keine ausreichende Sicherheit bieten. Aber auch bei fachlichen Fehlern kann ein solches Vorgehen eine Ergänzung oder sogar der bessere Ansatz sein. Beispielsweise lassen sich alte und neue Version parallel betreiben. Die neue Version läuft "blind" – also ohne Auswirkungen auf die Daten –, und Ergebnisse werden verglichen.

Weitere mögliche Maßnahmen: Software kann öfter in Produktion gebracht werden. So erfolgen Änderungen in kleineren Schritten und damit mit geringerem Risiko. Das ist die Idee von Continuous Delivery. Oder die Software wird in mehrere unabhängig deploybare Module ("Microservices") aufgeteilt. Auch das verringert das Risiko eines Deployments, weil nur ein kleiner Teil des Systems betroffen ist.

Also sorgt erst eine Kombination von Tests und anderen Maßnahmen für qualitativ hochwertige Software.

Tests sind nur eine Möglichkeit, um Probleme mit Software zu verhindern. Es gilt, Handlungsalternativen zu kennen und die effektivste auszuwählen.

Anzeige