Utforskande testning

Utforskande testning är en stil för programvarutestning som betonar testarens frihet och ansvar att kontinuerligt förbättra sitt arbete genom att betrakta testrelaterad inlärning, testdesign, testutförande och tolkning av resultat som ömsesidigt stödjande aktiviteter, som pågår parallellt genom hela projektet."
Under tiden ett program testas, så lär sig testaren nya saker som kan användas för att tillsammans med erfarenheter och kreativitet komma på nya, bra tester att utföra.

Utforskande testning kan göras inom den grupp som utvecklar programvaran men också av en helt utomstående grupp

Historia
Begreppet myntades i början av 1990-talet av Cem Kaner och James Bach, förespråkare för den kontextdrivna skolan av testning. Själva aktiviteten har dock använts sedan testning började utföras, i det att en testare vanligtvis utför fler tester än de som finns beskrivna i testfallen. 
Begreppet har likheter med ad hoc-testning som dock fått en dålig klang, eftersom det ofta likställts med slarvig och ostrukturerad testning.

Beskrivning
Utforskande testning handlar om att se hur produkten fungerar, och utifrån det ställa frågor om hur den hanterar svåra och enkla fall.
Denna testning är i hög grad beroende av testarens skicklighet i att hitta på tester och upptäcka felaktigheter. Ju mer testaren vet om produkten och olika testmetoder, desto mer effektiv blir testningen.

För att förklara ytterligare kan man jämföra med motpolen skriptad testning (ibland även kallad manusbaserad testning), som går ut på att testfall designas innehållande vad som ska göras och förväntat utfall. Dessa utförs sedan av en testare som jämför det förväntade resultatet med det verkliga.
I utforskande testning finns det inga exakta förväntade resultat, utan det är upp till testaren att avgöra vad som ska kontrolleras, och kritiskt undersöka om resultatet är korrekt eller inte.
I verkligheten utförs i princip alltid en kombination av dessa metoder, men vanligen med slagsida åt det ena eller andra hållet.

Dokumentationen av utforskande testning kan sträcka sig från att alla tester dokumenteras, till att enbart de tester som resulterat i fel dokumenteras i form av buggrapporter. Vid partestning hittar två personer på nya tester tillsammans; en person utför testerna, medan den andra dokumenterar.

För- och nackdelar
Den stora fördelen med utforskande testning är att den kräver mindre förberedelse, snabbare hittar viktiga fel, samt är mer intellektuellt stimulerande och kreativ än skriptad testning.

Nackdelar är att de utforskande testerna inte kan granskas i förväg (och därmed förebygga implementation av fel i kod eller testall), samt att det kan vara svårt att visa exakt vilken testning som utförts (såvida den inte dokumenterats eller filmats.)

Vid upprepning av utforskande tester utförs de inte på samma sätt, vilket kan vara en fördel om man vill komma åt nya fel, och en nackdel om det viktiga är att en specifik sak fungerar.

Användningsområden
Utforskande testning är viktigare om krav och specifikationer är ofullständiga, eller om tidspressen är mycket hög. Metoden kan även användas för att kontrollera att tidigare utförd testning hittat de allvarligaste felen.
Det är vanligt att man utför en kombination av utforskande och skriptad testning där val av metod kan baseras på risk.

Ett exempel på utforskande testning är Microsofts användning av metoden för att verifiera kompatibilitet med Windows.

Se även
Ad hoc-testning

Referenser

Noter

Källor 
ISTQB: Certified Tester, Foundation Level Syllabus
Exploratory Testing Explained

Programutveckling
Programvarutestning