Trendsz, Test engineering, Hard & soft skills

De wereld van softwareontwikkeling is complex en veranderlijk. Om deze software te testen moet je om kunnen gaan met deze veranderingen. In plaats van stug vasthouden aan geleerde testtechnieken en teststrategieën. In deze blog leg ik uit wat Context-Driven Testing is en waarom er geen ‘altijd de beste aanpak’ bestaat. Bovendien leg ik een link tussen Context-Driven Testing en het Japanse begrip Shu-Ha-Ri: van kennis opdoen, naar verbreden naar een eigen aanpak kunnen creëren en aanpassen aan de context. 

Wat is Context-Driven Testing?

Context-Driven Testing is een mindset binnen de testwereld waarbij de context bepalend is voor de keuzes die je maakt. Ontwikkeld door Cem Kaner, James Bach en Bret Pettichord en beschreven in hun boek Lessons Learned in Software Testing. In de IT-wereld waarin het lastig kan zijn om alle ontwikkelingen bij te benen, is het weleens een uitdaging om niet te blijven hangen in wat je al weet en kent. Als het enige gereedschap wat je hebt een hamer is, dan wordt uiteindelijk alles een spijker. Context-Driven Testing herinnert ons eraan dat je continu scherp moet zijn bij het bepalen van je aanpak van software testen. Keuzes als: hoe, wat, wanneer en hoeveel testen moet je herhaaldelijk evalueren in plaats van krampachtig vast te houden aan traditioneel aangeleerde testdogma’s. Iedere situatie waarin je eventueel test, moet worden benaderd als een unieke situatie. Bij het definiëren van deze mindset zijn zeven principes opgesteld die hiervoor van belang zijn.

"Als het enige gereedschap wat je hebt een hamer is, dan wordt uiteindelijk alles een spijker."

De zeven principes van Context-Driven Testing

  1. De waarde van iedere aanpak hangt af van zijn context.
  2. Er zijn goede aanpakken in specifieke contexten, maar er is nooit zoiets als ‘altijd de beste aanpak’.
  3. Het belangrijkste onderdeel van de context van een project zijn de mensen met wie je samenwerkt.
  4. Projecten ontwikkelen zich op termijn, vaak op onvoorspelbare wijze.
  5. Het product is een oplossing voor een probleem. Als het probleem niet is opgelost, dan werkt het product dus niet.
  6. Het testen van software is een intellectueel uitdagend proces.
  7. Tijdens de levenscyclus van een project, kunnen we door middel van het bundelen van kennis en vaardigheden ervoor zorgen dat we het juiste doen op het juiste moment. Zodat we in staat zijn om het product zo effectief mogelijk te kunnen testen.

Voorkom een keurslijf

In het begin van onze loopbaan leren we teststrategieën en testtechnieken. Deze passen we veelvuldig toe en ze bieden ons houvast in onze dagelijkse werkzaamheden. Door deze herhaling kun je in een keurslijf terecht komen. We zijn vaak geneigd om veelal dezelfde benadering te gebruiken bij het oplossen van gelijksoortige problemen. Dit kan gevaarlijk zijn, want afhankelijk van de context kan je benadering onvolledig of ontoereikend zijn. Het kan ook zijn dat je benadering wel volledig is, maar inefficiënt ten opzichte van alternatieven. Als laatste is context niet een vaststaand iets. Wat vaak gebeurt is dat een project, product of situatie geanalyseerd wordt middels een bekende strategie, aanpak of techniek. Na verloop van tijd kan de context echter veranderen, gevaar is dat je destijds gekozen strategie niet mee verandert.

Een ‘altijd de beste aanpak’ bestaat niet

Context-Driven Testing is de gewaarwording dat er nooit zoiets is als ‘altijd de beste aanpak’ tijdens je testwerkzaamheden. Je bent afhankelijk van de context waarin je je bevindt. Op deze context moet je kunnen inspelen en dus je testwerkzaamheden zodanig aanpassen dat ze op dat moment het beste passen. Als tester ben je verantwoordelijk voor je eigen werkproces, maar hoe je dit proces vormgeeft hangt nauw samen met je eigen skills. Denk bij skills aan dingen als: kritisch denken, het toepassen van heuristieken gebaseerd op je ervaring en het kunnen modelleren en visualiseren van software.

Een veelgebruikte techniek is ook Exploratory Testing, het simultaan leren, testontwerpen en uitvoeren van je testen. Tijdens deze manier van testen kom je misschien dingen te weten over de context, die je eerder niet wist of die veranderd zijn. Hier kun je dan weer op acteren door bijvoorbeeld je vervolgtesten op je nieuwe context aan te passen.

De verschillende invloeden van context

Met gewenning in je dagelijkse werk hoeft niets mis te zijn. Dit is immers gebaseerd op je eigen ervaringen. Bijvoorbeeld op een voor jouw bekende aanpak die zich in het verleden keer op keer bewezen heeft. Toch hoeft het niet zo te zijn dat de bewandelde paden altijd dezelfde moeten zijn. De context kan hier op meerdere manieren invloed op hebben. Denk bijvoorbeeld aan de vraag voor wie het product gemaakt wordt. Zo test je een simpele tekst editor anders dan een tekst editor voor ontwikkelaars. Tijdsdruk kan ook van invloed zijn: wat test je onder hoge tijdsdruk en waarom dan precies? Ook je team is onderdeel van de context: misschien heb je niet genoeg capaciteit of moet je een nieuw teamlid inwerken en dat heeft gevolgen voor het proces. Al dit soort dingen kunnen invloed hebben op wat en hoe je test.

Poll

Ben jij een Context-Driven tester?

Bekijk resultaten

Shu-Ha-Ri: drie stadia in het vergaren van kennis

Tijdens het lezen over Context-Driving Testing moest ik denken aan het Japanse begrip Shu-Ha-Ri. Dit begrip is ontstaan in de Japanse vechtsport (met name Aikido). Alistair Cockburn heeft dit vervolgens geïntroduceerd als een concept voor het leren van technieken en methodologieën binnen softwareontwikkeling. Het idee van Shu-Ha-Ri is dat er drie stadia zijn van het vergaren van kennis:

  • Shu: in de beginfase leert de student. Hij doet precies wat zijn meester hem opdraagt te doen. De leerling houdt zich niet bezig met waarom hij iets doet, of dat er meerdere manieren zijn om iets te doen. Hij concentreert zich alleen op datgene wat de meester hem leert. In deze fase ontwikkel je je fundamentele technieken en je heuristieken.
  • Ha: in deze fase is de student bezig met het verbreden van zijn kennis. Nu hij de basis onder de knie heeft, is hij in staat om zich te verdiepen in de onderliggende theorie van hetgeen hij doet. Ook leert hij nu van meerdere meesters en combineert hij deze kennis in de praktijk. Hier leer je dat er gebroken mag worden met de traditie.
  • Ri: de student is niet langer bezig met het leren van zijn meesters, maar leert nu van zijn eigen praktijkervaring. Hij creëert zijn eigen aanpak en past – waar nodig – aan wat hij geleerd heeft aan de context van zijn eigen situatie.

Om het niveau van Ri te behalen, moet je dus eerst je nodige vlieguren maken. Context-Driven Testing is een mindset die kan helpen bij het bereiken van het stadium Ri. Het kritisch bekijken van je geleerde lessen op het gebied van testen kan voor nieuwe inzichten zorgen, je scherp houden en je aanmoedigen om creatief met het testvak bezig te blijven.

En nu?

Uiteindelijk is het doel van testen om informatie te verschaffen over het product wat getest wordt. Als tester ben je verantwoordelijk om hier zelf invulling aan te geven. Context-Driven Testing wijst ons erop dat context bepalend moet zijn voor de keuzes die wij hierin maken.

Wees scherp en kritisch, evalueer je keuzes in plaats van krampachtig vast te houden aan je aangeleerde testdogma’s, ook na verloop van tijd. Realiseer je in ieder geval dat er nooit zoiets is als ‘altijd de beste aanpak’. Pak de zeven principes er af en toe bij om te kijken of je nog op het goede pad zit.

En weet dat als je uiteindelijk echt goed in je vak wil worden dat je dan moet leren wanneer je regels kan breken en je eigen aanpak dusdanig kan aanpassen aan de context van de situatie waarin je je op dat moment bevindt.

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