12 november 2020
UI tests met Selenium

Het schrijven van geautomatiseerde UI tests is geen gemakkelijke taak. Het schrijven van onderhoudbare en betrouwbare tests is nog moeilijker. Iedereen die voor deze uitdaging heeft gestaan, weet dat. In dit artikel duiken we snel in een van de best practices waarbij we het ontwerppatroon van het Page Object Model gebruiken.
Page Object Model patroon
Page Object Model is door de Selenium-gemeenschap het meest gebruikte ontwerppatroon in testautomatisering voor het verbeteren van testonderhoud en het verminderen van code duplicatie
Een pagina object is een objectgeoriënteerde klasse die dient als interface naar een echte pagina/scherm van uw applicatie. In een notendop houdt het patroon in dat een pagina-objectklasse wordt gemaakt voor elke toepassingspagina die u wilt testen en dat de tests de leden van deze klasse moeten gebruiken wanneer ze interactie met de gebruikersinterface nodig hebben.
Naarmate we meer en meer functies aan een project toevoegen of de dekking van geautomatiseerde tests vergroten door meer tests toe te voegen, neemt het risico op een moeilijk te onderhouden testproject toe.
Op de startpagina van een website bijvoorbeeld hebben we een menubalk met navigatielinks naar verschillende modules. Veel geautomatiseerde testscenario’s klikken op deze menuknoppen en voeren specifieke testvalidatielogica uit. Stel je voor dat de gebruikersinterface is vernieuwd end at de menuknoppen naar een andere positive op de startpagina zijn verplaatst. Dit zal resulteren in mislukte tests, omdat scripts bepaalde element-locators niet kunnen vinden om de vereiste acties uit te voeren. Om die tests op te lossen, moeten we de volledige testcode doorlopen om locators waar nodig bij te werken. Het updaten van element-locators in gedupliceerde testcode zal veel tijd kosten die anders beter kan worden gebruikt om de testdekking te vergroten. En dit is slechts een van de scenario’s die gemakkelijker te hanteren is.
Om het punt beter te bewijzen, stelt u zich voor wat er moet worden gewijzigd als een lijst wordt vervangen door een raster, of als een pagina volledig opnieuw wordt ontworpen. In al deze gevallen, als de tests worden uitgevoerd tegen een pagina-objectklasse, hoeft alleen die klasse te worden aangepast.

Als we de voordelen van het gebruik van het POM-patroon zouden samenvatten, zou dit neerkomen op het volgende:

Het schrijven van tests
Een eenvoudig voorbeeldscenario voor een geautomatiseerde test is het succesvol inloggen van de gebruiker in de applicatie. Wanneer de gebruiker geldige inloggegevens invoert, wordt de applicatie doorgestuurd naar de startpagina door op de aanmeldknop te drukken. Op basis van het hierboven beschreven POM-patroon zou de testmethode die dit scenario valideert er uitkomen te zien zoals de afbeelding hiernaast. We hoefden alleen maar een deel van de inlogpagina te maken en methoden voor dit object aan te reopen om deze test te schrijven.

Dit zijn slechts een paar alinea's van 'Geautomatiseerde UI tests met Selenium
- Wilt u het hele artikel ontvangen? Mail dan naar netrom@netrom.nl.