Ontdek het onverwachte
Binnen Infi zijn we al goed bekend met testen met als doel om te controleren of de oplossing aan de gestelde functionele en technische eisen voldoet. Maar we zijn nieuwsgierig wat Exploratory Testing zou kunnen toevoegen.
Daarom hebben we James Lyndsay uitgenodigd om voor ons een Exploratory Testing workshop te verzorgen. Doel van deze wokrshop was om ons in te wijden in de wereld van Exploratory testing. Hieronder de belangrijkste leerpunten die we uit deze workshop hebben gehaald.
Productrisico’s identificeren voor gerichte Exploratory Testing
Exploratory Testing moet je niet verwarren met adhoc- of monkey testing. Bij Exploratory Testing wil je gericht de eigenschappen en delen van de oplossing testen waarbij fouten tot serieuze problemen kunnen leiden. In één woord: je wilt de focus leggen op het verkennen van productrisico’s. Het is daarom zinvol om deze productrisico’s in kaart te brengen. Dat kan op verschillende manieren:
- Ga in gesprek met de stakeholders over de zaken waarover ze zich het meeste zorgen maken.
- Ga op zoek naar bekende problemen uit het verleden: bestudeer hotfixes en bug reports. Welke maatregelen zijn al eerder genomen om problemen op te lossen?
- Analyseer de mogelijkheden en rechten van componenten en breng potentieel kwetsbare gebieden in kaart.
Ontdek het onverwachte gedrag in plaats van het verifiëren van verwacht gedrag
De meest gebruikte insteek van testen is om op basis van de bekende (vastgelegde) eisen je testen voor te bereiden. Nadat de software is opgeleverd controleer je dan met die vooraf ontworpen testen in hoeverre de werkelijkheid overeen komt met de verwachtingen. Dit soort testen zijn goed te automatiseren en kunnen later als vangnet dienen voor het ontdekken van regressiefouten.
Met Exploratory Testing kies je voor een andere benadering. Je voert een verkenning uit op de opgeleverde software met als doel gedrag te vinden dat niet is verwacht. Als je dan afwijkend gedrag ontdekt stel je vast of dit het gedrag een probleem is. Bijvoorbeeld door direct nieuwe testen te ontwerpen en uit te voeren. Bij exploratory testen ontwerp je de testen dus niet vooraf, maar doe je dat als onderdeel van de verkenning.
Exploratory Testing is daarmee niet een vervanging van de testen waarmee je controleert of de software aan de vooraf gestelde eisen voldoet. Het is eerder een aanvulling waarmee je een ander soort fouten kan vinden.
Exploratory Testing vergt veel creativiteit en analytisch vermogen
Het uitdagende van Exploratory Testing is dat je behoorlijk creatief moet zijn om tot een goed testontwerp te komen. Daarnaast wordt beroep gedaan op je analytische vaardigheden. Die heb je nodig om de juiste conclusies te kunnen trekken uit je testresultaten en om je vervolgstappen te bepalen. Dat kwam sterk naar voren in de oefeningen die we in de workshop hebben uitgevoerd. Je kon op bepaalde momenten de hersenen van de deelnemers horen kraken!
Gebruik automatisering voor het slim generen van de input in je exploratie
De vraag die als ontwikkelaar direct bij je opkomt is natuurlijk in hoeverre je automatisering kan inzetten bij het ondersteunen van Exploratory Testing. Ook hier is de insteek anders dan bij het automatiseren van testen die verificatie als doel hebben. Doel van het automatiseren van die testen is dat je een verzameling testscripts opbouwt waarmee je snel en vaak kan controleren of de software nog aan de eisen voldoet. Daarbij ontwerp je de testscripts vaak zo dat ze het verwachte gedrag van gebruikers simuleren.
De automatisering in Exploratory Testing is niet gericht op het herhaalbaar maken van de testen. Met automatisering ondersteun je het snel kunnen aanpassen en uitvoeren van testen die je ontwerpt tijdens het uitvoeren van Exploratory Testing. Bijvoorbeeld scripts die je helpen om snel een grote set data te genereren. Die dataset kan je dan inzetten om patronen in het gedrag van de software te ontdekken. Zodra je een patroon hebt gevonden verliest de dataset zijn waarde. “Single use” automatisering dus.
Afsluitend
Onze conclusie is bovenal dat een frisse blik op een aspect van ons vak goed werkt. Specifiek hebben we dit keer weer nieuwe inzichten opgedaan op het gebied van Exploratory Testing. En op moment van schrijven van deze blogpost zien we in Slack al de eerste testresultaten voorbij komen!
Hopelijk inspireert dit jou ook om op nieuwe manieren je applicaties te gaan testen? En als je ook graag ergens werkt waar we samen dit soort workshops en trainingen voor elkaar regelen: je weet ons te vinden!