Trendsz, Tooling

Als testengineer kun je niet om deze tool heen. Relatief nieuw, maar in korte tijd zeer populair geworden. We hebben het hier over testframework Cypress. Een tool die langzaamaan de markt verovert. Binnen Bartosz wordt de groep testengineers die met Cypress werkt steeds groter. Bovendien zien we dat een groot aantal van onze klanten overweegt om de overstap te maken. In dit blogartikel licht ik de voor- en nadelen van Cypress toe, bovendien geef ik een aantal tips die jou op weg helpen wanneer je er zelf mee aan de slag gaat.

Wat is Cypress?

Cypress is sinds oktober 2017 op de markt als publieke beta en sinds september 2018 live. Cypress is een op JavaScript gebaseerd testframework dat focust op het testen van de UI van webapplicaties. De tool draait volledig in de browser en de lijst met ondersteunde browsers wordt steeds groter. Daarnaast biedt Cypress de mogelijkheid om API testen uit te voeren en met verschillende plugins kun je de mogelijkheden van Cypress nog verder uitbreiden. Zo stelt cypress-autostub je in staat om mocks op te nemen. Hierdoor hoef je deze handmatig te schrijven en stubben. Een andere plugin is cypress-plugin-api, welke je API requests en responses in een Postman-achtig scherm toont.

Wat zijn de voordelen van Cypress?

Cypress kan zowel door testers als ontwikkelaars gebruikt worden. Een voordeel van Cypress is dat het JavaScript gebaseerd is. Ook al wordt niet elke front-end in dezelfde taal geschreven is het voor de meeste ontwikkelaars goed leesbaar. Mijn ervaring is dat je als tester hierdoor een stuk gemakkelijker met ontwikkelaars kunt schakelen.

Cypress draait in de browser, in tegenstelling tot bijvoorbeeld Selenium die een browser aanstuurt via een driver. Een belangrijk voordeel hiervan is dat Cypress enorm snel is ten opzichte van andere testframeworks.

Een ander voordeel is dat Cypress over een standaard functionaliteit beschikt: ‘time-travelen’ door je resultaten. Voor iedere teststap die je uitvoert, kun je zien wat er op dat moment stond. Dat maakt het heel eenvoudig om terug te zien waar een test is gefaald. Je analysetijd is hierdoor een stuk korter dan bijvoorbeeld bij het gebruik van de tool Selenium. Dat Cypress de test runs standaard ook opneemt en opslaat in video’s helpt hier ook bij.

Vaak wordt een front-end getest in combinatie met een backend. Cypress heeft de mogelijkheid – omdat het in een browser draait – om de API-calls van en naar de backend te onderscheppen. Deze API-calls zijn vervolgens makkelijk te stubben. Hierdoor heb je heel veel controle over de testen en de staat van deze front-end. Vergeleken met andere tools is dit een sterk punt van Cypress. Een praktijkvoorbeeld hiervan is het testen van een scherm dat openstaande orders toont. Omdat de backend vol met order staat, en je de test omgeving deelt met anderen, is het niet mogelijk om de melding te testen die getoond moet worden als er geen openstaande orders zijn. Door de API-call naar de backend te onderscheppen en de response te stubben kun je toch deze melding testen.

Nog een belangrijk voordeel is dat Cypress een open source tool is en daardoor kosteloos in de aanschaf. Er bestaat ook een betaald dashboard voor Cypress waarbij je gebruik kunt maken van bijvoorbeeld rapportagefunctionaliteiten en het afnemen van metrieken. Uit ervaring weet ik dat deze betaalde functionaliteiten niet nodig zijn. Zeker wanneer je net start heb je deze niet nodig, omdat je veel statistieken ook uit bijvoorbeeld pipelines kunt halen.

"Twijfel je om aan de slag te gaan met Cypress? Dan is mijn belangrijkste tip: gewoon doen! Werken met deze tool heeft vrijwel alleen maar voordelen."

Wat zijn de nadelen van Cypress?

Ik ondervind weinig nadelen, maar als ik er dan toch eentje moet noemen: je hebt als tester kennis van code nodig om met Cypress te kunnen werken. Ondanks dat de testen in vrij leesbare syntax kunnen worden opgesteld, is het zeer nuttig als je dezelfde taal ‘spreekt’ als de ontwikkelaars. Onder andere om te configureren wanneer je net start, maar ook om de overige mogelijkheden van de tool te benutten.

Omdat Cypress net iets anders werkt dan andere testframeworks wordt het afgeraden gebruik te maken van Page Objects. In plaats hiervan worden werkt Cypress met App Actions. Voor mensen die ervaring hebben met Selenium zal dit even wennen zijn, maar daar staat tegenover dat dit hele leesbare test scripts oplevert.

Een ander nadeel is dat Cypress niet alle browsers ondersteunt. Browsers die wel ondersteund worden, zijn: Chrome, Edge, Firefox en Electron. Ondersteuning voor Safari is op dit moment bijvoorbeeld nog in beta.

Onze tips voor nieuwe gebruikers

Twijfel je om aan de slag te gaan met Cypress? Dan is mijn belangrijkste tip: gewoon doen! Werken met deze tool heeft vrijwel alleen maar voordelen. En de twee ‘nadelen’ die ik tot nu toe heb ondervonden, kun je eenvoudig ondervangen:

  • Om gebruik te maken van Cypress is kennis van code/JavaScript een grote pré. Laat je hierdoor echter niet uit het veld slaan. Uit ervaring weet ik dat een ontwikkelaar je maar al te graag helpt en wegwijs maakt. Beschik je (nog) niet over deze kennis? Werk dan samen en durf om hulp te vragen.
  • Cypress ondersteunt standaard niet alle browsers. Wil je een grotere dekking qua browsers of versies van browsers dan kun je gebruik maken van BrowserStack. Dit is een testplatform dat je de mogelijkheid biedt om websites en mobiele applicaties te testen in on-demand browsers, besturingssystemen en echte mobiele apparaten.

Heb jij een vraag over Cypress of kun je binnen jouw organisatie hulp gebruiken bij de inrichting of het gebruik ervan? Aarzel dan niet om contact op te nemen.

 

Wil je ons nieuwste Paarsz magazine per post ontvangen? Laat dan je gegevens achter.

Ontwerp zonder titel (19)

Werken bij Bartosz?

Vincent Verhelst

Geïnteresseerd in Bartosz? Dan ga ik graag met jou in gesprek. We kunnen elkaar ontmoeten met een kop koffie bij ons op kantoor. Of tijdens ontbijt, lunch, borrel of diner op een plek die jou het beste uitkomt. Jij mag het zeggen.

Mijn Paarsz