Kenniscentrum

Onderhoudbare testautomatisering bij Emesa

Onderhoudbare testautomatisering bij Emesa

Emesa is een Amsterdams ecommerce bedrijf en in Nederland vooral bekend van vakantieveilingen.nl.  Vanuit Emesa kwam de vraag of Improve kon helpen met het opzetten van onderhoudbare testautomatisering. Tijdens de opdracht bleek dat de vraag voornamelijk vanuit hun testers komt. Er waren al een aantal pogingen ondernomen om een aantal geautomatiseerde tests op te zetten, maar helaas waren ze allemaal gefaald.

 Het grootste probleem van de vorige pogingen was het onderhoud en beheer van de testen. Hier is dan ook op gefocusseerd in de nieuwe strategie. Allereerst is er een taal en een framework gekozen dat wordt ondersteund in de organisatie. Zodoende kunnen nieuwe features worden opgepakt en gemaakt door interne ontwikkelaars. Daarnaast is gekeken naar de opzet van de geautomatiseerde testen. Deze zijn aangepast, kleiner en gefocused gemaakt en vooral is voor elke test gekeken wat het doel is. Het nieuwe ontwerp van de testen zorgde ervoor dat de volgende stap kon worden gezet, het bepalen van de tools.

Bij Emesa is uiteindelijk gekozen voor een oplossing die volledig werkt in Javascript. De ontwikkelaars werken namelijk veel in Javascript en ook de testers kunnen er aardig mee overweg. De websites (frontend) draaien volledig op HTML5 + Javascript en het gebruik van Javascript zorgt ervoor dat er slimme functies gemaakt kunnen worden om op verschillende lagen in de website in te haken.

Er draait nu een testframework met als basis NodeJS. De toolset die daarin wordt gebruikt is: CucumberJS, SeleniumJS en het Galen Framework. Allemaal in een klik te installeren op verschillende systemen. Lokaal worden de testen gebouwd in Cucumber features met Javascript step definities. Dat doen zij in de editor WebStorm van JetBrains, maar kan ook in elke willekeurige andere editor die JS ondersteunt.

 Samen met de testers is een eerste set feature files gedefinieerd met daarin een aantal flows die men normaal altijd uitvoert in een soort van smoketest. Deze zijn geïmplementeerd in het framework met behulp van Selenium, maar maken ook gebruik van bijvoorbeeld Javascript en JSON api calls richting de website om bijvoorbeeld snel gebruikers te kunnen registreren. In de basis is het zo mogelijk om testscripts en nette scenario's (Given, When, Then) te maken die alleen testen waarvoor ze zijn ontworpen.

Het Galen Framework wordt gebruikt voor de Responsiveness checks. Hiermee kun je websites openen in verschillende browsers / device simulaties. In Galen kun je schematisch beschrijven hoe een site zou moeten reageren op verschillende functies in browsers en apparaten. Daarmee kunnen we een set opbouwen die controleert of de laatste wijzigingen invloed hebben op responsiveness van de websites.

De opzet draait nu op een aantal virtuele machines, waar de testen kunnen worden gedraaid via Jenkins. En daarnaast op de laptops van een aantal testers en ontwikkelaars.

 Vaak is het maken van geautomatiseerde testen niet direct het issue binnen organisaties. De moeilijkheid ligt erin om geautomatiseerde testen te ontwerpen die inzicht geven. Dat wil zeggen:  testen ontwerpen en automatiseren die alleen falen als hetgeen waarvoor ze ontworpen zijn niet meer werkt. Testen waarvan in een oogopslag duidelijk is wat er mee wordt bedoeld. Door eerst hierop in te gaan is bij Emesa een aanpak neergezet waar men op langere termijn mee verder kan. De keuze van framework en tooling en het inrichten daarvan was de laatste stap. Maar door de opzet zijn de testen universeel en kan elke gekozen tool zonder al te veel effort worden vervangen door een andere.