Testautomatisering, Hard & soft skills

Om snel inzicht te krijgen in de kwaliteit van software, gebruiken testers tools om checks te automatiseren. Ook wel automation in testing genoemd. Wat veel testers alleen niet weten, is dat deze tools ook ingezet kunnen worden om de testwerkzaamheden te vergemakkelijken. Zo heeft automation in testing mij geholpen bij het oplossen van een aantal problemen tijdens het testen van de systemen bij een grote netwerkbeheerder. Wil je weten hoe? In deze blog geef ik vier voorbeelden van hoe je automation in testing op verrassende wijze kunt toepassen in je werk. Hiermee hoop ik je te inspireren om eens op een andere manier naar een tool te kijken én te ervaren hoe het je werk leuker kan maken.

Voorbeeld 1: Het filteren van valide testdata

In het SAP-systeem waarmee ik werk bij de klant zijn de gegevens van alle aansluitingen in het gebied van de netbeheerder opgeslagen. Binnen de grote diversiteit aan aansluitingen is het alleen mogelijk om te zoeken op adres. Er werd een systeem gerealiseerd voor het afhandelen van het aanvraagproces van nieuwe aansluitingen of het wijzigen van bestaande aansluitingen. Dit systeem maakte onder andere gebruik van een service om aan de hand van postcode en huisnummer gegevens van aansluitingen op te halen uit SAP.

In ReadyAPI bouwde ik een kleine suite, waarvan je hieronder een voorbeeld ziet. Met een lijst van postcodes en huisnummers in een Excel sheet als bron was het eenvoudig een lijst met aansluitgegevens te maken. ReadyAPI sloeg de gegevens van het excel bestand op in de datasource, doorliep deze regel voor regel en haalde daaruit de postcode en het huisnummer op. Die dienden als input voor de service die op zijn beurt alle gegevens van het betreffende adres ophaalde. Via een transfer liet ik ReadyAPI de resultaten wegschrijven in een andere excel sheet. De benodigde tijd voor het zoeken naar de juiste gegevens werd hierdoor verkort van een half uur tot een uur naar enkele minuten.

Afbeelding 1

figuur 1. De suite in ReadyAPI voor het genereren van een bestand met aansluitgegevens.

Voorbeeld 2: Genereren van importbestanden

Een van de functionaliteiten van het gebouwde systeem was de mogelijkheid om adressen met aansluitgegevens te importeren, om zo in bulk aanvragen te verwerken. Het zoeken naar één specifieke aansluiting duurt al lang, laat staan 50 tot 200 aansluitingen. We hadden een specifieke dataset nodig, namelijk van adressen met één aansluiting in gebruik in de regio van een bepaalde vestiging. Handmatig zoeken naar deze aansluitingen en een importbestand maken, was zeer arbeidsintensief en dus geen optie. Bovendien maakten meerdere partijen tegelijkertijd gebruik van de testomgeving, waardoor de kans groot was dat de gegevens tussentijds veranderden.

Het was relatief eenvoudig om de suite uit het voorgaande voorbeeld aan te passen zodat deze gebruikt kon worden voor het genereren van importbestanden. Hiervoor moest er een extra service aangeroepen worden die verantwoordelijk was voor het controleren van de ligging van de adressen binnen een bepaalde vestiging. Bovendien controleerde twee extra toegevoegde condities of er slechts één aansluiting aanwezig was op een adres en of deze ook daadwerkelijk aangesloten was. De laatste aanpassing die nodig was, betrof de datasink, oftewel het doelbestand. Dit bestand was gebaseerd op een template voor het importbestand.

Voor het verkrijgen van een lijst met zo’n 200 aansluitingen die voldeden aan de criteria, was een dataset van ongeveer 5.000 adressen nodig. Het kostte ReadyAPI tussen de 10 en 30 minuten, in plaats van vele uren, om door de lijst heen te gaan en het importbestand klaar te zetten.

In mijn voorbeeld maak ik gebruik van excel maar natuurlijk hebben tools zoals ReadyAPI ook de mogelijkheid om andere bestandsformaten te gebruiken als bron- en doel bestand, zoals json en xml. Dit geeft je een stukje flexibiliteit mocht de format van de interface veranderen naar een ander bestandsformaat.

Afbeelding 2

figuur 2. De suite in ReadyAPI voor het genereren van een importbestand.

Voorbeeld 3: Controleren van testdata

Periodiek werden er ook regressietesten uitgevoerd. Hiervoor was een redelijke set aan testdata nodig. Het klaarzetten van deze testdata gebeurde vaak meer dan een week van tevoren, met het risico dat de testdata in de tussentijd gewijzigd was omdat meerdere partijen op dezelfde omgeving aan het werk waren. In het Excel document beschreef ik de scenario’s voor de regressietest met een tabblad met de testdata.

Met de data uit de Excel sheet en de services was het relatief eenvoudig om te controleren of de data nog geldig was. Om de data op te halen hoeft ReadyAPI slechts de naam van het tabblad in Excel te weten en de range van cellen. Op basis van EAN, een uniek identificerend nummer, was het mogelijk om de aansluitgegevens op te halen. In het testdata tabblad stond welke waarden verwacht werden, zoals de status van de aansluiting of wat voor een soort meter aanwezig was.

De waarden uit de Excel sheet werden in de datasource geladen, vervolgens toegewezen aan properties en deze werden vergeleken met de response van de service. In veel tools, en in dit geval in ReadyApi, kun je een aantal validaties toevoegen aan een soap request. Wanneer voldaan wordt aan de criteria is de check succesvol (en groen), als dat niet het geval is faalt de test (en wordt deze rood). Met de rapportage in een tool kun je snel zien voor welke scenario’s uit de regressieset de data nog valide is en welke scenario’s extra aandacht behoeven. Het is natuurlijk ook mogelijk om de resultaten van de controles weg te laten schrijven in een doelbestand zodat snel inzichtelijk is welke testdata corrupt is en welke nog valide. Bij een grote dataset is dit zeker aan te raden vanwege de overzichtelijkheid.

Voorbeeld 4: Aanmaken orders en aanvragen

Zoals bij veel procesketens bestaat ook het aanvragen van aansluitingen uit een flink aantal processen en stappen. Het is dan handig om halverwege zo’n keten te kunnen beginnen, zonder dat de voorgaande gecheckt hoeven te worden. De uitgangssituatie vanuit stap X in het proces goed hebben, is dan vaak voldoende.

Voordat een order vanuit een klant in SAP kwam te staan, waren er al een aantal stappen afgerond. De aanvraag moest eerst worden aangevuld, daarna moest er een offerte gegenereerd en verstuurd worden. Handmatig kostte dit per order toch al snel 10 minuten, als je geen fout maakte. Voor het aanmaken van een order bestond ook een service. Dus in plaats van de order in 3 stappen te realiseren hebben we de tijd genomen om uit te zoeken wat de order precies nodig heeft en wat optioneel is. Daarna was het opbouwen van het soap request relatief eenvoudig. Door direct de service aan te roepen werd het aanmaken van een order teruggebracht van 10 minuten naar minder dan 1 minuut.

Tot slot

Mijn voorbeelden beperken zich tot een specifiek systeem en één tool. Uiteraard zijn de voorbeelden breder toepasbaar. Er zijn meerdere tools in de markt die hetzelfde doen als ReadyAPI en waar dus een soortgelijke functionaliteit te realiseren is. De kans is groot dat je niet met een SAP-systeem werkt, maar in veel gevallen is het systeem wel onderdeel van een grotere keten waardoor het loont om uit te zoeken hoe je halverwege de keten een proces kan starten.

Er zijn legio scenario’s denkbaar waarbij er veel voorbereidend werk nodig is om tot een uitgangssituatie te komen. Mijn tip: ga eens met een ontwikkelaar samen zitten! Zij kunnen vaak helpen met het bedenken van een oplossing en een API openstellen. Zodat je direct een service kunt aanroepen of een tool kunt inzetten, die je in staat stelt halverwege in een proces in te prikken.

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