NieuwsMagazine

Agressie(f) testen

Door: Gerben de la Rambelje
Auteur: Nathalie Rooseboom de Vries – van Delft ● funtestic.fanatic@gmail.com
Nathalie Rooseboom de Vries - van DelftIn december 2016 bezocht ik de Agile Testing Days in Potsdam, Duitsland. Een conferentie die ik overigens ook van harte kan aanbevelen aan testers, die niet noodzakelijkerwijs in ‘agile’ werken.  Het is een conferentie die is overladen met activiteiten voor plezier en leren, allemaal in een zeer goede balans gemengd en met een buitengewone betrokkenheid van de bezoekers.
Tijdens één van de pauzes kwam het onderwerp ‘bloggen’ ter sprake en dan vooral hoe lastig het is om goede onderwerpen te vinden. Eén van de gesprekspartners vroeg me dan ook hoe ik voor deze column aan het onderwerp kwam en ik zei, met een beetje bravoure: ‘dat de onderwerpen zich voornamelijk aandienden, die ik in mijn dagelijkse leven meemaakte’. Dat het onderwerpen zijn die ik bedenk naar aanleiding van bijvoorbeeld een artikel dat ik lees (niet altijd testmagazines trouwens) en dat het zelfs soms bepaalde woorden of frasen kunnen zijn, waarvan ik denk: hé, dat is interessant voor een blog.
De betreffende gesprekspartner, ik noem geen naam, maar het is een wereldkampioen testen, zei vervolgens ergens in het vervolg van het gesprek: ‘De agressieve tester of agressief testen’. Het leek hem wel interessant wat ik daar van zou maken en zo geschiedde het… deze column draag ik op aan die betreffende wereldkampioen en ik neem hiermee de uitdaging aan!
Eerste definitie Agressie testen
Om te beginnen ben ik op zoek gegaan naar een heldere definitie over agressie. Eén van deze definities luidt: ‘Agressie is gewelddadig gedrag dat wordt gebruikt om schade aan te brengen aan een ander. Dit kan zowel door middel van fysiek geweld zijn, als door dreigen of domineren. De vertaling die ik dan maak naar testen wordt dan: ‘Agressief Testen is een vorm van testen die erop gericht is om zoveel mogelijk schade toe te brengen aan het systeem onder test. Dit kan door middel van fysiek geweld of door dreigen en domineren.
Nu is fysiek geweld bij zoiets als softwaretesten een vrij lastig begrip. Software is niet iets dat je letterlijk fysiek geweld kan aandoen, immers fysiek geweld is meer iets voor hardware. Zoals bijvoorbeeld in het voor velen reeds bekende YouTube filmpje: https://www.youtube.com/watch?v=RZfwuCjbBDk. Testen met fysiek geweld is ook gangbaar bijvoorbeeld bij straatmeubilair, verkoopautomaten en beschermingsmiddelen. Wanneer iets ‘hufterproof’ moet zijn of moet worden beschermd tegen geweld, dan ondergaan de voorwerpen in kwestie een uitgebreid scala van tests die gerust onder de noemer ‘agressief testen’ geschaard kunnen worden. Ze hebben heel duidelijk het doel om zo veel mogelijk schade toe te brengen.
Tweede definitie Agressie Testen
Ook ‘dreigen en domineren’ blijkt een lastig begrip bij software testen. Zolang het geen ‘voice controlled’ software betreft, heeft het ook weinig nut als ik een vloek of schuttingtaal gebruik (een leuk filmpje hiervan is trouwens:  https://www.youtube.com/watch?v=KjOEokudZs4 ). Net zo min dat het nut heeft om een bedreiging te uiten als: ‘Als je nu dit niet doet, dan de-installeer ik je!’. Ik pas daarom de definitie voor deze gelegenheid aan naar: ‘Agressief Testen is een vorm van testen die erop gericht is om zoveel mogelijk schade toe te brengen aan het systeem onder test’.
Je kan ‘testen’ op aantal manieren zien:

  1. Als een groep van activiteiten die je uitvoert om zo veel mogelijk fouten te vinden;
  2. Om aan te tonen dat een systeem goed genoeg is om het werk te doen waarvoor het gemaakt is;
  3. Om op een lerende manier uiteindelijk een advies uit te brengen over de kwaliteit (waarde voor iemand) van de software zichtbaar te maken.

Het lijkt erop dat het bij ’testen’  juist niet gaat om zoveel mogelijk schade toe te brengen. Al zijn er wel testactiviteiten, testsoorten en/of testvariaties, die er specifiek op gericht zijn wel degelijk het systeem onderuit te brengen.
Derde definitie Agressie Testen
Denk maar aan ‘ethical hacking’ en ‘stress testen’.  Zouden dit dan vormen van ‘agressieve testen’ kunnen zijn? Dan zou de definitie dus beter kunnen zijn: ‘Agressie Testen is een verzameling van testactiviteiten die er op gericht is om zoveel mogelijk schade aan te brengen aan het systeem onder test’. Met andere woorden, het is net als ‘regressietesten’ een verzameling van diverse testsoorten dan wel variaties, die worden uitgevoerd om aan te tonen dat de software, die niet door de wijziging is geraakt nog steeds zo werkt als voorheen (= niet aan regressie onderhevig is geweest).
Toch is hier ook een kanttekening te maken. Een groep van testprofessionals zullen ongetwijfeld stellen: ‘Testers maken software niet kapot, software is al kapot wanneer het voor testen aangeboden wordt’. Ikzelf sta ook achter deze stelling overigens. Het is voor mij dan interessant om na te denken over welke activiteiten er nodig zijn de om software die (theoretisch) niet stuk is, tóch stuk te krijgen.
Code wijzigen is één van die dingen die met grote zekerheid kunnen leiden tot kapotte software. Als ik dus als tester de code kan wijzigen (niet als ontwikkelaar uiteraard), dan is dat geen goede zaak. Hoewel het theoretisch een valide testactiviteit zou kunnen zijn, lijkt het me desalniettemin een test die ik niet zo snel zou uitvoeren en hij lijkt me, in relatie tot andere testactiviteiten, minder nuttig.
Vierde definitie Agressie Testen
Wat dan wél kan, is niet zo zeer schade aan brengen aan de software onder de test zélf, maar aan de organisatie dan wel het geautomatiseerde proces, waar de software gebruikt gaat worden. Hiervoor moet de definitie dan weer aangepast worden naar: ‘Agressie Testen is een verzameling van testactiviteiten die erop gericht is om zoveel mogelijk schade toe te brengen met behulp van het systeem onder test’. Ik heb overigens bewust nu niet het lijdend voorwerp waar de schade aan toegebracht kan worden benoemd. Dit omdat het afhankelijk kan zijn van de context waarin deze software gebruikt wordt. Het kan een organisatie, een persoon of proces zijn bijvoorbeeld, maar ook ‘de maatschappij’ is een optie.
En met deze definitie zou ik wel uit de voeten kunnen en kan ik al, naast het ‘ethical hacken’ en ‘stress test’, redelijk wat bedenken qua testscenario’s en/of test stories.  Ik ben benieuwd naar andere ideeën die jij als lezer hebt bij de (laatst) gegeven definitie van ‘agressief testen’.
Voorbereiding om ‘Agressief’ te kunnen testen
Overigens heb ik wel een beproefde manier gevonden om mezelf voor het  ‘Agressief Testen’ voor te bereiden (cooling down overigens daarna wel verplicht!). Men doet een hoodie aan met de muts zo ver mogelijk over het hoofd getrokken, zodat het gezicht in een grimmige schaduw is gehuld. Het helpt als kleding zo donker mogelijk van kleur is. Voor de aanvang van de test moet men muziek opzetten die de betreffende testers behoorlijk irriteert, het liefst op een geluidssterkte zodat men elkaar nog net kan verstaan. Tijdens de kick-off sessie van deze test is het belangrijk om elkaar te voeden met gedachten over ‘snijdende automobilisten’, ‘oude dametjes die met het boodschappenkarretje herhaaldelijk tegen uw enkels rijden bij de kassa-rij’ of ‘jengelende en dreinende koters (die bij voorkeur niet van jouzelf zijn)’.  Deze voorbereiding zou de tester(s) in de juiste agressieve stemming moeten brengen.
Klinkt absurd? Het écht absurde is dat dit daadwerkelijk in de praktijk al diverse malen een beproefde manier is om agressief gedrag op te wekken. Voor de eerste hulpverleners is het namelijk, helaas steeds vaker noodzakelijk te oefenen met patiënten en omstanders die agressie uiten; daar gebruiken ze toetsen in het omgaan met agressie (Agressie Testen): http://sire.nl/campagnes/handen-af-van-onze-hulpverleners. Dat betekent ook dat ik als ‘nepslachtoffer’ (in Nederland ook LOTUS® genaamd), regelmatig een agressief persoon moet spelen en dat gevoel moet opwekken, want gelukkig hebben de meeste Nederlanders én softwaretesters moeite (écht) agressief te worden.

2 reacties

  1. Leuke post, interessant om hier eens over na te denken.
    Wat me direct te binnen schoot was een artikel in de Quest van een paar maanden terug (althans, daar ga ik even vanuit – het nummer zat in de leesmap bij m’n schoonouders). Hierin ging het over hufterigheid en agressie. Wat hier ook in naar voren kwam is assertiviteit; feitelijk een sociaal acceptabele manier om je zin te krijgen, sociale agressie dus.
    Als we ‘agressie’ dus beschouwen als ‘gedrag gericht op je zin krijgen’, betekent dat bv. ook dat als je een bug vind die jij van belang acht, je op zoek gaat naar het scenario waarbij er de meeste schade wordt aangericht. Voorbeeld; je vind een bug waardoor er in een database een record kwijt kan raken. Je kunt dan een reproductie scenario maken waarbij er 1 record verloren gaat. Of je zoekt / creëert een scenario waarbij er 100’en records verloren gaan…ook dit zou je kunnen beschouwen als ‘agressief gedrag’ (vinger omhoog als je ooit wel eens een reproductie scenario zo gekozen hebt dat de aangerichte schade maximaal was). Hierbij vertoon je als tester dus ‘agressief gedrag’ om de severity van een bevinding te onderstrepen.

  2. Hallo Robin, Dank je wel voor je reactie. Leuke invalshoek ook! Ik kan me zo voorstellen dat als je een bevinding doet en men doet het af als ‘het valt allemaal wel mee’ dat je een scenario maakt waar je mee aantoont dat het ‘helemaal niet mee valt’. Dan is het natuurlijk wel een gevaarlijke balans tussen wat – naar eigen oordeel dus- daadwerkelijk zal voorkomen versus wat nagenoeg nooit voorkomt. Dat doet me dan ook weer nadenken over of er zoiets dan is als ‘manipulatief testen’; waarmee je bepaalde besluit- of oordeelsvorming kunt sturen…:-)

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *