Schulterblick auf einen Developer, der am Schreibtisch sitzt und an einem Code arbeitet.

Automatisiertes Testing

Warum beschäftigen wir uns bei u+i mit automatisierten Tests? 

In der heutigen schnelllebigen und technologiegetriebenen Welt ist agiles Testen ein entscheidender Aspekt, um die Qualität und Effektivität von Softwareprodukten zu gewährleisten. Doch warum betonen wir die Bedeutung agilen Testens und was bringt es uns und unseren Kund+innen?

Zunächst einmal hat sich die Ausgangssituation im Bereich des Software-Testens im Laufe der Zeit erheblich gewandelt. Während in traditionellen Wasserfall­projekten die Entwicklungsteams ihre Arbeit abschlossen und das Testobjekt dann zur Qualitätsprüfung (QA = Quality Assurance) weiterleiteten, hat sich dieser Ansatz grundlegend geändert. In diesen traditionellen Methoden kamen die Rückmeldungen oft verzögert, was den gesamten Entwicklungsprozess verlangsamte und die Markteinführungszeit erhöhte. 

Im Gegensatz dazu steht das agile Testen. In einem agilen Umfeld wird häufiger und in immer kürzer werdenden Abschnitten getestet. Dies ermöglicht eine kontinuierliche Rückmeldung und Integration, wodurch Probleme frühzeitig erkannt und behoben werden können. Diese Herangehensweise trägt wesentlich dazu bei, dass das Endprodukt nicht nur den Anforderungen der Entwickler+innen entspricht, sondern auch den Bedürfnissen und Erwartungen der Kund+innen gerecht wird. 

Durch agiles Testen können wir unseren Kund+innen also ein höheres Maß an Qualität und Zuverlässigkeit bieten. Die frühzeitige und regelmäßige Überprüfung hilft uns, Fehler schnell zu identifizieren und zu beheben, was wiederum zu einer höheren Kundenzufriedenheit führt. Die Kund+innen profitieren von einer schnelleren Markteinführung und Produkten, die ihren Anforderungen genau entsprechen. 

Kurz gesagt, agiles Testen ist nicht nur eine Methode zur Qualitätssicherung; es ist ein entscheidender Faktor für die erfolgreiche Umsetzung von Kundenanforderungen in qualitativ hochwertige Softwarelösungen. Es ermöglicht uns, effizienter und effektiver auf die dynamischen Marktbedingungen und die Bedürfnisse unserer Kund+innen zu reagieren. 

Warum setzen wir bei u+i automatisierte Tests ein?

Automatisierte Tests spielen eine entscheidende Rolle in der agilen Softwareentwicklung, und die agile Testpyramide bietet einen strukturierten Rahmen für deren Implementierung. 

Quelle: Testing Pyramid

An der Basis der Pyramide stehen Unit Tests. Diese bilden das Fundament und sind in großer Zahl vorhanden. Ihre Stärke liegt in der Geschwindigkeit und der Häufigkeit, mit der sie ausgeführt werden können. Unit Tests zielen darauf ab, die kleinste Einheit des Codes, wie Funktionen oder Methoden, zu prüfen und liegen in der Regel in der Verantwortung des/der Entwickler+in. Durch diese Tests wird sichergestellt, dass jede einzelne Komponente des Codes wie vorgesehen funktioniert.  

Die nächste Ebene bilden die Integrationstests. Diese sind entscheidend, da sie die Interaktion zwischen verschiedenen Komponenten oder Systemen überprüfen. Auch diese Testebene wird üblicherweise von Entwickler+innen übernommen. Integrationstests stellen sicher, dass die einzelnen, zuvor isoliert getesteten Komponenten zusammenarbeiten und die gewünschten Ergebnisse liefern. 

Auf einer höheren Ebene kommen die UI-Tests, bei denen automatisierte End-to-End-Tests auf produktionsnahen Umgebungen durchgeführt werden. Diese Tests sind zeitaufwändiger als die vorherigen, da sie oft mehrere Komponenten gleichzeitig testen oder komplette Workflows durchlaufen. Diese Ebene kann sowohl von QA-Teams als auch von Entwickler+innen gemeinsam übernommen werden und gewährleistet, dass die Software aus der Perspektive des Endbenutzers wie erwartet funktioniert. 

An der Spitze der Pyramide stehen manuelle Tests. Diese sind für die Überprüfung von Benutzeroberfläche und Benutzerinteraktionen notwendig, die zu aufwendig sind, um automatisiert zu werden. Obwohl diese Tests langsamer und aufwendiger als die unteren Ebenen der Pyramide sind, sind sie unerlässlich, um sicherzustellen, dass die Benutzererfahrung den Erwartungen entspricht. Diese Ebene der Tests liegt in der Regel in der Verantwortung der QA-Teams.  

Zusammenfassend bieten automatisierte Tests in der agilen Entwicklung durch die Struktur der Testpyramide eine effiziente und effektive Methode, um Softwarequalität sicherzustellen. Jede Ebene der Pyramide trägt dazu bei, dass die Software aus verschiedenen Perspektiven getestet wird, was zu einem zuverlässigen und benutzerfreundlichen Produkt führt. 

Vorteile automatisierter Tests

  • Form der Dokumentation

  • Vertrauen in die Software

  • Signifikante Reduzierung
    des Gesamtaufwands

Automatisierte Tests in der Softwareentwicklung bringen eine Reihe von signifikanten Vorteilen mit sich. Ein wesentlicher Aspekt ist, dass sie als eine Form der Dokumentation dienen. Sie bieten nicht nur eine klare Anleitung darüber, wie die Software funktionieren sollte, sondern auch Einblicke in die Funktionsweise des Codes. Dies ist besonders wertvoll, wenn es um die Wartung und Weiterentwicklung der Software geht. 

Ein weiterer bedeutender Vorteil automatisierter Tests liegt in der Möglichkeit des sicheren refactorings. Das ist besonders wichtig, wenn während eines Projektes Entwickler+innen wechseln oder tiefergehende Änderungen vorgenommen werden müssen. Automatisierte Tests bieten eine Sicherheitsnetzfunktion, indem sie sicherstellen, dass Änderungen am Code keine unbeabsichtigten Nebenwirkungen haben. Dies ermöglicht es den Entwicklerteams, Änderungen mit größerer Zuversicht durchzuführen und die Qualität der Software kontinuierlich zu verbessern.  

Zudem tragen automatisierte Tests dazu bei, Vertrauen in die Software zu schaffen und die Furcht vor Fehlern zu reduzieren. Wenn man weiß, dass der Code regelmäßig und gründlich getestet wird, steigt das Vertrauen in seine Zuverlässigkeit und Stabilität. Dies ist nicht nur für die Entwickler+innen selbst wichtig, sondern auch für die Stakeholder und Endnutzer+innen, die auf die Qualität und Zuverlässigkeit der Software angewiesen sind. 

Schließlich ist das initiale Schreiben von Tests zwar mit einem gewissen Aufwand verbunden, aber dieser zahlt sich schnell aus. Während das manuelle Testen einer Funktion oft mehrere Minuten in Anspruch nehmen kann, dauert die Ausführung eines automatisierten Tests in der Regel nur wenige Sekunden. Dies bedeutet, dass nach der ersten Erstellung eines Tests, jede weitere Ausführung eine erhebliche Zeitersparnis mit sich bringt. Über die Lebensdauer eines Projekts hinweg können diese eingesparten Minuten zu einer signifikanten Reduzierung des Gesamtaufwands führen. 

Wie sieht unsere Lösung für E2E-Tests aus? 

Bei u+i haben wir uns für das Framework Cypress entschieden, um unsere Software­entwicklungs- und Testprozesse zu optimieren. Cypress bietet uns derzeit eine Reihe von entscheidenden Vorteilen, die es zu einem unverzichtbaren Werkzeug in unserem Entwicklungs­prozess machen. 

Insgesamt hat die Wahl von Cypress als unser Test-Framework die Qualität unserer Software­entwicklung erheblich verbessert. Es hilft uns, effizientere, zuverlässigere und benutzer­freundlichere Anwendungen zu erstellen, was letztendlich unseren Kund+innen zugutekommt. 

Die Vorteile von Cypress:

  • Keine Änderung an der Codebase des Produktes notwendig: In der Regel ist es nicht notwendig, die eigentliche Code-Basis des Produktes zu verändern, da Cypress als eigenständiges Repository genutzt werden kann.
  • Realzeit-Feedback: Ermöglicht das Sehen von Tests, die in Echtzeit im Browser ausgeführt werden.
  • Direkte Integration in den Browser: Ermöglicht das Testen von Anwendungen in einer tatsächlichen Browserumgebung.
  • Snapshot-Testing: Möglichkeit, den Zustand von Tests zu jedem Zeitpunkt zu erfassen und zu inspizieren.
  • Flüssige Integration in CI/CD-Pipelines: Leicht in Continuous Integration und Continuous Deployment Prozesse integrierbar, d.h. der Code wird jedes Mal getestet, wenn eine Änderung vorgenommen bzw. commited wird.
  • Unterstützung für moderne Front-End-Frameworks: Kompatibel mit Frameworks wie React, Angular, Vue etc.

Was bringen automatisierte Tests unseren Kund+innen bzw. Stakeholdern? 
 

Die Vorteile, die unsere Kund+innen durch die Verwendung von automatisierten Tests, insbesondere durch unser gewähltes Framework Cypress, erfahren, sind vielfältig und bedeutsam. 

Einer der bedeutendsten Vorteile ist, dass die Tests auch nach Projektende dem/der Kund+in übergeben werden können, da die Cypress Tests unabhängig von der restlichen Codebasis sind. Dies bietet einen enormen Mehrwert, besonders wenn Änderungen am System durch die eigenen Entwickler+innen des/der Kund+in vorgenommen werden. Mit den vorhandenen Tests können sie sich darauf verlassen, dass die Kernprozesse auch nach dem Refactoring genau so funktionieren wie zuvor. Dies erhöht die Sicherheit bei Änderungen und reduziert das Risiko von Fehlern, die die Funktionalität des Systems beeinträchtigen könnten. 

Durch den Einsatz von Cypress können Änderungen schneller und sicherer deployed werden. Aufwendige manuelle Regressionstests, die normalerweise durch QA-Teams durchgeführt werden, entfallen oder können deutlich reduziert werden. Dies ermöglicht es den QA-Teams, sich auf Edge Cases zu konzentrieren, die nicht automatisiert testbar sind. Somit wird nicht nur die Effizienz gesteigert, sondern auch die Qualität der Software erhöht, da die Wahrscheinlichkeit von unentdeckten Fehlern verringert wird. 

Quelle: deckweiss.at

Ein weiterer wichtiger Aspekt ist die langfristige Kosten- und Zeitersparnis. Obwohl anfangs mehr investiert werden muss, um die Tests zu programmieren, wird mit jeder Testausführung Zeit und Geld gespart im Vergleich zu manuellen Tests. Dies ist besonders relevant bei komplexen Projekten, bei denen manuelle Tests Tage in Anspruch nehmen können. Mit jeder automatisierten Testausführung steigt die Rentabilität, da Zeit- und Ressourcen­aufwand für wiederholte manuelle Tests entfallen. 

Insgesamt ermöglicht der Einsatz von Cypress in unseren Projekten unseren Kund+innen, von einer effizienteren, sichereren und kosteneffektiveren Softwareentwicklung zu profitieren. Dies führt nicht nur zu einer schnelleren Markteinführung, sondern auch zu einem höheren Vertrauen in die Stabilität und Zuverlässigkeit ihrer Softwarelösungen. 

Du hast Fragen zum Cypress-Framework oder unserer agilen Teststrategie? Schreib mir einfach eine Nachricht!

Jochen MatzLead Quality Assurance Engineer