TestAutomatisering & PerformanceTesten

Test Automation Framework BDD

De afgelopen tijd heb ik in een opdracht collega’s mogen adviseren over de positieve impact van het Test Automation Framework BDD rondom het thema Agile. In een vorige blog ‘Transformation’ is te lezen wat BDD voor mij betekent en hoe BDD voor synergie zorgt tussen verschillende disciplines binnen Agile-teams met als doel het leveren van kwalitatief hoogwaardig software aan de eindgebruiker.

Toch zie ik dat er binnen Agile projecten nog steeds veel onnodige (saaie) “manuele testen” worden uitgevoerd. Waarom? Mijn advies is om het anders aan te pakken! Los van het feit dat manueel testen tijdrovend en arbeidsintensief is, zorgt het ook voor vertraging van test feedback door sommige complexe onderdelen. Deze vertraging is nou precies wat je als team en organisatie niet wilt hebben. Het team is onnodig druk en daardoor vaak in stress, zeker als op het laatste moment van de sprint nog bugs gefixed en hertest moet worden. Daarnaast kost dit verschijnsel ook simpelweg onnodig veel geld. Testautomatisering is het middel dat op lange termijn zowel de Business als het Development Team hierbij kan helpen. Een win-win situatie!

Wat is de toegevoegde waarde van testautomatisering voor mij?

Binnen Agile projecten is het ontzettend belangrijk dat testautomatisering een integraal onderdeel van het Agile project is. Met name wanneer je vertraging van test feedback en tijd- en geldverspilling wilt voorkomen. Daarnaast is het primaire doel van testers/testautomatisering om de kwaliteit van het product te bevorderen (Agile/BDD mindset). Om dit te kunnen bereiken hebben we tijd nodig om de structuur en intelligentie van testen op een betrouwbare manier in te richten. Echter, het is wel belangrijk om dit met de nodige snelheid en focus te realiseren. Zeker als er sprake is van een twee wekelijkse release naar productie. Er is gewoon weinig tot geen tijd en energie om elke iteratie manueel te testen. En zelfs, mochten we die tijd wel hebben, wij testers blijven mensen en mensen maken fouten. Laten we daarom slim zijn en in ieder geval het vele repetitieve werk overdragen aan machines. Hierbij zijn de drie centrale kwaliteitsattributen leesbaarheid, herbruikbaarheid en onderhoudbaarheid de sleutel. Graag sta ik hierna even stil bij hoe ik dit zou aanpakken.

Selecteer een framework wat het beste binnen het Agile project past: SpecFlow, Cucumber, Behat, JBehave etc.
Na installatie van de betreffende framework kunnen we al meteen starten met het schrijven van de Feature Files, welk bestaan uit scenario’s en steps. Met behulp van Step Definitions leggen we de connectie tussen de Feature File en Applicatie Interface. Door een extra laag tussen de Step Definitions en de Applicatie te plaatsen, kunnen we de applicatie elementen op één plek onderhouden en beheren. Het is nu een teamverantwoordelijkheid om het Test Automation Framework BDD correct te implementeren!

Een feature file is een plain text format die een stuk functionaliteit beschrijft in de taal van de Business, ook wel Domain Specific Language (DSL) genoemd. Het doel van een feature file is enerzijds het creëren van een levende documentatie die ook voor de Business begrijpelijk is en anderzijds het automatiseren van je acceptatie criteria die in de user story staan beschreven. Op basis van je acceptatie criteria worden de testscenario’s in de feature file door middel van “Given-When-Then” steps geautomatiseerd.Feature Files

Hoe ziet de relatie tussen user story en testscenario binnen BDD eruit?

De feature file nodigt in dit geval de Business uit voor communicatie. Tip: wees er wel van bewust dat de scenario’s in plaats van imperatief juist declaratief geprogrammeerd moeten worden. Het verschil tussen deze twee is dat je bij imperatief programmeren door middel van acties de programmatuur de opdracht geeft wat er moet gebeuren, terwijl je bij declaratief programmeren juist aangeeft wat het resultaat moet zijn. Door declaratief te programmeren kom je snel tot de kern van de zaak. Daarnaast zijn je testscenario’s veel meer overzichtelijker, leesbaarder en herbruikbaar.

Step Definitions

Step Definitions is een methode die gedefinieerd is in een willekeurige programmeertaal. De teststeps vanuit de feature file worden direct gemapt in je Step Definitions (Glue Code). Dit vormt dan een connectie tussen je feature file en applicatie interface. Step Definitions kunnen resulteren tot de volgende statussen: Succesvol, in afwachting, onbepaald of gefaald. Status in afwachting, onbepaald of gefaald houdt in dat je als tester nog werkt te doen hebt. Wel is het een mooie reminder vanuit het framework om de test volledig te maken. Vanuit de applicatie zoeken we elementen op en voeren we waarden in om de feature file succesvol te maken. Waar men wel voor moet waken is dat testscenario’s op lange termijn groeien. Wanneer je hetzelfde element op meerdere plekken in de code gaat gebruiken, dan kan dat heel zwaar worden. Zodra dat element om welk redenen dan ook in het Agile project wijzigt, dan moet je als tester veel mini changes in je code uitvoeren om de testscenario’s werkend te krijgen. Dit is tijdrovend en leidt tot meer foutgevoeligheid! Mijn advies is om Page Object Models (POM) in het Agile project te gebruiken. Ik weet zeker dat dit tot een veel betere aanpak leidt.

Page Object Models

Een Page Object Model (POM) is een separate file class waarin de elementen van de applicatie te vinden zijn en waar deze gevalideerd kunnen worden. Alle gebruikers-interacties worden op één pagina gedefinieerd. Zodra een wijziging plaatsvindt in het Agile project, dan kan de wijziging op één plek in de code doorgevoerd worden in plaats van op meerdere plekken. Page Object Models stimuleert leesbaarheid, herbruikbaarheid en onderhoudbaarheid van je Glue Code met als doel het verminderen van het optreden van onzekere gebeurtenissen. Dit is waar het om programmeren en testen om draait. Toch?

Mocht je vragen hebben of iets anders willen opmerken? Graag, dat kan hieronder. Ik hoop dat je het interessant vond.

Mehmet

Dit bericht is geplaatst in Testautomatisering en getagd in Agile BDD Feature File Page Object Model Step Definition

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Nieuws

Blijf op de hoogte

APACHE MPM (op *nix servers)

07/11/2017

Benieuwd naar de impact van het wijzigen van Apache MPM Prefork naar Worker? Lees dan door! Bij één van onze klanten heb ik dit onderzocht. Omdat dit ook interessant kan zijn voor anderen, deel ik mijn resultaten en ervaringen graag. Het is misschien wat technisch allemaal, maar voor performancetesters, de doelgroep, is het vast goed […]

Performancetesten en CI/CD, gaat dat samen?

13/10/2017

De afgelopen najaarseditie van Testnet stond onder het thema Continuous Everything vooral stil bij CI/CD en natuurlijk testen. Gezien DevOps en CI/CD ook grote invloed hebben op het vakgebied performance (testen), zijn wij blij dat we vanuit PerformanceArchitecten een bijdrage mochten leveren door middel van het delen van onze visie hierop. Onze collega René Meijboom […]

Een eerste indruk van Gauge

08/09/2017

Tijdens één van onze kennismiddagen hebben we gekeken naar het testtool Gauge. Doel van de sessie was om een beeld te krijgen wat de toegevoegde waarde van Gauge is voor een tester. Benieuwd naar onze ervaringen? Lees dan snel verder! Gauge is een open source project, gesponsord door ThoughtWorks en belooft in het kort het […]

Test Automation Framework BDD

16/06/2017

De afgelopen tijd heb ik in een opdracht collega’s mogen adviseren over de positieve impact van het Test Automation Framework BDD rondom het thema Agile. In een vorige blog ‘Transformation’ is te lezen wat BDD voor mij betekent en hoe BDD voor synergie zorgt tussen verschillende disciplines binnen Agile-teams met als doel het leveren van kwalitatief hoogwaardig […]

Creëer meer eenheid in je SpecFlow steps met Step Argument Transformations

11/04/2017

Laatst kreeg ik de vraag, “Hoe maak je in je testdata onderscheid tussen een regular expression en een gewone tekst”. Oftewel: Hoe beheer je verschillende soorten steps als ze alleen verschillen in de manier waarop data vergeleken wordt. Je hebt een veld en je wilt controleren of er een bepaalde waarde in staat, maar soms […]

SSL/TLS versie en cipher in HP LoadRunner

29/03/2017

In deze blog wil ik even stilstaan bij de resultaten van een performance test die niet overeenkwamen met de verwachtingen die wij als team hadden. Een aantal transacties gingen in responstijd omhoog en het CPU gebruik nam flink toe. Omdat het ons veel tijd heeft gekost, deel ik dit graag met jullie zodat wij performance […]

Regular Expressions en Testautomatisering, twee problemen of juist een oplossing?

25/03/2017

Bij geautomatiseerde checks wil je regelmatig een verwachte waarde controleren tegen een actuele waarde. Vroeg of laat kom je dan in aanraking met wildcards: Je wilt bijvoorbeeld weten of de tekst “Er zijn 42 resultaten gevonden” voorkomt, maar het aantal, hier 42, kan variabel zijn. Van 42 wil je dan een wildcard maken. De meest […]

Automated Approval Testing with Dynamic Data Sets

21/02/2017

For some tests, you’ll need to check if files or documents are the same as they were before, or that they comply with a certain format. When something differs, you need to “reject” or “approve“ them, or even make them the new baseline if you are welcoming the changes. We call this Approval Testing. For more […]

Transformation

20/01/2017

Inmiddels hebben veel organisaties de overstap gemaakt van de traditionele waterval methode naar een iteratieve ontwikkelmethode als Agile/Scrum. Een aantal organisaties zijn in hun werkwijze een stap verder gegaan en hebben DevOps geïntroduceerd. Waar de methodiek Agile vooral focust op het tevredenstellen van de klant, richt DevOps zich daarnaast op het dichten van de kloof […]

Cucumber, Selenium en het gebruik van het Page Object Pattern

14/12/2016

Als je Selenium gebruikt om je testen aan te sturen, kan je gebruik maken van het Page Object Pattern om een laag van abstractie aan te maken: Het maakt een model van je pagina zodat het makkelijker is om acties op die pagina uit te voeren. Dit heeft grote voordelen: Zodra er een wijziging op de […]

SpecFlow Extensies voor Dummies

21/11/2016

TechTalk heeft voor SpecFlow natuurlijk al een handige set aan extensies uitgebracht die vooral het gebruik van eigen datatypes in combinatie met SpecFlow steps mogelijk maken. Dit is slimme, maar vrij geavanceerde set waarbij je best wel wat ervaring moet hebben met zowel het gebruik van SpecFlow als C#. De beginnende gebruiker zal eerder behoefte […]

SpecFlow Extensies voor Dummies, de code

21/11/2016

Hieronder vind je de code die behoort bij het artikel SpecFlow Extensies voor Dummies  Feature File: Feature: Table Transformations In order to have convenient datatypes As a SpecFlow user I want to transform tables into dictionaries or datatables Scenario: Transform a vertical table into a dictionary Given I have the following table: | Movie | […]