Voordelen van automatisch testen
Tijdens handmatig testen bestaat de mogelijkheid dat niet elke actie altijd hetzelfde wordt uitgevoerd door een tester. Dit kan leiden tot fouten in de uitvoering en de uitkomst van een test negatief beïnvloeden. Bij geautomatiseerd testen wordt de menselijke factor geëlimineerd.
Voordat een nieuwe versie van bijvoorbeeld een applicatie wordt gelanceerd, is het belangrijk om scenario’s na te lopen. Door automatisch te testen kan er snel een set aan scenario’s worden uitgevoerd in een geïsoleerde omgeving. Pas daarna volgt vrijgave voor implementatie in een productie-omgeving. Het scheelt een hoop tijd, geld en energie als een probleem vroegtijdig wordt ontdekt, in plaats van op het moment dat de applicatie al live staat. Zeker bij langere en grotere projecten is dit waardevol.
Ook als een applicatie al in productie draait, kunnen – periodiek of situationeel – tests worden uitgevoerd. Dit is vooral van belang als er afhankelijkheden zijn van bijvoorbeeld thirdparty-koppelingen. Als een externe partij een security- of optimalisatie-update doorvoert, wijzigen hun codes. Hierdoor kunnen problemen ontstaan, bijvoorbeeld een koppeling die niet meer werkt. Als je een automatische test uitvoert, komen zulke problemen snel aan het licht. Je kunt hier vervolgens meteen op inspelen.
Nadelen van automatisch testen
Er kleven ook nadelen aan geautomatiseerd testen. Het inrichten ervan kost vaak tijd en inspanning van alle mensen die verantwoordelijk zijn voor een applicatie. Er moeten duidelijke afspraken worden gemaakt over welke scenario’s wel en niet worden getest, hoe vaak wordt getest en hoe een test eruitziet. Vervolgens moeten scenario’s worden geschreven en moet worden bekeken of de tests wel de gewenste resultaten weergeven.
Automatisch testen kan bovendien voor een gevoel van schijnveiligheid zorgen: “We testen toch geautomatiseerd en merken direct als iets fout gaat!” Maar met automatische testtools worden een aantal problemen niet gevonden die met handmatig testen wel zouden zijn gevonden.
Dit kan door het ontbreken van een specifiek scenario, bijvoorbeeld de performance van een applicatie. Een goede tester zou vragen gaan stellen wanneer er een performance-verandering zichtbaar is die niet direct te verklaren is. Hij komt er zo achter dat er een probleem is. De automatische testtool controleert dit bijvoorbeeld niet en geeft gewoon groen licht.
Wanneer zinvol?
Bij kleine of gekochte applicaties is het vaak efficiënter om handmatig te testen. Immers, het inrichten van automatische tests kost in het begin best wat tijd. Toch kan het handig zijn om, bijvoorbeeld bij updates of onderhoud, automatisch te testen en te monitoren of alle belangrijke processen nog werken.
Bij grotere applicaties waarbij je afhankelijk bent van omgevingsfactoren, zoals thirdparty-koppelingen of opensource-software, is automatisch testen waardevoller. Problemen komen eerder aan het licht, waardoor je er gemakkelijker en sneller actie op kunt ondernemen.
Keuze voor tool
Het is belangrijk om goed na te denken over de vraag of het verstandig is om testtools te gebruiken of dat het slimmer is om zelf bepaalde tests uit te voeren. Een vervolgvraag is welke testtools je gaat gebruiken. Wil je gaan testen met tooling, realiseer je dan dat er geen goede of slechte tools zijn. Het is afhankelijk van de requirements en het type applicatie dat je moet testen.
Een aantal aandachtspunten voor een selectie van een geschikte testtool zijn:
Bij de aanschaf spelen niet alleen de licentiekosten van de tool een rol, maar ook de prijs voor eventuele add-ons, support, opleiding en onderhoud.
Welk type applicatie moet worden ondersteund: mobiele, desktop- of browser- gebaseerde applicaties?
Het selecteren van een tool die een programmeertaal gebruikt waarmee het team ervaring heeft, is erg handig. De keuze kan ook vallen op een tool met een laagdrempelige programmeertaal, bijvoorbeeld keyword-driven.
- Ondersteuning testautomatisering framework
De tool moet kunnen werken met verschillende type externe bestanden, zoals Excel, TXT, CSV, XML, SQL-tabellen of een database.
- Integratie met andere systemen
Het is belangrijk dat een tool kan koppelen met andere onderdelen, zoals testmanagement en issuetracking-tools.
Denk hierbij aan Record & Playback-ondersteuning, objectherkenning en objectmapping, expected results controle en scenario-afhandeling.
Houd er bij de selectie altijd rekening mee, dat het gebruik van testtools een middel zou moeten zijn en niet een doel op zich.
Ervaring
Binnen het team waar ik werkzaam ben, wordt een Agile/DevOps werkwijze gehanteerd. Software wordt dus op een iteratieve wijze geïmplementeerd. In een omgeving waar Agile/DevOps wordt gewerkt, is testautomatisering een onmisbaar hulpmiddel. Het belang van regressietesten neemt toe. Het snel en vooral vaak kunnen uitvoeren van deze regressietesten is belangrijk.
De keuze voor een testtool was voor ons vrij eenvoudig, omdat er binnen de organisatie veel kennis aanwezig is van Robot Framework. Deze tool is keyword-driven. Keywords zijn eenvoudige, leesbare combinaties van woorden. Hierdoor zijn de geschreven tests gemakkelijk te interpreteren en ben je snel in staat om te begrijpen welke handelingen binnen een test-suite worden uitgevoerd.
Robot Framework is door het brede scala aan beschikbare libraries een veelzijdig framework. Door de keyword-driven opzet blijven tests goed leesbaar en is het framework toegankelijk voor het gehele team. Natuurlijk zijn wij tijdens het implementeren van Robot Framework-tests tegen wat frustraties aangelopen. In ons geval gebeurde dat met name bij het gebruik van de Selenium2-library voor webtesting. De oorzaak lag in de keuze van browser- en driver-versie 32bit vs 64bit.
Aan de slag!
Het gestructureerd opzetten van een framework voor testautomatisering blijft een uitdaging, ongeacht wat het framework je biedt. Het is aan te raden om vanaf de start een goede structuur (stappen) aan te brengen in de opzet van je test, omdat het anders snel rommelig wordt en je een opeenhoping krijgt van keywords.
De leercurve van Robot Framework was erg laag. Er is veel over te vinden op internet en de keywords zijn duidelijk qua naamgeving. De naam van een keyword is vrijwel gelijk aan wat je ermee kunt in een test.
Online zijn er veel tutorials, die je kunnen helpen bij de setup van Robot Framework en Selenium Library in een testproject. Zie de links onderaan. Het beste kun je gebruik maken van een IDE. Dat staat voor Integrated Development Environment, een programma waarin we de code kunnen schrijven. Dit zou ook in Notepad kunnen, maar een IDE helpt je bij het structureren en de bestandsopzet. Robot Framework heeft ook een IDE (RIDE). Hier kun je bijvoorbeeld Selenium-tests in schrijven.
https://github.com/robotframework
https://robotframework.org/
https://www.tutorialspoint.com/robot_framework/robot_framework_overview.htm
https://www.blazemeter.com/blog/robot-framework-the-ultimate-guide-to-running-your-tests