Auteur: John Kronenberg ● john.kronenberg@closesure.nl
Redactie: Henk Johan Kwakkel en Paul Beving
Het is nu pakweg twee jaar geleden dat ik bij mijn huidige
opdrachtgever naar een ander programma-onderdeel ben overgestapt. Dit andere programma gebruikt de keyword driven tool Robot Framework voor de testautomatisering en om mij al niet vanaf dag een buitenspel te zetten heb ik de in het verleden gemaakte keuze voor deze tool als een ‘given’
beschouwd. In eerste aanleg maakt het voor een testautomatiseerder natuurlijk ook niet uit met welke tool hij/zij de testscenario’s automatiseert, zolang de
testautomatiseerder maar met de tool ‘het kunstwerk dat hij in zijn hoofd
heeft’ kan implementeren.
Ik had uit het ‘veld’ al meegekregen dat Robot Framework erg
populair aan het worden was en dat een unique selling point van Robot Framework
is dat ook collega’s met weinig testautomatiseringservaring de tool snel onder
de knie kunnen krijgen. Waarschijnlijk daarom was ik niet heel erg enthousiast.
Ik vroeg me serieus af of ik met een low-code testautomatiseringstool, waar
Robot Framework ook onder valt, wel alle uitdagingen van testautomatisering waar ik
voor zou komen te staan, kon tackelen.
Robot Framework is een prima tool voor testautomatisering
Laat ik dan maar direct met mijn conclusie in huis vallen, Robot Framework is een prima testautomatiseringstool, waarmee testautomatiseerders goed in staat moeten zijn om een hoogstaand testautomation framework neer te zetten. In dit artikel zet ik de redenen uiteen waardoor ik die mening ben toegedaan. Het wordt geen technisch betoog, maar een hoog-over artikel.
Er is heel veel goede informatie over Robot Framework beschikbaar
Zowel op de Robot Framework website als op andere Robot Framework gerelateerde sites (denk aan Robocorp en TutorialsPoint) wordt veel goede informatie over Robot Framework gedeeld. Met die informatie kun je snel met Robot Framework aan de slag en, ook als beginnende testautomatiseerder, kun je er de tool snel mee onder de knie krijgen.
Er zijn heel veel library’s voor Robot Framework beschikbaar
Library’s maken tools als Robot Framework low-code. Je hoeft geen python scripts te schrijven om bijvoorbeeld een veld op een website in te vullen. Het op de juiste wijze en met de juiste parameters aanroepen van een uitgewerkt keyword uit een library (in dit geval SeleniumLibrary) is voldoende.
Binnen mijn opdracht zijn voor bijna alle uitdagingen waar we voor gesteld worden geschikte library’s beschikbaar. Een aantal library’s worden al standaard met Robot Framework meegeleverd (bijvoorbeeld String Library, OperatingSystem Library), andere library’s worden door de open source community gebouwd en onderhouden. Mijn ervaring is dat deze library’s goed gedocumenteerd worden, zodat je snel de juiste informatie hebt hoe de keywords aan te roepen.
Met deze library’s zijn wij in staat onze eigen functielibrary’s, de bouwstenen van onze testsets, snel op te bouwen. Te denken valt aan functies voor:
-
- Het in een queue zetten van een XML bericht;
-
- Het testen van een webservice (Rest API, Soap);
-
- Het leeggooien, opvoeren, wijzigen en controleren van data in (DB2) Database tabellen;
-
- Het mocken van webservices.
Je kunt tagging gebruiken om specifieke testscenario’s te runnen
Al onze testen zijn onder Jenkins gebracht. Een aantal testen (de zogeheten jobs in Jenkins) draaien dagelijks in een schedule en andere testen worden getriggered door een pipelinescript dat op zijn beurt door een deploy is getriggered. Met behulp van het meegeven van tags aan testgevallen zijn wij in staat om specifieke testgevallen uit een set te laten selecteren bij het uitvoeren van een test. Tagging kan handig zijn om bijvoorbeeld alleen smoke testgevallen uit te voeren.
De rapportages geven veel informatie
Na het uitvoeren van een Robot Framework test wordt er een log.html file gegenereerd met het resultaat van alle aangeroepen stappen. Je kunt visueel in de log snel zien welke stappen goed zijn gegaan (groen) en welke stappen gefaald zijn (rood). Ervan uitgaande dat je de loglevel op ‘info’ hebt gezet, zie je ook extra informatie. Bijvoorbeeld met welke waarde een variabele gevuld is. Handig om extra logregels toe te voegen in de debugfase van je scripts. Mijn ervaring is wel dat de log bij een wat uitgebreid testgeval al snel overweldigend overkomt en het lastig is om de logregels waarin je geïnteresseerd bent te lokaliseren.
Je kunt je eigen Python scripts toevoegen en gebruiken
We hebben het gehad over de Robot Framework Library’s, die geschreven zijn in Python. Niet alle functionaliteit die je nodig hebt zijn (al) in de library’s beschikbaar. Niet getreurd, je kunt ook prima je eigen Python-functies toevoegen aan je testautomatiseringsframework. Bijvoorbeeld hebben wij functionaliteit nodig waarmee we met datum vandaag kunnen rekenen, rekening houdend met weekend en feestdagen. Je kunt bijvoorbeeld denken aan ‘DatumVandaag plus vijf werkdagen’. Nu blijkt er al een Python-package te zijn, met pip te installeren, die ‘Holidays’ heet. Op basis van die package konden we snel het rekenen met werkdagen scripten.
Robot Framework is geschikt om BDD te implementeren
Omdat wij voor de business leesbare testscenario’s willen schrijven en ik persoonlijk een (extra) abstractie-laag erg kan waarderen, hebben we besloten onze scenario’s volgens BDD (gherkin syntax) uit te werken. In Robot Framework kun je out-of-the-box je testen in twee stijlen uitwerken, de Data Driven stijl en de BDD stijl. Wij hebben voor de BDD stijl gekozen en dat werkt voor ons prima.
Controleren op code kwaliteit mogelijk
Met behulp van Robocop kunnen we onze functielibrary’s controleren op code kwaliteit. Niet alle opmerkingen die Robocop genereert, volgen we op. Maar deze tool is voor ons een hele goede hulp om programma-breed betere code (‘Clean Code’) te schrijven.
Nederlandse vertaling van layout van de Robot Framework scriptfiles beschikbaar
Robot Framework kent ook door de open-source community aangemaakte taaluitbreidingen, zodat wij bijvoorbeeld onze BDD scenario’s in plaats van in het Engels in het Nederlands kunnen uitwerken (Gegeven, Als, Dan).
Robot Framework heeft integratie met mock-server
We hebben ervoor gekozen om voor mocking mock-server te gebruiken. En dit niet in de laatste plaats omdat deze mock-server ondersteund wordt door een Robot Framework Library. Het starten, configureren en gebruiken van de MockServer is daarmee ‘easy-peasy’.
We kunnen onze eigen Library Documentatie genereren
Met libdoc.py, meegeleverd in de Robot Framework package, kunnen we van onze functie-library’s documentatie genereren. Deze documentatie, in html formaat, heeft dezelfde layout als de documentatie die beschikbaar is voor de standaard en community Robot Framework library’s. Kennisuitwisseling tussen de testautomatiseerders over de beschikbare functies is hiermee ook geborgd.
Mooie opsomming van de gemaakte praktische keuzes.
Wat ik een klein beetje mis zijn de uitdagingen/beperkingen die nog spelen of zijn die er niet?