Test engineering, Testautomatisering, Tooling

Tegenwoordig kan geen enkele tester meer zonder testautomatisering. Iedereen ziet de voordelen in van het automatisch checken van output. Velen zijn bekend met het automatisch checken van waardes op het scherm, of nog veel mooier middels het gebruik van API’s. Maar wat nou als je te testen systeem output geeft in de vorm van pdf-bestanden? Met de nodige frustratie heb ik jarenlang veel tijd besteed aan het handmatig testen van dezelfde pdf-bestanden. Totdat ik ontdekte dat het checken van waardes in pdf-bestanden wél automatisch kan, en nog best eenvoudig ook. In deze blog leg ik je uit hoe.

Apache PDFBox als oplossing

Bij de klant waar ik momenteel werk, maken we gebruik van een oplossing geschreven in JAVA. Naast onder andere Maven en Selenium, maken we ook gebruik van Apache PDFBox. De oplossing die ik hierna stapsgewijs toelicht, draait op Docker en een Linux runner.

Stap 1: Starten van Chrome met de juiste settings

In onderstaande code start ik een instantie van Chrome op waarbij ik de RemoteWebDriver gebruik. Allereerst set ik een instelling waardoor elk pdf-bestand automatisch gedownload wordt. Daarna geef ik aan in welke directory ik wil dat deze terecht komt. Als de testautomatisering daarna naar de URL van de pagina navigeert, wordt het pdf-bestand automatisch gedownload

Schermafbeelding 2022-01-25 om 12.56.08

Stap 2: Extracten van de pdf-tekst

Hierna voert de testautomatisering de acties uit die ervoor zorgen dat het report wordt aangemaakt en dat naar de URL wordt genavigeerd. Hiermee wordt het report gedownload en daarna haal ik de inhoud van het pdf-bestand op. Ik maak hierbij gebruik van Apache PDFBox. Dit is een Java library die je eenvoudig kunt importeren in je oplossing (https://pdfbox.apache.org/). Naast het nieuw opgeslagen pdf-bestand heb ik vooraf een verwachting-pdf opgeslagen. Deze heb ik van tevoren handmatig geverifieerd en sla ik op in een aparte map van de codestack. Van beide bestanden lees ik middels onderstaande functie de platte tekst uit. Ik ben me er bewust van dat ik hiermee eventuele opmaakfouten mis kan lopen, maar omdat elke wijziging ook nog een kleine(re) handmatige test krijgt, is dit een acceptabel risico voor mij.

Schermafbeelding 2022-01-25 om 12.56.16

Stap 3: Asserten van verwachting en resultaat

De resultaten van bovenstaande functie sla ik op in een variabele en daarna gebruik ik een eenvoudige assert om te verifiëren of deze naar behoren zijn. Dit is bewust een simpele assert gebleven, want deze hoort altijd te slagen.

Schermafbeelding 2022-01-25 om 12.56.24

Het gebruik van relatieve paden

Deze oplossing draait op onze Linux runner, maar moet ook lokaal door de tester uitgevoerd kunnen worden. Door gebruik te maken van relatieve paden is dit gelukt! Dit zorgt ervoor dat ik eventueel gefaalde testen lokaal kan herhalen. Hierdoor weet ik bij de start van mijn werkdag dat – in de basis – onze pdf-bestanden nog zijn zoals verwacht. Hiermee is een groot gedeelte van de risico’s van de pdf-bestanden ondervangen.

Zelf aan de slag

Aan de hand van deze drie stappen kun je zelf eenvoudig aan de slag met het meenemen van pdf-bestanden in je test automatisering. Wil je meer weten over bovenstaande oplossing of loop je tegen problemen aan bij het implementeren ervan? Neem dan gerust contact met me op

Wil je ons nieuwste Paarsz magazine per post ontvangen? Laat dan je gegevens achter.

Ontwerp zonder titel (19)

Werken bij Bartosz?

Vincent Verhelst

Geïnteresseerd in Bartosz? Dan ga ik graag met jou in gesprek. We kunnen elkaar ontmoeten met een kop koffie bij ons op kantoor. Of tijdens ontbijt, lunch, borrel of diner op een plek die jou het beste uitkomt. Jij mag het zeggen.

Mijn Paarsz