Iedere tester zal wel te maken hebben gehad met een applicatie, waar ze geen kennis van hebben. Vaak een ideale kans om te bewijzen dat een tester werkelijk een meerwaarde is. Je leest je in, je vraagt, je probeert datgene wat je moet testen ook echt te snappen. Daarna bepaal je wat je wil testen en hoe. En je test.
Bij testautomatisering gaat we er echter vaak van uit, dat deze kennis al beschikbaar is. Je hebt het al een keer getest, of anders heeft een collega al gedaan. Die kennis staat bij voorkeur op papier, maar is in ieder geval beschikbaar. De kennis is daarmee toetsbaar en geschikt om te automatiseren. Hoe Agile we ook zijn en denken, "Lever regelmatig werkende geautomatiseerde testen op" is zeker niet iets wat haalbaar lijkt, als je start bij 0% kennis en 0% geautomatiseerde testen of testscripts.
De start - breng je eisen naar beneden
Een van de moeilijkste zaken is om je eisen voor testautomatisering naar beneden te brengen. Je weet niet alles, dus je kan nog niet alles testen, dus je kan nog niet alles automatiseren. Probeer dat dan ook niet. Je start moet iets zijn wat je wel weet, hoe zinloos die automatische test ook mag lijken. Het enige doel is een basis neer te zetten, die je daarna, al lerend, uit kan bouwen.
Stel je hebt een invoerscherm voor een medewerker met 100 velden, waarvoor wel het een en ander aan business logica wordt uitgevoerd. Bijvoorbeeld berekeningen of velden die verschijnen en verdwijnen. Om voor dit scherm te starten met de testautomatisering, is het niet nodig alle regels en voorwaarden al te kennen.
Start met een test waarbij een nieuwe medewerker wordt aangemaakt, alleen de verplichte velden gevuld worden en sla de medewerker op. Open de medewerker hierna opnieuw en controleer of de verplichte velden correct zijn. Nee, dit lijkt waarschijnlijk geen zinvolle geautomatiseerde test. Je test bijna niets. Maar de kennis heb je al. Of kan je vrij eenvoudig achterhalen. De meerwaarde mag klein zijn, maar er is een meerwaarde. En de test werkt.
Het vervolg - Automatiseer stapje voor stapje
Als je eenmaal een basis hebt, is het verstandig om vervolgstappen te bepalen. Ook hiervoor geldt: hou je eisen laag. Als er 100 velden zijn, probeer ze dan niet meteen alle 100 te automatiseren. En als je een salarisberekening wil testen, probeer dan niet meteen alle mogelijkheden voor het salaris te automatiseren. Maak zo klein mogelijke stappen, die wel duidelijk herkenbaar zijn.
Zo staan velden in je scherm vaak in groepen ingedeeld. Automatiseer dan bijvoorbeeld per groep. En de gegevens voor een berekening zijn ook vaak in groepen in te delen. Bij salaris zijn dit bijvoorbeeld: brutosalaris, berekening van loonheffing en eventuele extra inhoudingen. Automatiseer dan ook hier per groep en houdt voor de andere gegevens de standaard waardes aan of nog liever: zet ze in eerste instantie op 0. Dus bijvoorbeeld eerst de controle van het salaris als er geen loonheffing is en geen extra inhoudingen. Daarna het salaris, waar de loonheffing wordt ingehouden, maar er nog geen extra inhoudingen zijn. En daarna nog extra inhoudingen toevoegen.
Elke keer test je weer een deel extra functionaliteit. Het eindresultaat lijkt nog niet altijd zinvol, omdat de situatie niet erg realistisch is (salaris zonder loonheffing?). Maar je weet wel dat de toegevoegde functionaliteit werkt.
Hoe gebruik je de stappen nu om te leren?
Je doel wordt nu niet om alles in een keer te leren, om alles in een keer te automatiseren. Je doel wordt, elke groep opnieuw, om alles over deze groep gegevens of deelberekening te leren. En het effect wat deze hebben op het al geautomatiseerde deel. Dit maakt je stap om te leren een stuk kleiner en daarmee kan je sneller verder met automatiseren. Onderzoek en leer, tot je voldoende weet voor de stap, waar je mee bezig bent. En automatiseer deze vervolgens in je bestaande testcases. Breidt dus bij voorkeur bestaande testcases uit, maak geen nieuwe. Want juist de relaties tussen deze groepen is interessant om te testen.
Wel belangrijk: automatiseer alle velden. Dus als er in het scherm read-only velden staan zonder waarde, controleer ze allemaal. Hebben ze altijd dezelfde waarde, controleer ze toch. Mits ze binnen je te automatiseren stap vallen natuurlijk.
Wat voor effect kan er nu gaan ontstaan? Na of tijdens het automatiseren van je testen, kom je erachter dat je test faalt. En niet altijd op een logische manier. Ja, als je een naam van een medewerker invoert en deze wordt niet opgeslagen, dan is er duidelijk een fout gevonden. Maar je bent eigenlijk het veld "Aantal openstaande vakantiedagen" aan het automatiseren. En plotseling is deze bij een van je testcases twee dagen hoger. Is dit fout of is dit goed?
Als je dit tegenkomt is het belangrijk om net zo lang door te zoeken, leren, vragen tot je het antwoord op deze vraag weet. Maar nog belangrijker: zorg ervoor dat je snapt waarom dit goed of fout is. Dan kan je erachter komen, dat in je testcase de medewerker ouder dan 50 is. En dat medewerkers boven de 50 automatisch twee vakantiedagen meer hebben.
Of een ander voorbeeld: je dacht dat het veldje "einddatum" alleen werd gevuld bij het beƫindigen van een dienstverband. Die stap is nog niet geautomatiseerd. Maar plotseling staat er wel een datum. Blijkt dat bij het wijzigen van een functie, en dat was je wel aan het automatiseren, ook een einddatum wordt vastgelegd. En daar is dan ook de reden om alle velden mee te automatiseren, ook al lijkt het zinloos. Je kan juist zo altijd achter een onverwachts effect komen.
De vervolgstap is nu wel vrij logisch. Als het fout is, laat het oplossen. Als het goed is, pas je testen erop aan.
Dus hoe kan je al lerend automatiseren
Voor Exploritory Test Automation volg je dus de volgende stappen:
- Automatiseer een basisstap en houdt die zo klein mogelijk
- Bepaal de vervolgstappen en automatiseer deze per stap
- Probeer voor het automatiseren van deze stap alles over dit deel te leren
- Leer tijdens het automatiseren alles wat nodig is om de onverwachte bevindingen bij het automatiseren van de testen op te lossen
Zo kan je automatiseren en leren tegelijkertijd. En kan de testautomatisering misschien zelfs helpen om nog meer te leren.
Geen opmerkingen:
Een reactie posten
Opmerking: Alleen leden van deze blog kunnen een reactie posten.