Qualität und Stabilität durch automatisierte Cypress Tests


11. November 2022

Erfahren Sie warum wir als Digitalagentur auf Cypress setzen, wie wir Cypress in unsere agilen Entwicklungsprozesse integrieren und wie Cypress basierte End-To-End Tests Qualität sichern und die Kosten unserer Kunden deutlich senken.

Das Problem

Ein Kunde berichtet uns zu Beginn der Zusammenarbeit den bisherigen Ablauf eines Systemupdates in etwa wie folgt:

Die neue Version einer Web-Anwendung steht zum Test bereit. Vor dem Roll-Out testet ein Team aus Projektmanagern, Entwicklern und Redakteuren alle Funktionen des Systems. Sind alle neuen Features korrekt implementiert? Funktionieren die bisherigen Module auch weiterhin? Das 7-köpfige Team nimmt sich dafür im Schnitt eine Woche Zeit und verwaltet die Ergebnisse in einer Excel Tabelle.

Den Kunden kosten diese manuellen End-To-End Tests ca. 35 Personentage – bei jedem Roll-Out. Unsere Erfahrung zeigt, dass dieses Vorgehen immer noch häufig anzutreffen und kein Einzelfall ist.

Verzweifelter Entwickler arbeitet an MacBook

Automatisierte End-To-End Tests

End-To-End Tests testen eine Anwendung in ihrer Gesamtheit - „von einem Ende bis zum anderen Ende“ - meist beginnend bei der Bedienung der Anwendung im Browser bis hin zur Antwort des Servers. Sie spiegeln dadurch das Verhalten eines Benutzers einer Anwendung sehr genau wider.

Ein Beispiel dafür ist der Kauf eines Artikels in einem Online Shop. Im Rahmen eines End-To-End Tests werden dabei alle nötigen Schritte, vom Aufruf der Startseite über die Artikelsuche bis zum Durchlaufen des Bestellvorgangs ausgeführt und bei jedem Schritt die von der Anwendung gesendete Antwort mit dem erwarteten Verhalten verglichen.

Auf diese Weise lassen sich sowohl einfache „Smoke Tests“ („Ist die Anwendung erreichbar?“ „Kann eine Bestellung durchgeführt werden?“) als auch zielgerichtetere Feature Tests („Wird der 10% Aktionsrabatt korrekt angerechnet?“) realisieren.

„Aber ihr testet doch schon alles mit Unit-Tests?!“

Neben diesen End-To-End Tests gibt es eine Reihe weiterer Testarten mit jeweils unterschiedlichem Fokus. Unit-Tests zum Beispiel testen einzelne Einheiten oder Funktionen isoliert (z.B. das Hinzufügen eines Artikels zum Warenkorb).

Durch diese Fokussierung und Isolierung können sie besonders schnell ausgeführt, einfach automatisiert und damit kostengünstig implementiert werden. Aus diesem Grund bilden Unit-Tests meist die Basis, das Fundament der Qualitätssicherung.

Ein Nachteil von Units-Tests liegt jedoch genau in dieser Fokussierung auf einzelne Funktionen, so können mögliche Wechselwirkungen mit anderen Teilen des Gesamtsystems oft nicht ausreichend berücksichtigt werden.

Gerade bei der Einführung neuer Features liegt die Aufmerksamkeit naturgemäß auf diesen neuen Funktionen und mögliche Beeinträchtigungen bestehender Features werden oft erst spät – im schlimmsten Fall erst während des laufenden Betriebs – erkannt.

Wir sprechen in diesem Fall von sogenannten „Regressions-Fehlern“, d.h. etwas, das bisher funktionierte, tut dies nun nicht mehr. Die Gefahr solcher Fehler steigt mit der Komplexität und dem Alter eines Systems.

Genau hier liegt nun die Stärke der End-To-End Tests. Sie testen das gesamte System inkl. seiner Wechselwirkungen und helfen uns auch solche Fehler frühzeitig zu erkennen.

Cypress

In der Vergangenheit wurden End-To-End Tests meist manuell durchgeführt. Dadurch waren sie besonders zeit- und kostenintensiv und daher in der Regel nicht allzu zahlreich. Mittlerweile gibt es verschiedene Lösungen End-To-End Tests zu automatisieren.

Wir bei agens.digital setzen dabei auf Cypress [1], vor allem ausfolgenden Gründen:

  • Die Lernkurve ist sehr flach
    JavaScript ist eine Technologie, die unsere Entwicklerinnen und Entwickler bereits beherrschen und gehört aktuell zu den am weitesten verbreiteten Programmiersprachen [2].

  • Wir sind mit Cypress in guter Gesellschaft
    Cypress ist am Markt etabliert und erfreut sich großer Akzeptanz. Auch Branchengrößen wie zum Beispiel DHL oder PayPal setzen auf Cypress als Lösung für automatisierte End-To-End Tests.

Die Praxis

Unsere Erfahrung hat gezeigt, dass sich Cypress Tests einfach in unseren agilen Workflow integrieren lassen.

Anforderungen, die wir in Form von User Stories formulieren, überführen wir einschließlich ihrer Akzeptanzkriterien in Cypress Tests. Auf diese Weise decken wir fast jedes neue Feature mit Cypress Tests ab. Diese Tests können dabei von jeder Entwicklerin und jedem Entwickler zu jeder Zeit ausgeführt werden um das Verhalten des Gesamtsystems zu prüfen. Unsere Releases planen wir in 2-wöchigen Sprints. Vor und nach jedem Roll-Out testen wir das System mit einem kontinuierlich wachsenden Pool an Cypress Tests. Da diese Tests automatisiert ablaufen liegt uns – und dem Kunden – das Ergebnis innerhalb von Minuten vor.

Für das eingangs geschilderte Kundenbeispiel bedeutet dies:

Das 7-köpfige Team kann in der Woche vor einem Roll-Out weiterhin seinen eigentlichen Aufgaben nachgehen und ist nicht durch manuelles Testen “blockiert”. Der Großteil des Systems kann nun automatisiert – ohne Personalaufwand – getestet werden. Kosten fallen nur bei der Entwicklung der Cypress Tests und nicht wiederholt bei jedem Roll-Out an.

Manuelle Tests werden damit zwar nicht komplett überflüssig, sie bleiben – neben Unit- und automatisierten End-To-End Tests – ein wichtiger Baustein des Qualitätsmanagements. In ihrer Menge können sie aber stark reduziert werden ohne das Vertrauen in die Stabilität des Systems zu gefährden.

Unser Fazit

Automatisierte Cypress Tests sind zu einem festen Bestandteil unseres Entwicklungsprozesses geworden, sie bieten uns und unseren Kunden Vorteile auf die wir nicht mehr verzichten möchten.

Für unsere Kunden:

  • deutliche Kostensenkung, keine unnötige Personalbindung für manuelle Tests

  • Defekte und Bugs werden frühzeitig erkannt und können rechtzeitig behoben werden

  • gesteigertes Vertrauen in ein stabiles System

Für uns als Digitalagentur:

  • Agiles Vorgehen und schnelle Release Zyklen

  • Steigerung der Qualität unserer Leistungen

So hilft uns Cypress die Qualität und das Vertrauen in unsere Lösungen zu steigern und damit die Partnerschaft zwischen uns als agens.digital und unseren Kunden zu stärken.

[1] www.cypress.io
[2] https://insights.stackoverflow.com/survey/2021#most-popular-technologies-language

_Autor(en)