Cucumber

Wat is Cucumber?

Laten we beginnen met wat Cucumber niet is:  Cucumber is geen testtool! Op de site van Cucumber wordt het als volgt beschreven:

Cucumber is a tool that supports Behaviour-Driven-Development. BDD is about discovery, collaboration and examples (and not testing).

Cucumber is dus een tool om behaviour-driven development te doen. Het biedt een taal waarin je met “Gherkin” scenario’s kan beschrijven via de welbekende “given, when, then” stijl.

Toch wordt Cucumber vaak gebruikt als testtool. Heb je immers de specificaties (voorbeelden of scenario's) uitgewerkt, dan kan je met Cucumber valideren dat de software doet wat die specificaties zeggen. Uit ervaring kunnen we zeggen dat dit enkel goed werkt als je dit als prettige bijkomstigheid ziet, maar Cucumber in principe inzet om BDD mogelijk te maken.

Waarom kiezen we voor Cucumber?

Met Cucumber kunnen leesbare specificatie opgezet worden. In theorie betekent dit dat de PO of gebruiker de testen kan definiëren, en er dus gewerkt kan worden met een BDD aanpak. (Vaak zien we in de praktijk echter vaak dat de PO of gebruiker daar moeite mee heeft en uiteindelijk alleen de testen reviewed).

Na het opleveren van de functionaliteiten gebruiken we Cucumber om te valideren dat de software volgens de specificaties werkt. Voor ons zijn dan ook de voordelen van Cucumber:

  • Vergroten betrokkenheid PO, gebruiker en acceptatie tester
  • Pairen tussen tester en ontwikkelaar, met name bij het schrijven van de testcode (fixtures)
  • Testen kunnen uitvoeren vanuit IDE en in CI/CD

Het toepassen van Cucumber heeft ook een nadeel ten opzichte van andere tools zoals Kotlintest. Met Cucumber worden de specificatie geschreven in een tekst file. Er moet daarnaast testcode (fixtures) geschreven worden die de specificaties kan uitvoeren in het framework dat je gebruikt om de daadwerkelijke aansturing van je applicatie te doen. Dit zorgt voor een extra code laag tussen de specificaties en het testobject, en dus voor extra complexiteit. Complexiteit die groter wordt naarmate je meer abstractie toepast in het schrijven van de testcode. Soms is het beter om niet te veel abstractie (bijvoorbeeld voorkomen van duplicate code) toe te passen maar juist te kiezen voor duidelijk leesbare testcode.

Wij helpen jou graag verder ! 
Neem contact op met onze Cucumber toppers