Leren automatiseren: 10 minute starting guide

Op het internet vind je een hoop blogs, posts en voorbeeldcode over ingewikkelde vraagstukken met betrekking tot testautomatisering. StaleElementExceptions, Page Object Patterns, allemaal reuze interessant en een must voor iedere geautomatiseerd tester, maar wat nu als je voor het eerst aan de slag gaat?

Oké, je duikt in de wereld van tutorials, blogs en voorbeeldcode en na uren code en tips en trucs lezen verzamel je alle relevante voorbeelden bij elkaar en je bent klaar om aan de slag te gaan. Maar dan reist de vraag waar je eigenlijk moet beginnen? En waarom werkt de code uit de gevonden voorbeelden niet?

Om antwoorden te geven op dit soort vragen en je een vliegende start te geven leek het ons een goed idee om deze 10 minute starting guide te schrijven.

Wat gaan we testen?

Voor deze tutorial gaan we een webapplicatie testen waarbij we testdata als variabelen mee willen geven om zo specifieke output te genereren. Klinkt logisch niet?

De toolbox

Je kan natuurlijk simpele record en playback scriptjes opnemen met de Selenium IDE plugin in Firefox, maar wij richten ons op het ontwikkelen van gestructureerde en flexibele testen. Hiervoor maken we gebruik van de programmeertaal Java, enige kennis hiervan is dan ook een must. Weet je niet wat een Class is of een Method? Dan raden we je aan om je hier eerst in te verdiepen, anders kom je nog niet ver met deze tutorial. Om Java te programmeren adviseren we om de IntelliJ IDEA Community Edition te installeren. Deze IDE biedt goede ondersteuning voor de benodige tooling. De tools voor de job zijn Selenium WebDriver, TestNG en Maven.

Selenium WebDriver

Selenium WebDriver heeft als doel een uniforme, robuuste en tegelijk flexibele manier van werken te promoten wanneer het gaat om geautomatiseerd testen van webapplicaties; De WebDriver biedt functionaliteiten om de browser te starten, te navigeren en om acties uit te voeren op de objecten binnen een webapplicatie, de zogenaamden WebElements.

TestNG

TestNG is een framework gebaseerd op JUnit, welke het mogelijk maakt om in Java verschillende testen op te zetten en uit te voeren, zoals unittesting, integratietesting en acceptance testing.

Omdat het een flexibele aanpak faciliteert kunnen test scenario’s in XML bestanden gedefinieerd worden en Java methods uitgevoerd worden door één of meerdere test scenario’s. Dit wordt mogelijk gemaakt door het werken met annotaties (herkenbaar aan het @penstaartje in de programmatuur).

Maven

Maven is een projectmanagement tool die je in staat stelt om met het behulp van één XML bestand, de zogenaamde POM file (pom.xml, staat voor Project Object Model), alle tools te installeren en te configureren die je voor je project nodig hebt. Dus concreet: We hoeven nooit handmatig Selenium WebDriver en TestNG te installeren, want dit doet Maven voor je; Deze importeert de applicaties automatisch.

Zorg ervoor dat bij het aanmaken van een nieuw Maven project je de gevraagde GroupId en ArtefactId benamingen geeft conform de Maven naming conventions. Hier mogen geen spaties in staan. Na het aanmaken van je project wordt een “lege” pom.xml file aangemaakt die er als volgt uitziet:

POM

En dan nu, aan de slag!

Stap 1: Maak zoals hierboven beschreven een Maven project aan en voeg aan je POM file de dependencies van Selenium WebDriver en TestNG toe. Deze vind je op de websites van Selenium Maven en TestNG. Dit ziet er als volgt uit:

POMDependencies

Let op dat je de meest actuele versies van Selenium en TestNG opneemt in je POM. Met name Selenium heeft regelmatig updates, dus hou goed de versies in de gaten.

Stap 2: Maak een Java Class aan. Geef deze een logische naam, bijvoorbeeld de naam van het scherm wat je wilt testen.

Stap 3: Maak een Java method aan om de browser te starten. Hiervoor maken we gebruik van de WebDriver van Selenium.

SeleniumWebDriverInit

Via de WebDriver functie navigate().to() navigeer je naar de gewenste URL. Manage().window().maximize() zorgt ervoor dat het scherm gemaximaliseerd wordt.

Stap 4: Definieer de objecten op de pagina die je wilt gaan gebruiken als zogenaamde WebElements en bepaal de locatie van het element op basis van het object ID of op basis van het XPath. Vervolgens schrijf je de code om de actie behorende bij het WebElement uit te voeren. Voor een invoerveld is dit het commando sendKeys() met daarin de waarde die je in het veld wilt invoeren. Het commando click() is zoals de naam al zegt om ergens op te klikken, denk aan een knop. Dit zijn de meest gebruikte commando’s, het volledige overzicht is hier te vinden.

WebElements

Herhaal dit voor alle elementen die je gaat testen.

Stap 5: De testen worden aangestuurd via de zogenaamde TestNG XML berichten; Ieder XML bericht kan dus een test scenario zijn. Om je test te kunnen afspelen dien je dan ook een xml bericht aan te maken in je project met onderstaande structuur. Ook kan je hier de parameters declareren die je wilt gebruiken in je test, dit zijn je eigenlijke testvariabelen.

testngxml
Stap 6: Voeg de test annotatie en parameters toe in de code. De parameters verwijzen naar de gedefinieerde String objecten. Zorg ervoor dat deze dezelfde naam hebben en in dezelfde volgorde staan. Hou altijd de workflow aan die een gebruiker doorloopt op de pagina.

TestNG

Stap 7: Als je alle stappen doorlopen hebt en er zich verder geen fouten in je code bevinden dan ben je klaar voor de eerste run van je test! Om deze af te spelen dan is de meest makkelijke manier om met de rechtermuisknop op de TestNG XML te klikken en voor de optie Run te kiezen. Draait de test? Dan heb je je eerste geautomatiseerde test gebouwd en mogen we je feliciteren met je eerste stappen in de uitdagende wereld van testautomatisering.

Schermafbeelding 2016-04-18 om 09.48.28

Share this Post