Im Vergleich zu Selenium zählt Cypress zu den Newcomern unter den Automatisierungs-Frameworks. Nichtsdestotrotz erfreut es sich seit einigen Jahren wachsender Beliebtheit. Kein Wunder, denn vor allem für Tests in Webanwendungen bietet das Tool allen QS-Engineers eine schlanke, zuverlässige Lösung. Das Javascript basierte Framework kann sowohl für Unit-Tests, Integrationstest als auch UI-Tests eingesetzt werden. Die Geschichte, Funktionsweise und Vorteile des Tools möchten wir in diesem Beitrag etwas genauer betrachten.
Geschichte des Tools
Der Webentwickler Brian Mann brachte 2015 Cypress auf den Markt. Bestehende Lösungen wie Selenium konnte ihn nicht überzeugen. Mann wollte ein Automatisierungstool bauen, das durch Testausführung in direkter Browserumgebung noch schneller und stabiler läuft als bei der Konkurrenz – mit großem Erfolg. Cypress hat sich neben Selenium inzwischen zu einem Branchenriesen etabliert. Aus dem einst kleinen Tool hat Mann eine erfolgreiche Firma gemacht. Cypress.io entwickelt seine Lösung stets weiter und bietet neben dem kostenfreien Service auch eine entgeltliche Cloudalternative.
Möglichkeiten mit Cypress
Cypress ist ein End-to-End-Test-Runner, um vor allem das Verhalten von Oberflächen-Elementen zu prüfen. Es kann jedoch auch für andere Testarten genutzt werden. So können mit Erweiterungen wie Mocha auch Unit-Tests und/oder Integrationstests in Form von API-Calls geschrieben werden. Empfehlenswert ist es, Cypress für wiederkehrende Regressionstests zu verwenden, um zu gewährleisten, dass neue Software-Komponenten keine anderweitigen, unerwünschten Nebeneffekte nach sich ziehen.
Mehr Informationen zu den verschiedenen Testarten finden Sie auch hier: Testpyramide.
Features und Vorteile von Cypress
Wer auf Cypress setzt, darf sich auf ein modernes End-to-End-Testframework freuen, das zahlreiche Features verspricht, dazu zählen:
- Browserseitige Ausführung: Cypress kann direkt im Browser laufen, was bedeutet, dass die Testausführung innerhalb der Browserumgebung keine andere Instanz wie beispielsweise den WebDriver (Selenium) benötigt. Dies macht Tests in Web-Applikationen besonders robust und effizient.
- Echtzeit-Feedbacks und Debugging-Funktionalitäten: Über eine GUI kann jeder Testschritt geprüft werden. Dazu lassen sich Bugs durch eine breite Palette an Debugging-Features leichter aufspüren. Das Time-Travel-Debugging ermöglicht es, den Zustand der Anwendung während der gesamten Testausführung nachvollziehen zu können.
- Screenshots: Bei der Testausführung kann Cypress automatisch Bild- und Videoaufnahmen von der Benutzeroberfläche mache, die anschließend für Fehlerbehebungen herangezogen werden können.
- Headless & CI: Cypress-Tests können problemlos in CI/CD-Pipelines eingebunden werden, sodass die Testläufe bei Codeänderungen jederzeit automatisch ausgeführt werden.
- Netzwerk-Anfragen & APIS: API-Calls können in Cypress und unter Verwendung von Mocks nachgestellt werden.
- Eingebaute Wartezeiten: Ein driver.wait() wie wir es aus Selenium kennen ist hinfällig, denn Cypress besitzt Mechanismen, um automatisch auf Befehle zu warten.
Selenium oder Cypress?
Testautomatisierer, die sich mit Cypress auseinandersetzen, stehen nicht selten vor der Frage: Selenium oder Cypress? Vorab sei gesagt: Beide Technologien gehören zu den gefragtesten Lösungen im QA-Umfeld und bieten je nach Anwendungsfall ihre Vor- und Nachteile. Die nachfolgende Abbildung soll eine Orientierungshilfe geben.
Schlussworte
Für Javascript-Fans wie mich ist Cypress eine gute, leistungsstarke Lösung für das Testing von Weboberflächen. Als solide Alternative zu Selenium bietet es zahlreiche Features und kann in Kombination mit Mocha auch für Unit- und Integrationstests verwendet werden. Tester und QA-Engineers, die bislang nicht in Berührung mit Cypress kamen, sollten dem Tool in jedem Fall Beachtung schenken.