Automatisch testen is geen vervanging voor ál het testwerk, maar voor sommige onderdelen van de testcyclus toch goed bruikbaar. Maar waar start je? Via deze blog geef ik je een introductie. Hierbij ga ik uit van mijn eigen werkwijze, dus kijk vooral naar wat voor jou werkt. Overigens zijn alle tooling en tutorials die ik in deze blog noem, gratis beschikbaar ‒ óók voor commerciële projecten.

Testobject

Automatisch testenHet is makkelijker om tests te schrijven voor een concreet object dan voor een theoretische situatie. Ga daarom op zoek naar een testobject, zodat je kunt oefenen met automatisch testen. Let op: ga niet testen zonder toestemming van de eigenaar. Als je gaat testen, kun je daardoor een zwaardere belasting op het testobject leggen en niet iedere eigenaar zit daarop te wachten. Het is dan ook verstandiger om een website of applicatie te kiezen die in eigen beheer is.

Is er binnen jouw werkomgeving geen testobject voorhanden? Of kun je hiervoor geen tijd vrijmaken? Kijk dan eens of je thuis nog iets op de plank hebt liggen. Misschien heb je zelf een website of applicatie gemaakt of ben je actief met een blog? Gebruik die dan als oefenmateriaal.

Als voorbeeld voor dit artikel kies ik een website gebouwd met Laravel (PHP) en MySQL.

Keuzes

Het is belangrijk om eerst te bedenken wat je precies wilt testen en in welke categorie dit valt. Wil je bijvoorbeeld functionele tests uitvoeren, waarbij je kijkt of de website goed laadt en je formulieren juist invult? Of wil je een smoke test doen, waarbij je een aantal kleine controles uitvoert om te zien of de website überhaupt werkt? Ik kies voor functioneel testen, want daar valt voor mij de meeste tijdwinst te behalen.

Ik wil mijn website testen door pagina’s te bezoeken en te controleren of bepaalde elementen worden weergegeven. Ook wil ik op links kunnen klikken en formulieren invullen en verzenden. Om een geschikte tool te vinden, begin ik bij Google. Ik ga op zoek naar testtooling voor de website en houd daarbij rekening met de soort test die we willen uitvoeren. De beste manier is om te zoeken op de ontwikkeltechniek of taal (in dit geval ‘Laravel’, ‘PHP’, ‘Website’, ‘MySQL’) en termen als ‘Automated Testing’ of ‘Test tooling’. Dit klinkt misschien voor de hand liggend, maar zo krijg je snel een idee van wat er allemaal beschikbaar is. De informatie die je vindt, is over het algemeen in te delen in drie categorieën: vendorwebsites (de makers van de tools), tutorials en vragen die mensen hebben/problemen waar ze tegenaan lopen. Lees eerst de vendorbeschrijvingen door. Daarin staat wat een tool kan, waarvoor de tool is bedoeld en hoe de tool moet worden toegepast.

Kijk ook naar de tutorials. Vaak kun je daaraan zien hoe lastig de toepassing is en wat je nog meer kunt met de tool. De vragen/problemen kunnen later van toepassing komen.

Test setup

Even een uitstapje. Bij het automatisch testen heb je natuurlijk te maken met testtools. Die tools functioneren vaak prima op zichzelf. Maar als je meer wilt (meer tests, controle van resultaten, betere reporting, automatische start et cetera) dan kun je je setup uitbreiden. Wat je veel ziet, is dat er een framework wordt gebruikt waar de testtooling wordt ingezet. Binnen dat framework worden de test opgezet. Denk hierbij aan JUnit en TestNG. Deze frameworks zijn vaak bedoeld voor unittesting, maar zijn ook goed bruikbaar voor functionele tests. Een framework geeft ons mogelijkheden tot integratie (in het proces en in andere tools) en het gebruik van externe data (data driven testing), parameterisering, logging, rapportering et cetera. Je kunt hiermee ook tools combineren (denk aan Selenium voor functioneel testen en Rest Assured voor het testen van webservices in één test). Daarnaast is er tooling voor rapportering, zoals Allure. Want de rapporten die frameworks opleveren, zijn vaak niet bepaald fraai. Houd wel altijd goed je behoeftes in de gaten. En ga, zodra je denkt dat iets beter kan, op zoek naar een manier of tool om die verbetering door te voeren.

Doe het niet alleen

Als je bezig bent met testautomatisering en je werkt in een project, dan is het slim om de ontwikkelaars erbij te betrekken. De kans is groot dat de automatische tests ‒ nu of later ‒ ook hun werk gaan raken. Zo kunnen automatische tests in hetzelfde project worden geïntegreerd en kunnen ze van hetzelfde versiecontrolesysteem gebruikmaken. Maar denk ook aan het testbaar maken van de website. Het is trouwens altijd verstandig de ontwikkelaars om hulp te vragen, want code schrijven is nou eenmaal hun ding; waarom zou je het wiel opnieuw willen uitvinden? Bovendien kunnen ontwikkelaars je helpen bij de keuze van een tool en de rest van je setup op basis van de kenmerken van het bestaande project, hun ervaring en inschatting van de benodigde kennis, tijd en inspanning.

Keuze voor de tool

Tijd om de website functioneel te testen. Een populaire tool daarvoor is Selenium. Selenium voert handelingen voor ons uit in de browser, zoals het klikken op links en het invullen van een formulier. De tool is op twee manieren te gebruiken. We kunnen opnemen, bewerken en afspelen via de Firefox-plugin (Selenium IDE) en test zelf schrijven via code (Selenium WebDriver). Vanwege de schaalbaarheid en de flexibiliteit gaat mijn voorkeur uit naar Selenium WebDriver. Daarnaast kies ik voor TestNG als framework, omdat ik zo meer mogelijkheden heb voor de controle, planning en uitvoer van tests. Via TestNG kan ik ook gebruikmaken van een startup- en teardownscript; handelingen die voor en na iedere testcase standaard worden uitgevoerd.

Aan de slag!

Gelukkig zijn er online tutorials die me helpen bij de setup van TestNG en Selenium in een project (zie de links onderaan). We hebben hier een IDE (Integrated Development Environment) nodig, een programma waarin we de code kunnen schrijven. Dit zou ook in notepad kunnen, maar een IDE helpt je bij het structureren en de bestandopzet. Bovendien geeft IDE nuttige suggesties. En misschien is het je opgevallen: Selenium heeft ook een IDE. Hierin kun je Selenium-tests opnemen en afspelen, maar ook schrijven. Ik kies echter voor Selenium WebDriver en een losse IDE, omdat ik in dat geval ook andere tooling kan gebruiken. Eclipse is de meest gebruikte IDE en werkt op alle omgevingen. We zetten ons testproject hierin op en schrijven onze tests erin. We zouden de tests zelfs via Eclipse kunnen uitvoeren.

Testen schrijven

Ik heb mijn website en setup; nu kan ik beginnen met testen schrijven. Gelukkig zijn ook daar tutorials voor. De belangrijkste regel: gebruik vooral veel Ctrl+C en Ctrl+V. Vind (test)code waarvan jij denkt dat deze doet wat je wilt, kopieer en plak die in je test, en kijk of het werkt. Begin klein en kijk eens of je ervoor kunt zorgen dat een browser opent en je website wordt getoond. Dit kun je steeds verder uitbreiden tot je een complete test hebt. Het is natuurlijk wel belangrijk om testcases te hebben, want je moet eerst weten wat je gaat automatiseren voordat je aan de slag kan.

Automatiseren van bestaande tests

Vaak begin je met automatisch testen op een project dat al loopt, dus op software die al geschreven is. Ik heb een paar keer de opdracht gekregen om alle tests te automatiseren. Op een bestaand product is dat nogal wat! Waar begin je? Mijn advies: start met het testen van nieuwe features. Voor die features schrijf je meteen automatische testen die daarna eventueel in de regressieset worden opgenomen. Vervolgens kun je ook de bestaande regressietests automatiseren. Een volledige automatische testset heb je niet binnen een week, maar met een goede planning heb je er ook weer geen jaren voor nodig.

Ik hoop dat je een goede eerste indruk hebt van waar je kunt beginnen met automatisch testen. Het belangrijkste advies dat ik je kan geven is: doe het gewoon! Wees niet bang voor code, probeer het eens en misschien vind je het zelfs wel leuk! En hoewel ‘echt’ testwerk altijd blijft bestaan, kan automatisch testen je veel herhalend werk uit handen nemen.

Op een rij

Alle tips nog eens op een rij:

  • vind een project
  • vind een tool (en eventueel meer om een setup te maken)
  • vind een vriend (een ontwikkelaar, tutorials)
  • vind een begin (eerst nieuwe features en automatiseer langzaam de regressietests)
  • vind informatie (Google, StackOverflow, collega’s met meer ervaring)

En een bonus-tip: check ToolsQA, voor veel goede automatische testtooling tutorials, zoals Selenium in JAVA.

Heel veel succes!