Testautomatisering met Specflow brengt competenties echt samen

Het is inmiddels algemeen bekend dat binnen agile omgevingen testautomatisering een must is. Voordelen zijn onder andere sneller repeterende testen uitvoeren, constante kwaliteit van testen, et cetera. Het nadeel van veel testautomatiseringstools is echter dat deze vaak technisch van aard zijn, waardoor de business meestal geen feeling heeft met wat er getest wordt en welke risico’s afgedekt worden. Om de business meer te betrekken, kan de testtool SpecFlow worden ingezet. Hiermee kan de business zelf acceptatietesten opstellen.

Zo is ook bij energieleverancier ENGIE SpecFlow ingezet om de regressie testset te automatiseren. Voordat ik in ga op de inzet van SpecFlow bij ENGIE, wordt eerst kort toegelicht wat SpecFlow is. Hierbij wordt gebruik gemaakt van een testvoorbeeld van Schoolkassa, een product van CloseSure.

Specflow in het kort

Specflow is de .Net variant van Cucumber.
Eerstgenoemde is een framework dat te testen scenario’s beschrijft op een manier die de business kan begrijpen. Om dit te bereiken wordt gebruikt gemaakt van de Gherkin syntax.

Het scenario wordt beschreven in een feature file.
Een voorbeeld:


Klik op de afbeelding voor een grotere weergave

De gebruikte syntax is Given, When, Then, And.
Given geeft de uitgangssituatie weer. Bijvoorbeeld: de website is actief en je bent ingelogd.
When is de uit te voeren actie(s).
Then is het verwachte resultaat. In de Then stappen controleer je of de werkelijke uitkomst overeenkomt met het verwachte resultaat.
Met And kunnen meerdere acties achter elkaar gekoppeld worden.
De tabel onder Examples geeft de verschillende waardes weer die ingevuld worden tijdens de testuitvoer. Het scenario in dit voorbeeld wordt twee keer uitgevoerd met verschillende data. De verschillende stappen zijn zodanig beschreven dat de business deze ook begrijpt en zelfs kan bijdragen aan het opstellen van de testscenario’s.

Om de feature files daadwerkelijk uit te kunnen voeren, moet er een stukje code geschreven worden. Dit wordt gedaan in de zogenaamde stepdefinition.


Klik op de afbeelding voor een grotere weergave


Klik op de afbeelding voor een grotere weergave

De eerste regel; [Then(@”zijn de gegevens naam student ‘(.*)’ ‘(.*)’ ‘(.*)’ met woonplaats ‘(.*)’ klas ‘(.*)’ en email ‘(.*)'”)], is de verbinding tussen de feature file en de code.
Daarna volgen de methodes om de daadwerkelijke acties uit te voeren. Hierbij kan het Selenium Framework gebruikt worden om browsertesten uit te voeren. Uitgebreidere informatie over Specflow kan gevonden worden op de website van Specflow.

Hoe wordt Specflow ingezet binnen ENGIE?

Vanuit de business zijn alle mogelijke scenario’s opgesteld die door de software ondersteund worden. Op basis van risico’s is een MoSCoW prioritering opgesteld. Op basis van deze prioritering zijn de scenario’s geautomatiseerd.

Samen met de business zijn de feature files beschreven en gevalideerd, tegelijkertijd worden de stepdefinition bestanden uitgewerkt. Omdat ik een functionele tester ben met een basiskennis van programmeren is hulp nodig van de ontwikkelaars om de stepdefinition te programmeren. Vanuit het team is dan ook besloten om de taken voor de stepdefinition onder te brengen bij de ontwikkelaars en de feature file bij de tester samen met de business. Dit heeft tot gevolg dat de ontwikkelaars in de applicatiecode al rekening houden met testautomatisering. Een voorbeeld: in de userinterface (GUI) ontbraken bij veel web elementen de ID’s. Om het selecteren van de web elementen in de testautomatisering makkelijker te maken, is de applicatiecode voor deze web elementen uitgebreid met ID’s.

De regressietest bevat momenteel bijna 80% van de te testen functionaliteit wat ongeveer 95% van de testtijd is. De testautomatisering draait elke nacht automatisch na elke build, zodat ’s ochtends bij binnenkomst direct inzichtelijk is wat de kwaliteit van de software is. De statistieken van elke run worden bijgehouden zodat eventuele trends zichtbaar worden.

Als bestaande functionaliteit wijzigt of nieuwe functionaliteit wordt toegevoegd, wat direct impact heeft op de testautomatisering, dan worden de taken voor het ontwikkelen van deze functionaliteit opgepakt. Zolang het ontwikkelen niet afgerond is, zullen de geautomatiseerde testen op die functionaliteit falen totdat de functionaliteit opgeleverd is. Op deze manier wordt een vorm van test driven development toegepast wat ook ten goede komt aan de kwaliteit van de opgeleverde software.

Wat zijn de opvallendste resultaten?

Na het invoeren van Specflow zijn een aantal opvallende resultaten bereikt. Dit zijn in willekeurige volgorde:

  1. Codekwaliteit
    Doordat de ontwikkelaars in de code rekening houden met testautomatisering, is de applicatiecode verbeterd en meer toegesneden op testautomatisering.
  2. Inbedding in het proces
    Door testautomatisering als taak in een user story op te nemen, wordt het vanzelfsprekend om testautomatisering bij te werken indien functionaliteit gewijzigd of toegevoegd wordt.
  3. Dagelijks inzicht in kwaliteit
    Door het dagelijks uitvoeren van de testen wordt sneller inzichtelijk gemaakt of er regressie optreedt en zo ja, dan kan dit tijdig opgelost worden.
  4. Meer samenwerking
    Specflow leidt er niet alleen toe dat de tester in samenspraak met de business de scenario’s opstelt, maar ook dat de ontwikkelaars actief betrokken zijn bij de testautomatisering. Hierdoor wordt testen en kwaliteit echt iets gezamenlijks van het ontwikkelteam en de business.

Op deze manier brengt Specflow niet alleen competenties samen, maar leidt bovendien tot een kwaliteitsimpuls.

Wil je meer weten over testen en testautomatisering in een agile omgeving? Neem dan contact met ons op via info@closesure.nl

Patrick Verheij
Test Consultant

 

 

 

SOCIAL MEDIA

NEEM CONTACT MET ONS OP

CloseSure Noord BV
de Vos van Steenwijklaan 75
7902 NP Hoogeveen
+31 (0)88 383 01 20

CloseSure Utrecht BV
Landjuweel 11 B
3905 PE  Veenendaal
+31 (0)88 383 01 10

CloseSure West BV
Europalaan 16
2408 BG  Alphen a/d Rijn 
+31 (0)88 383 01 50

CloseSure Oost BV
Hazenweg 70
7556 BM  Hengelo
+31 (0)88 383 01 00

CloseSure Zuid BV
Noord Brabantlaan 265
5652 LD  Eindhoven
+31 (0)88 383 01 40

(c) Copyright 2017-2018 CloseSure Groep B.V.

SHARE THIS!