De medewerker centraal 

Nut en noodzaak van geautomatiseerd testen

Klanten willen producten die na implementatie meteen goed werken. Dat wil zeggen dat er geen programmeerfouten zijn, formulieren op websites goed kunnen worden ingevuld en de applicatie doet wat die zou moeten doen. Nu releases van software elkaar steeds sneller opvolgen, wordt de noodzaak van testautomatisering groter. Toch wordt dit nog maar weinig toegepast, in het bijzonder het geautomatiseerd uitvoeren van testen.

Wat is automatisch testen?
Dit is simpel gezegd het automatisch laten uitvoeren van testscenario’s. Deze scenario’s worden zo geschreven dat ze begrijpelijk zijn voor iedereen, zowel technische als niet-technische mensen. Ze kunnen vervolgens worden opgenomen in een framework voor testautomatisering.

Wat is testautomatisering?
Zowel geautomatiseerd testen als testautomatisering zijn belangrijke onderdelen van een continu testproces. De twee soorten lijken op elkaar, maar zijn niet hetzelfde. Geautomatiseerd testen richt zich op de automatische uitvoering van specifieke testen. Testautomatisering is het automatiseren van het proces van het beheren en bewaken van verschillende tests.

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:

  • Kosten

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.

  • Type applicatie

Welk type applicatie moet worden ondersteund: mobiele, desktop- of browser- gebaseerde applicaties?

  • Programmeertalen

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.

  • Technische aspecten

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

Cookies op Fondo
Wij en derden gebruiken cookies op onze website. We gebruiken cookies voor statistische, voorkeur en marketing doeleinden. Google Analytics cookies zijn geanonimiseerd. Je kan je voorkeuren wijzigen door op ‘Verander opties’ te klikken. Door op ‘Accepteren’ te klikken accepteer je het gebruik van alle cookies zoals beschreven in onze privacy-statement.
Noodzakelijk
Noodzakelijke cookies helpen een website bruikbaarder te maken, door basisfuncties als paginanavigatie en toegang tot beveiligde gedeelten van de website mogelijk te maken. Zonder deze cookies kan de website niet naar behoren werken.
Voorkeur
Voorkeurscookies zorgen ervoor dat een website informatie kan onthouden die van invloed is op het gedrag en de vormgeving van de website, zoals de taal van uw voorkeur of de regio waar u woont.
Statische
Statistische cookies helpen eigenaren van websites begrijpen hoe bezoekers hun website gebruiken, door anoniem gegevens te verzamelen en te rapporteren.
Marketing
Marketingcookies worden gebruikt om bezoekers te volgen wanneer ze verschillende websites bezoeken. Hun doel is advertenties weergeven die zijn toegesneden op en relevant zijn voor de individuele gebruiker. Deze advertenties worden zo waardevoller voor uitgevers en externe adverteerders.
Verander opties