Een avondje testen met fenomeen James Bach

Vorige week dinsdag organiseerde Improve hun tweede Quality Boost. Het delen en praten over testen staat hier centraal. “omdat dit ons betere testers maakt”, aldus Huib Schoots van Improve. Voor deze avond hadden ze niemand minder dan James Bach uitgenodigd. James is test expert, auteur van onder andere het boek ´Lessons Learned in Software Testing”, consulting software tester, trainer, blogger en het brein achter Rapid Software Testen en Session Based Test Management. James wilde deze avond een zogenaamde “ Testopsy”  gaan uitvoeren. Dat is een context driven test demo van 10 minuten waarin hij een applicatie test terwijl hij aan de zaal vertelt wat hij denkt en doet. Want dat werkt veel beter dan alleen maar een verhaal houden over testen. Na de live test sessie wordt er dan vervolgens gepraat over het testen door middel van vragen die Huib en de zaal aan James stellen. Ondertussen maakt Ruud Cox een Sketch Note van het geheel om het verhaal compleet te maken.

Dus James opende de online applicatie RAW, waarmee je door middel van coördinaten in te geven grafieken kan genereren, startte de timer en ging aan de slag. Meteen bij het invoeren van de eerste getallen had hij al de eerste bug te pakken. Als je in regel 1 niks invult, dan krijg je de foutmelding dat je de getallen in regel 2 moet controleren. Als een ware cijfer-maniak bleef James de applicatie vervolgens bestoken met getallen en reeksen waar een wiskundige van zou watertanden. We begrepen opeens waarom James geen broodjes had gegeten. Hij had tijdens het eten “even” wat coördinaten van ingewikkelde wiskundige vormen uit zijn mouw geschud. Uit zijn hoofd en met behulp van een tooltje dat hij ooit eens had gebouwd.

Als TestNieuws reporter moet ik eerlijk toegeven dat James Bach nog een hiaat was in mijn lijst van live bijgewoonde presentaties. Tijdens EuroSTAR 2013 in Zweden zag ik hem van afstand wel staan in het TestLab met zijn welbekende pet en baard. Maar zijn tutorial was op een dag dat ik er nog niet was. Ik had daarom ook geen idee dat James zo’n enorme nerd is, in positieve zin uiteraard. Binnen een paar minuten moet je wel onder de indruk zijn van de kennis die James tentoonstelt. Los van het feit of je zijn aanpak kan waarderen. Hij is gewoon superslim, razendsnel en het is geen moment saai.

james 2

Na tien minuten ging de timer en was het testen al weer afgelopen. Maar in die korte tijd hadden we toch een verbazend goed beeld gekregen van wat de applicatie kon. Veel meer dan als we er alleen maar over wat over hadden gelezen. James zelf noemt het “Survey Testing”. Dus onderzoekend testen om het product zo snel mogelijk te leren kennen. Op deze manier ontdek je heel snel of het product iets anders doet dan verwacht. De eerste vraag werd gesteld.

Hoe leer je om in 10 minuten te testen?

James: “Kies data die bekende resultaten oplevert. Dus in dit voorbeeld voer ik de coördinaten in van een spiraal. Zie ik vervolgens geen juiste spiraal op het scherm dan weet ik direct dat het product verkeerd gemaakt is, een bug dus. Of ik zie dat ik de test anders hebt uitgevoerd dan gedacht, bijvoorbeeld door een verkeerd getal in te voeren. Als je zo maar wat willekeurige coördinaten invoert weet je nooit of het resultaat ook het verwachte resultaat is. Dus neem de trap in plaats van met je blote handen een loodrechte muur te beklimmen. Wees niet bang voor complexiteit. De coördinaten van een spiraal zien er misschien angstaanjagend complex uit, maar dat valt reuze mee en het maakt het testen veel minder complex.”

Hoe ga je om met die complexiteit?

James: “Probeer patronen te herkennen om zo zaken in behapbare brokken op te delen. Niet bang worden en klam blijven. Lees vooral het boek “ Introduction to general Systems Thinking” van Gerald Weinburg. Na drie bladzijdes lezen moest ik steeds stoppen met lezen omdat het als heroïne was voor me. Ik moest steeds achterover leunen om het te laten bezinken”. James draait hierbij met zijn ogen alsof hij high is.

Het is dus een vaardigheid en je moet durven toegeven dat je iets niet kunt?

James: “Je hoeft niet alles te kunnen als tester. Concentreer je op waar je goed in bent en vermijd waar je slecht in bent. Zoek daarbij mensen die wel kunnen waar jij slecht in bent. Zo vorm je samen een perfect team. Zo kan ik heel goed deuren intrappen en naar binnen roepen wat er moet gebeuren. Maar ik kan niet zacht praten, daar krijg ik hoofdpijn van. Daarom ben ik ook zo blij met mijn diplomatieke collega’s en met mijn vrouw die de administratie doet.”

Welke skills moet je hebben als testers?

James: “Je hoeft niet alles altijd uit je hoofd te weten. Daarvoor is testen vaak te complex. Daarom gebruik ik zogenaamde “Guide Word Heuristics”, een soort checklist met steekwoorden en handelingen die ik moet onthouden. Die helpen me op drukke momenten herinneren wat ik me moet herinneren. Daarbij is het goed om te weten wat ik kan, welke tools ik heb en welke technieken ik kan toepassen op welk moment. En gebruik Excel. Dat is de beste testtool die er bestaat. Samen met Google en Notepad. Daarnaast moet je oefenen, oefenen en oefenen. Dan word je en blijf je een goede tester”.

James maakt een zijsprong naar de Sketch Note van Ruud. Ruud stribbelt wat tegen want hij heeft ontdekt dat hij op een flipover niet zo goed kan tekenen als hij wil. James is echter zeer geïnteresseerd en vindt het handig dat iemand alles observeert en dat beeldend vastlegt. Ruud heeft volgens hem namelijk dingen opgeschreven die hij zelf al weer vergeten was.

Naamloos 7a Wil je overigens een paar “echte” sketch notes van Ruud zien kijk dan hier.

James vertelt dat Ruud en hij waarschijnlijk de enige twee testers zijn die aan Obsession Driven Testing doen. Bij deze manier van testen leg je alles, maar dan ook werkelijk alles, vast. Dus ook wat er mis gaat. Als voorbeeld laat hij een document zien van 130 pagina’s van een testtraject van drie dagen waarbij James alles heeft vastgelegd. Je ziet bijvoorbeeld foto’s van schetsen op een servetje, vervolgens op een A4, vervolgens een eerste opzet in Excel, tot aan het eindresultaat toe. Alles vastleggen is volgens James dom om te doen in een echt project of werk voor een klant, maar als oefening is het enorm leerzaam. In zijn document analyseert hij wat hij gedaan heeft en hoe. Hij benoemt alle gebruikte heuristics en evalueert zichzelf kritisch. Hij dacht dat hij de enige in de wereld was die dit ooit heeft geprobeerd, maar Ruud blijkt dit dus ook een keer gedaan te hebben heeft James onlangs ontdekt.

Waarom gebruik je een timer van 10 minuten?

James: “In plaats van 45 minuten te testen en er daarna 10 minuten over te praten kun je beter 10 minuten testen en er daarna 45 minuten over praten. Door er over te praten pakt het te testen object zichzelf namelijk voor je uit. Je ontdekt al testend en pratend wat het object allemaal kan. Spontaan testen is ook veel leuker dan van te voren eerst alles wat je wilt gaan testen vastleggen. Want hoe weet je wat je wilt gaan testen als je het object nog helemaal niet kent. De timer zet ik om niet in de flow van het testen te geraken. Het tempo van testen is belangrijk. Even testen, even praten, even testen, even lezen, even testen, etc. Als je maar door blijft testen zonder te stoppen verzamel je veel te veel materiaal. Materiaal wat je vervolgens niet meer (juist) kunt verwerken. Door de timer te zetten blijven het de behapbare blokken die ik eerder al noemde. Ook zorgt de timer er voor dat je doorkrijgt wat je eigenlijk allemaal kunt doen in maar 10 minuten.

Test je normaal altijd zo?

James: “Ik begin inderdaad altijd breed in plaats van diep. Dus niet meteen de details waardoor je het overzicht kwijt raakt. Door eerst breed te oriënteren krijg je meteen een idee van wat er kan en waar mogelijke problemen kunnen ontstaan, om daar vervolgens diep te gaan om een eventuele bug te vinden. Het blijkt dat er ook een naam is voor deze manier van testen heb ik onlangs ontdekt. Namelijk Lévy Flight. Dat is net als een haai die eerst lange stukken zwemt, terwijl hij observeert, ontdekt waar een mogelijke prooi kan zitten en daar dan opeens diep gaat om toe te slaan. Bekijk dit plaatje maar eens.”

levy flight

En de requirements, daar hoor ik je helemaal niet over?

James: “Die ontdek je al testend. Door te leren wat het object kan bedenk je de testgevallen. Ik had natuurlijk ook eerst het 30 pagina tellende requirements document kunnen gaan zitten lezen hier vanavond, maar dat was niet zo leuk geweest voor het publiek.”

Maar managers willen toch dat je de requirements test?

Oei, blijkbaar is dit tegen het zere been van James. Hij kijkt opeens een stuk serieuzer en er komt een andere blik in zijn ogen.

James: “Wie zegt dat? Heb je dat op een achterkant van een boek gelezen of zo? Jij speelt nu de manager van de RAW applicatie die dat wil”, zegt hij tegen de ietwat geschrokken vraagsteller. “Heb jij zelf de requirements gelezen? En staat daar dan in dat dit product mag crashen? Nee? Oh, dus dan zijn er blijkbaar ongeschreven requirements”.

James gezicht loopt enigszins rood aan. Hij is even stil en hij kijkt de “arme” vraagsteller even indringend aan. Je ziet James denken. Laat ik het hierbij of pak ik door. Hij besluit voor het laatste.

James: “Ik test op deze manier om het product en de requirements snel te leren begrijpen. Ik test even en lees daarna de requirements, daarin herken ik wat ik net gezien heb tijdens mijn korte testsessie, ik test weer even, lees weer even, test weer wat. En zo komen de eisen veel beter bij me binnen. Omdat ik ze begrijp.”

James zijn stem wordt nog wat harder.

James: “Er zijn mensen die zeggen dat je eerst de requirements moet lezen, dan de testcases moet maken, dan de procedures moet opstellen, dan de test moet automatiseren en vervolgens de testen moet uitvoeren. Weet je wat ik tegen die mensen zeg…. Nou? You are a f*cking idiot. And then I will punch him in the face”.

james 4

De zaal is even muisstil. We weten even niet of we nou moeten lachen of dat we even wijselijk onze mond moeten houden. We kiezen voor de tussenweg door wat schaapachtig te grijnzen en we zijn allemaal heel blij dat wij die vraag niet hebben gesteld. Maar de vraagsteller blijkt niet zomaar uit het veld te slaan. Hij stelt gewoon nog een vraag. Wat een lefgozer.

Maar wat nou als de manager zegt dat ik iets niet moet testen omdat het niet in de requirements staat?

James kijkt wat verbouwereerd de zaal in. “Is this for real?” zie je hem denken.

james 5

James: “Fight your manager!!! Wie schreef die requirements? Je manager kan dat wel zeggen, maar de opsteller van die requirements waarschijnlijk niet. We hebben de plicht als kundige testers om te wijzen op de niet vastgelegde eisen.”

De spanning is voelbaar, maar gelukkig is er een verstandig persoon in het publiek die de richting van het gesprek weet om te buigen met een hele onschuldige vraag waarvan James weer tot rust komt.

Wat is het leukste aan testen?

James: “Wat ik het leukste aan testen vind is dat het enorm complex is en dat ik tooltjes kan en mag maken waarmee die complexiteit verdwijnt. Ik vind het ook fantastisch om testers te laten zien dat ze slimmer zijn dan ze denken. Het moment dat je ziet dat ze dat ontdekken is onbetaalbaar en daarom ben ik ook zo graag een leraar. Ons vak zit vol met mensen die niet kunnen vertellen wat ze als tester allemaal kunnen en doen, terwijl ze waarschijnlijk gewoon hele goede testers zijn. Een tester is methodisch en analytisch, maar dat hoeft net. Empatische testers zijn ook belangrijk. Die voelen het product aan. Ze weten niet wat en hoe ze het testen, maar ze vinden wel bugs. Eerst begreep ik deze testers niet echt. Maar door deze testers te observeren heb ik geleerd dat emotie ook belangrijk is. Als je te analytisch ben schiet je soms je doel voorbij.”

De laatste vraag. Mensen observeren terwijl ze testen. Waarom helpt me dat?

James: “Je ziet dingen die je zelf ook doet, waarvan je je afvraagt  waarom je die dingen zelf ook doet. En je ziet dingen die je zelf niet doet, waarvan je je afvraagt waarom he die dingen zelf niet doet. Niemand gaat je vaardigheden als tester waarderen als je niet eerst leert je eigen vaardigheden te waarderen door jezelf en anderen te observeren.”

En met die ware woorden is de avond voorbij. Want James heeft helemaal gelijk. Door hem de hele avond te observeren ben ik mijn eigen testvaardigheden (weer) meer gaan waarderen en heb ik een hoop geleerd.

James Bach. Een mooi figuur. Hij ligt je of hij ligt je niet. Maar hoe je ook over hem denkt, het is en blijft een fenomeen.

james 6