Iedereen op het gebied van testautomatisering is bekend met Robot Framework en Selenium. Dit zijn de twee toonaangevende automatiseringsframeworks die ontwikkelaars en testers gebruiken om testsuites te bouwen die het testen van een andere applicatie automatiseren.
Wat zijn dus de toekomstige toepassingen van deze frameworks en hoe zullen ze de ontwikkeling van technologie en webapplicaties vormgeven? In dit artikel bespreek ik de overeenkomsten en verschillen tussen Robot Framework en Selenium, trefwoordautomatisering en andere inzichten van experts.
De overeenkomsten tussen Robot Framework en Selenium
Beide frameworks zijn bewezen technologieën: Selenium bestaat al meer dan twee decennia en Robot Framework nadert de twintig jaar.
Beide zijn opensource en hebben gebruikersgroepen van honderdduizenden (zo niet miljoenen) gebruikers. Geen van beide is echter een tool in de striktste betekenis van het woord; het zijn frameworks die je gebruikt om de tool voor jouw specifieke testdoel te bouwen.
Robot Framework en Selenium worden veel gebruikt voor het testen van webapplicaties. Selenium is hier zelfs specifiek voor ontwikkeld, terwijl Robot Framework is ontworpen om vrijwel alles te automatiseren. Het is bekend dat Robot Framework zelfs wordt gebruikt voor het testen van tijdkritische signaleringssystemen.
Beide frameworks zijn toegankelijk vanuit verschillende programmeertalen: Selenium heeft van oudsher een sterke associatie met Java en C++, terwijl Robot Framework voornamelijk wordt geassocieerd met Python.
De verschillen tussen Robot Framework en Selenium
Een testautomatiseringsframework bevindt zich tussen de tester en de applicatie die wordt getest. Het biedt een scriptinterface (“bovenste testinterface”) voor het beschrijven van de tests aan het framework en een driverinterface (“onderste testinterface”) om de applicatie die wordt getest aan te sturen, waarbij de acties van de gebruiker worden gesimuleerd. De belangrijkste taak van het framework is daarom om de opdrachten van het testscript in de bovenste interface te vertalen naar de punten, klikken en toetsaanslagen in de onderste interface.
Selenium stelde aanvankelijk de standaard vast voor de onderste interface bij het testen van webapplicaties: een consistent model voor het adresseren van elementen op webpagina's met behulp van een locatorindeling die bekendstaat als XPath. De bovenste interface van Selenium is slechts een dunne programmeerbibliotheek om met de XPaths te werken, waarvoor sterke programmeervaardigheden nodig zijn. Bovendien weten alle Selenium-gebruikers dat XPaths de neiging hebben te veranderen en dat tests voortdurend, tijdrovend en kostbaar onderhoud vereisen.
Robot Framework ontstond uit frustratie over omslachtige automatiseringstools, waaronder Selenium. Het ontwerpdoel was om een generiek automatiseringsframework te bouwen dat kan worden uitgebreid met aangepaste bibliotheken die verschillende testinterfaces implementeren. Het concept werd geïnspireerd door trefwoordgebaseerde automatisering, waarvoor Hans Buwalda en gedragsgestuurde ontwikkeling (BDD) pioniers waren.
Wat is trefwoordgebaseerde automatisering in Robot Framework?
Trefwoordgebaseerde automatisering is het programmeren van opdrachten op hoog niveau, zoals Login, EnterLead, CreateContact enzovoort, die de typische acties van een tester of echte gebruiker uitvoeren. De trefwoorden verbergen de ingewikkelde details van XPaths en andere technische aspecten. De testontwerpers gebruiken de trefwoorden vervolgens om de daadwerkelijke tests te definiëren. Als er iets verandert in de implementatie van de onderliggende applicatie, hoeft alleen de definitie van de trefwoorden te worden aangepast en werken alle tests die het trefwoord gebruiken weer.
Aandachtspunten bij trefwoordgebaseerde automatisering
Trefwoordgebaseerde automatisering heeft wel een kanttekening. Er moet veel aandacht worden besteed aan het definiëren van de trefwoordenschat om een wildgroei aan trefwoorden te voorkomen. Als je BDD toepast, is een wildgroei aan trefwoorden vrijwel gegarandeerd. Als de trefwoordenschat applicatiespecifiek is, betekent het gebruik van Robot Framework voor het ontwerpen van tests voor de ene applicatie niet dat je vaardig bent in het ontwerpen van tests voor een andere.
En net als bij Selenium dreigen de ontwikkelaars die deze trefwoordimplementaties onderhouden knelpunten in het proces te worden. De veranderlijke XPaths die onderhoud vereisen, zijn er mogelijk veel minder dan bij Selenium, maar ze bestaan nog steeds.
Voordelen van trefwoordgebaseerde automatisering en uitgebreide bibliotheken
De uitbreidbaarheid van Robot Framework heeft de community in staat gesteld talloze nuttige trefwoordbibliotheken te creëren. Zo zijn er ten minste drie unieke bibliotheken voor webautomatisering: SeleniumLibrary, QWeb en BrowserLibrary. De Robot Framework SeleniumLibrary is gebouwd op Selenium, maar op een hoger abstractieniveau dan Selenium zelf. De community biedt een groot aantal bibliotheken voor verschillende andere doeleinden, zoals API-testen of het genereren van testgegevens.
Als je een professionele programmeur bent, kun je elke webautomatiseringstaak met Selenium uitvoeren, maar je moet de taak volledig zelf voltooien. Robot Framework biedt hetzelfde niveau van flexibiliteit, maar met een groot aantal nuttige bibliotheken die je productiever kunnen maken.
Het goed doordachte model voor uitbreidbaarheid is een van de aanzienlijke sterke punten van Robot Framework. Je kunt bijvoorbeeld nieuwe trefwoordbibliotheken maken door ze te programmeren in Python of een andere taal naar keuze, of je kunt eenvoudig bestaande trefwoorden na elkaar uitvoeren, zelfs met basisstructuren voor besturing, om nieuwe trefwoorden te creëren.
Een opmerking over programmeren zonder code
Als je geen professionele programmeur bent, ben je hulpeloos met Selenium en, eerlijk gezegd, vrijwel hulpeloos met Robot Framework. Je kunt niet veel begrijpen van een Selenium-script, maar als je een Robot Framework-testscript ziet, kun je waarschijnlijk, maar niet altijd, de logica ervan volgen en begrijpen wat het hoort te doen. Als je goede voorbeelden hebt om te kopiëren en te verbeteren, zul je zelfs in staat zijn om zelf Robot Framework-scripts te maken.
Veel testleiders schatten dat werken met Robot Framework productiever is dan werken met Selenium, dankzij het hogere abstractieniveau en de kant-en-klare bibliotheken die zowel de kosten van automatisering als vooral de kosten van testonderhoud verlagen. Productiviteitswinsten van vier tot acht keer ten opzichte van Selenium komen vaak voor.
Aan de andere kant kun je het ongetwijfeld met Selenium voor elkaar krijgen als je weet wat je doet: de last dat je bijna alles zelf moet doen, brengt de vrijheid met zich mee dat je alles zelf kunt doen.
