Advies

Automatisch testen kan nog intelligenter

[object Object]
Marnix van Bochove
June 19, 2019

Test-frameworks

Is dat end-to-end-proces niet te automatiseren? Jazeker, en er zijn frameworks die je daarbij kunnen helpen. Denk aan Protractor in combinatie met Jasmine voor een applicatie met een AngularJS front-end. Ook het uitschrijven van test-scenario’s kan een tijdrovende klus worden. Een veelvoud aan schermen en entiteiten maken dit een eentonig proces en bovendien is het lastig om bij refactoring de code consistent te houden. Bij MetaFactory gaan we daarom een stapje verder en automatiseren we de generatie van de tests met behulp van patterns en onze eigen MetaFactory tool.

Test-scenario’s

Bij end-to-end-tests gaat het om het simuleren van gebruikersinteractie, op basis waarvan vervolgens een bepaalde feedback van de server en weergave in de user-interface verwacht wordt. We schrijven hiervoor met behulp van Protractor/Jasmine verschillende scenario’s die een gebruiker kan bewandelen. Aangezien dat voor iedere entiteit opnieuw moet kan MetaFactory hier veel repetitief werk besparen. Een veelvoorkomend voorbeeld van een generiek pad wat de gebruiker kan volgen is het volgende:

  1. Succesvol inloggen
  2. Weergeven van een opgeslagen lijst met entiteiten
  3. Het kunnen toevoegen van een entiteit
  4. Deze vervolgens terugzien in een overzicht met opgeslagen data en
  5. Deze tot slot via dit overzichtsscherm verwijderen.

Automatisch genereren van test-scenario’s

We hebben hier entiteiten met verschillende data-types. De informatie die je verwacht op het scherm, alsmede de informatie die moet worden ingevoerd in de ‘create/edit’-dialogen verschilt dus ook. De patterns die we binnen MetaFactory gebruiken voor de te genereren tests moeten dus in ieder geval kijken naar de datatypen van de entiteit en in staat zijn zowel de invoer als het verwachte eindresultaat hierop af te stemmen. Dit kan door in de gebruikte Freemarker templates via if-else-constructies afhandeling te creëren voor alle typen die voorkomen in het model. Heb je vóór het schrijven van deze tests ook de applicatie zelf al gebouwd met de MetaFactory tool, dan zal dit je bekend voorkomen en kun je de logica voor de opbouw van je dialoogschermen hiervoor hergebruiken.

Gebruik van meta-data

Er zijn meer factoren van belang dan het type van de velden binnen de entiteiten. Deze factoren kunnen in het datamodel als metadata meegegeven worden aan een entiteit of aan afzonderlijke velden. Je kunt vanuit je patterns deze meta-data opvragen en daarmee specifiek gedrag in je uiteindelijke code afdwingen. Misschien wil je bepaalde velden niet meenemen in je test omdat het berekende velden zijn of is er een speciale invoer/afhandeling nodig voor één op veel relaties.

Omdat de meta-data vrij definieerbaar is kun je de Freemarker template voor je code zo intelligent maken als nodig. Je hoeft zo maar 1 keer code te schrijven, waarna vervolgens voor een onbeperkt aantal entiteiten de bijhorende testscenario’s worden gegenereerd. Dit is dus letterlijk automatisering van het automatisch testen.

Maak het efficiënter en leuker

Voor wie een hekel heeft aan repetitief werk was het met Protractor al een verademing om te zien hoe de regressietests over het scherm flitsen. Met het gebruik van MetaFactory patterns en metadata ga je nog een stap verder en wordt ook het schrijven van de testscenario’s een heel stuk leuker en efficiënter.

Contact
Meer informatie over MetaFactory, onze projecten en cases? Gebruik dan dit contactformulier, bel 020 – 78 70 393 of mail naar info@metafactory.nl Marnix van Bochove is bereikbaar per mail en via het algemene telefoonnummer 020 – 78 70 393.

Ook interessant

Advies
Achtergrond en kader van onze organisatie
Advies
Succes begint met een goed idee. Een uitvoerbaar idee noemen we een strategie!