Innehåll
|
TestledningUppdaterad 2018-09-30
Nytt år och ny certifiering. I fjol certifierade jag mig inom PMP och i år tänkte jag ge mig på ISTQB Expert Level Test Manager. ISTQB står för International Software Testing Qualifications Board, en ideell organisation som syftar till att definiera och samla kunskap om test, certifiera testare baserat på best practices, knyta samman testare världen över samt uppmuntra forskning och utveckling. ISTQB är en välkänd organisation och en certifiering på CV:t närmast ett måste för den som vill göra karriär inom test. Det bör påpekas att test är ett svagt definierat område med få etablerade standarder och att du inte bara kan ta med dig din verktygslåda till en ny kund och börja testa. Det hjälper inte att vara expert på ett område om du inte kan förstå och göra dig förstådd i resten av projektet. Som konsult har jag behövt lära mig varje ny kunds syn på test och "översätta" deras vokabulär till min egen för att kunna prestera. Lyhördhet, tydlighet och pragmatism är tre nyckelord för att lyckas. Därmed inte sagt att en certifiering är meningslös. Tvärtom ger den dig många nya insikter och idéer som, om du lyckas integrera dem i ditt testarbete, gör dig till en ännu bättre testare. Precis som jag gjorde när jag studerade till PMP ämnar jag därför knyta samman teori och praktik och relatera det jag lär mig till det jag gör (eller borde ha gjort). Men låt oss börja från början. Certifiering steg för stegCertifieringskravFör en certifiering som ISTQB Expert Level Test Manager krävs följande:
Se ISTQB:s hemsida för detaljer. StuderaFör att studera till examen rekommenderas följande böcker. De uppdateras regelbundet så var noga med att studera de allra senaste utgåvorna.
Det är dessa böcker som jag nedan kommer att sammanfatta och reflektera över. Boka examenExamen kan bokas antingen hos SSTB eller hos någon som erbjuder kursen. (Examen kan tas i samband med kurs eller med enbart självstudier.) Ta examenExamen består av två delar:
Underhåll certifieringenCertifieringen gäller i fem år. Efter denna tid måste du antingen ta en ny examen eller uppnå minst 200 så kallade CEC (Certification Extension Credits). CEC kan erhållas lite som PMI-certifieringens PDU, alltså genom att arbeta som testledare, delta i testkurser eller själv hålla i testkurser. Bevis på CEC måste skickas till The Certification Extension Program hos ISTQB men i skrivande stund är denna process inte fastställd ännu. Advanced Level Syllabus - Test ManagerLåt oss börja med att repetera Advanced Level Syllabus - Test Manager. Observera att det finns tre spår på Advanced-nivån och att Test Manager har en egen Syllabus fr o m 2012. Tidigare (2007) fanns det bara en Syllabus där de tre spåren omfattade olika kapitel. Om du, liksom jag, studerade den gamla versionen när du tog Advanced-certifieringen så bör du läsa igenom den nya versionen till din Expert-certfiering. 1. TestprocessenAdvanced Level Syllabus börjar med en översikt över de grundläggande testaktiviteterna:
Det här kapitlet utvecklar testaktiviteterna från Foundation-nivån såtillvida att Analys och Design har blivit två separata aktiviteter och så också Implementering och Exekvering. Innehållet i aktiviteterna är dock vanligt förekommande på alla testprojekt. Jag har inte lett något testprojekt där jag INTE utfört allt detta så kapitlet är bra som en checklista inför ett nytt testprojekt. Den viktigaste aktiviteten för en testledare är planeringen, som lägger grunden för framgångsrika tester, och den får därför en egen del i kapitel 2.
2. Testledning2.2 TestsammanhangKapitel två inleds med en översikt över det sammanhang som en testledare verkar i:
Sammanhanget styr också behovet av testnivåer, såsom de vanliga enhets-, integrations-, system- och acceptanstesterna men också tester av hårdvara, interaktion mellan funktioner och integration med kundprodukter. För varje testnivå bör följande definieras:
Översikten avslutas med en diskussion kring alternativa tester:
Kapitlet fångar det som är både utmanande och stimulerande med att vara testledare: att få arbeta i ett omfattande kontaktnät med många beroenden. Listorna ovan kan med fördel användas som checklistor för de saker som du som testledare bör förstå så tidigt som möjligt i ditt projekt. Om något skulle saknas är det än viktigare att du förstår vilka konsekvenser det får. Jag har t ex jobbat med tester där en tydlig testbas saknas. Det är då viktigt att engagera såväl utvecklare (för att förstå systemet och bygga testfall därefter) som användare (för att förstå förväntningar och bygga förväntade utfall därefter).
2.3 Riskbaserade testerNästa del av kapitlet diskuterar utmaningen i att prioritera tester. En ansats är riskbaserade tester, som fokuserar på produktrisker (snarare än projektrisker) genom följande aktiviteter:
Till de informella riskbaserade testerna hör utforskande tester, där testaren analyserar risker. Dessa riskerar dock att fokusera mer på sannolikhet än påverkan och på testarens kunskap snarare än övriga intressenters. Bättre är då de så kallade lättviktstekniker som kombinerar informella fördelar (flexibilitet) med formella fördelar (konsensus). Till dessa hör PRAM (Pragmatic Risk Analysis and Management), SST (Systematic Software Testing (SST) och PRisMa (Product Risk Management) med följande typiska egenskaper:
Till så kallade tungviktstekniker hör följande:
Riskbaserade testers framgång baseras på följande:
Utöver risk finns det andra kriterier för prioritering av tester:
Jag ska erkänna att jag är lite tveksam till riskbaserade tester. Konceptet låter bra men min erfarenhet är att kravbaserade tester med väl formulerade och prioriterade krav gör riskbaserade tester överflödiga. Om det finns risker som INTE är täckta av kraven så är det väl kraven det är fel på? Däremot tror jag att själva risktänkandet är viktigt att ta med sig in i varje nytt projekt. Vilka risker står kunden inför? Den frågan kan enkla modeller som Porter's femkraftsmodell svara på. Vilka av dessa risker syftar det nya systemet till att bemöta? Svaren på den frågan underlättar kontakterna med intressenterna. Hur väl täcker systemkraven systemets syfte? Ta med dig den frågan till din kravgranskning. Du kommer att finna att testarbetet sedan inte bara blir lättare utan också roligare då du förstår mer om det sammanhang du tester i.
2.4 TestleverablerISTQB definierar sex huvudsakliga testdokument:
För certifieringsexamen är det viktigt att kunna skilja på ovanstående dokument. I verkligheten är det dock viktigare att förstå vilka dokument och vilket innehåll som förväntas. Konsultbolag har ofta egna mallar att utgå från men inte ens mina kolleger känner igen dem utan har egna uppfattningar om hur de bör se ut och det gäller förstås i än högre grad kunden. Därmed inte sagt att man ska ignorera egna mallar utan använd dem som checklista och förbättra de föreslagna mallarna vid behov. Det finns ingen mall som täcker alla tänkbara behov så egna initiativ är alltid uppskattade.
2.5-2.6 Estimering och mätetalEstimering är svårt och det gäller inte minst test med alla dess beroenden:
Metoder för estimering inkluderar intuition, nedbrytning (WBS), standarder, historik och relationer till andra nyckeltal (projekttid, antal utvecklare etc.). Vad gäller mätning av test så anger ISTQB fyra kategorier:
För testledaren gäller det att definiera, fånga upp, validera och rapportera mätetal på ett sätt som är effektivt och rättvisande. Förutom rapportering så används mätetalen också till analys av trender och kontroll av korrigeringar. Mätetalen kan spegla fem huvudsakliga dimensioner:
I tillägg till dessa kan mätetal också knytas till testaktivitet, t ex mått av kravtäckning under testplanering antal testvillkor identifierade under testanalys. Att estimera test motsätter lite syftet med test. I den perfekta av världar ska ju test utföras till kvalitetskraven uppnås, inte tills tiden tar slut. Men världen är ju som sagt inte perfekt och tid är ofta en orubblig begränsning. I mina estimeringar försöker jag utgå från systemets komplexitet, bryta ned det i testbara delar och väga in komplexitet. Här är dialogen med utvecklarna oerhört viktig då de inledningsvis vet mest om systemet. Därefter kan övriga "mjuka" faktorer på ISTQB:s lista vägas in. För att lyckas med detta är förväntningar oerhört viktiga, både dina (t ex på resurser och testmiljö) och andras (t ex krav på testdokumentation och stöd i andra delar av projektet). Se till att få dessa dokumenterade och godkända! Det svåraste att estimera, och som av någon anledning inte nämns av ISTQB, är kvaliteten på det som ska testas. Det hjälper inte hur bra testerna är planerade om de blockeras gång på gång p g a dålig kvalitet. Tyvärr är kvaliteten svår att estimera så räkna med att behöva testa i minst tre rundor (med en rejäl ledtid för initiala problem innan testerna kommer igång ordentligt) och lär av erfarenheterna till nästa testcykel. Vad mätetal beträffar så är det viktigt att också förväntningarna på dessa klargörs. Om inga förväntningar finns (vilket är så vanligt att jag ofta undrar om någon läser min testrapport) så välj ut några som ger dig som testledare en bra bild av testerna. Se senare beskrivning av testverktyg för mina favoritmätetal och hur jag fångar dem under test. Mätetalens syfte är trots allt inte att göra snygga grafer efter testerna utan att analysera och reagera på under testerna.
2.7-2.9 Värde av testDe sista delkapitlen i kapitel 2 diskuterar värdet av test, såväl det kvantitativa (hitta eller åtminstone identifiera defekter före driftsättning) som det kvalitativa (förbättrat rykte, minskade risker etc.). Ett begrepp i sammanhanget är kvalitetskostnad:
Om kostnaden för externt misslyckande är högre än de för upptäckande och internt misslyckande (typiska testkostnader) så kan test påvisas vara lönsamt. Delkapitlen fortsätter med att diskutera distribuerade tester (test av anställda på olika platser), utlokaliserade tester (test av utomstående på olika platser) och inlokaliserade tester (test av utomstående på samma plats som projektet). För att lyckas med dylika tester krävs väldefinierad kommunikation, samordning av metodologi, tydliga förväntningar samt ömsesidigt förtroende. Delkapitlen avslutas med en översikt över standarder som en testledare bör känna till:
Test kan också påverkas av standarder inom mjukvarutveckling (t ex CMMI:s processområden verifiering och validering) eller projektledning (t ex PMI, PMBOK och PRINCE2). 3. GranskningarKapitel tre tar upp granskningar, en typ av statisk test i syfte att eliminera fel innan de implementeras och når de dynamiska testerna.
Granskningar utförs lämpligen i samband med milstenar, t ex färdigställande av krav. Planeringen bör omfatta vad som ska granskas, av vem samt vilka risker som ska täckas. Insatsen för granskningar kan vägas mot kostnaden för att avstå (se kvalitetskostnad ovan). Mätetal kan användas för att utvärdera det granskade objektets kvalitet samt kostnader och fördelar med granskningen. För mer formella granskningar används definierade in- och utträdeskriterier, checklistor, överenskomna leverabler samt mätetal - som den typiska testprocessen alltså. Jag håller inte riktigt med om att granskningar ska utföras i samband med milstenar eftersom felen då hittas försent. Som testare vill jag inte vänta ytterligare på kraven tills granskningarna genomförts. Bättre då att bygga in löpande granskningar allt eftersom kraven fastställts. Vad formella granskningar beträffar så har alla jag varit med om slutat på samma sätt - jag presenterar hur mina tester dokumentation och hör sedan aldrig av granskarna igen. Förhoppningsvis betyder det att de varit nöjda men det vore trevligt att få återkoppling och använda granskningsresultaten så som de är tänkta att användas - till förbättringar.
4. DefekthanteringKapitel fyra diskuterar hanteringen av avvikelser, när de väl upptäckts. En skillnad görs mellan "falsk-positiva" felrapporter (som visar sig inte vara defekter) och "falsk-negativa" (defekter som aldrig blir felrapporterade). De förra påverkar testeffektiviteten medan de senare påverkar upptäcktseffektiviteten och försök att minska den ena ökar i regel den andra.
En defektrapport bör ge information för hantering av defekten, utvärdering av projektstatus (produktkvalitet, testpåverkan etc.) samt utvärdering av processförmåga (förmåga att förbättra test- och rättningsprocess etc.)
Informationen i defektrapporterna kan användas för att förbättra testprocessen enligt följande:
En bra defektprocess kräver såväl ett bra testverktyg (t ex ALM) som välinformerade användare (såväl testare som tekniker). SISU ("skit in skit ut") gäller i högsta grad defektstatistik så fundera före testerna vilken statistik du vill ha och skapa defektparametrarna därefter. Gör också en avvägning mellan de olika parametrarna och välj ut de viktigaste. Det är bättre att du får några väl ifyllda mätetal än många slarviga. Lyckas du med detta kan du få ut mer av defektprocessen än att "bara" rätta defekter.
5. Förbättra testprocessenMycket i det här kapitlet gås igenom i detalj i Expert Syllabus. Nivåmodeller som TMMi (Test Maturity Model Integration) och TPI Next jämförs med kontinuerliga modeller som STEP (Systematic Test and Evaluation Process) och CTP (Critical Testing Processes) De förra är processreferensmodeller, som inkluderar mognadsutvärderingar, medan de senare är innehållsreferensmodeller, som fokuserar på affärsdrivna utvärderingar.
Förbättringar grundar sig på Demings planeringscykel Planera-Gör-Kontrollera-Agera (Plan-Do-Check-Act). Mer specificerad är IDEAL-modellens cykel Initiera-Diagnosticera- Etablera-Agera-Lär. Jag brukar inta en avslappnad attityd till metoder eftersom de är lite grann som trafikregler, det hjälper inte att du följer dem om ingen annan gör det. I stället använder jag dem som checklistor och inspirationskällor. Se till att du känner till begreppen, både till examen och i diskussioner med andra testledare, men låt dem inte fördunkla ditt eget omdöme. Dock har jag nyligen blivit medlem 1847 i TMMi Foundation så kanske ändrar jag uppfattning inom kort...
6. Testverktyg och -automatiseringTill testledarens uppgifter hör att välja ut testverktyg.
Precis som alla investeringar bör val av testverktyg baserat på en avkastningsanalys (ROI):
För valet bör testledaren beakta följande egenskaper:
Vidare måste testledaren hantera alla faser i verktygets livscykel, d v s införskaffande, underhåll, vidareutveckling och utfasning. Avslutningsvis ska testledaren naturligtvis se till att verktyget utnyttjas fullt ut, inte minst vad gäller de mätetal som verktyget kan fånga upp. Det här kapitlet är nog mer relevant för permanenta testledare än för konsulter som jag. De flesta organisationer man kommer till som konsult har redan ett testverktyg (företrädesvis ALM) som man får förhålla sig till. Det viktiga är då inte att välja utan att anpassa det som finns. Se till (kräv!) att få administratörsrättigheter och våga föreslå arbetssätt som utnyttjar verktyget till fullo.
7. Testkunskaper och lagarbeteDet avslutande kapitlet tar upp testledarens medarbete - testarna. Följande färdigheter bör bedömas vid valet av testare:
Utöver ovanstående tekniska färdigheter är interpersonliga färdigheter (kommunikation, samarbete etc.) viktiga för testarna. För testledaren tillkommer projektledningsfärdigheter (planering, rapportering etc.). För teamet som helhet gäller att färdigheterna matchar det specifika testprojektets behov samt att individuella styrkor och svagheter balanseras mot varandra. En utvärderingsmatris kan användas för att utvärdera medarbetarnas färdighetsnivå inom olika områden.
Kapitlet fortsätter med en genomgång av själva testfunktionens olika beroendenivåer:
Till en testledares uppgifter hör också att motivara testarna:
Då test är beroende av så många andra delar av projektet är det viktigt att prestationerna mäts inte av projektets framgång utan att testspecifika mätetal. Det är därför viktigt att testledaren förmår motivera testarna även om projektet i stort har problem. Avslutningsvis tar Advanced Syllabus upp vikten av god kommunikation:
Diplomati och objektivitet är viktiga egenskaper i kommunikationen. Vidare måste kommunikationen vara effektiv (anpassad till målgruppen) och hänsyn tas till hur kommunikationen uppfattas. Kapitlet tar upp viktiga aspekter av teamarbete som inte är specifika för test. Jag skulle vilja lägga till vikten av att förstå intressenters förväntningar också. Jag har nämligen jobbat med att sätta ihop testteam från CV:n och intervjuer där jag vinnlagt mig om att hitta en bra blandning av just tekniska färdigheter (funktionella, tekniska, manuella och automatiserade tester) som personliga (pådrivare, motiverare, utförare och granskare). När jag var klar tyckte jag att jag hade ett välbalanserat team, varpå kundens representant ändrade kraven så att jag fick börja om från början. Först senare förstod jag att orsaken var en dold agenda där representanten bevakade sina egna intressen och därför inte ville ha in testare från mitt företag. Ett annat exempel på vikten av att förstå förväntningar utgjorde ett projekt där det interna teamet (utvecklare och projektledare) förväntade sig halvfärdiga komponenter efter varje iteration medan det externa teamet (kundrepresentanter) förväntade sig färdiga delar. De senare reagerade därför på de uppriktigt rapporterade defekterna och gav upphov till en hel del förtroendeproblem som hade kunnat undvikas om förväntningarna först jämkats ordentligt.
Expert Level Syllabus - Test ManagerLåt oss fortsätta med att studera Expert Level Syllabus - Test Manager. 2. Förbättra testprocessenKapitel två diskuterar vikten av att förbättra testprocessen i tre sammanhang:
Det här är inga nyheter för mig som är van vid att test kläms mellan förseningar i föregående projektfaser och krav på att ändå leverera i tid. Det har också förekommit att jag tagit med mig den kunskap om systemet jag byggt upp under testerna för att ge förvaltningen stöd och då sett vådan av att inte tänka på det sammanhang som systemet ska fungera i. Det bästa råd jag kan ge är att hålla på integriteten och ständigt lyfta fram faran med att "ta sig genom en tunnel så snabbt som möjligt" men var beredd på att du måste stånga dig blodig för att lyckas med det. Hur ska man då förbättra testprocessen? ISTQB talar om Software Process Improvement (SPI). Detta handlar just om att förbättringar av testprocessen måste omfatta mer än bara test, t ex infrastruktur, utbildning och andra projektfaser, såsom kravställande och utveckling. Vidare diskuterar ISTQB fem typer av kvalitet: Produkt, Tillverkning, Användare, Värde och Överskridande ("Product", "Manufacturing", "User", "Value", "Transcendent"). Vilken typ av kvalitet som är viktigast beror på sammanhanget - säkerhetskritiska branscher föredrar produkt - och tillverkningskvalitet medan nöjesbranscher värderar användarmässiga och överskridande egenskaper högre. Hur uppnår man då kvalitet? Ett svar som ISTQB ger är Deming-cykelns kontinuerliga förbättring i fem steg: Planera, Utföra, Kontrollera och Agera ("Plan", "Do", "Check", "Act"). En praktisering av detta är förbättringsramverket IDEAL (Initiera, Diagnosticera, Etablera, Agera, Lär). En annan är The Fundamental Concept of Excellence, som listar nio kriterier för kvalitet:
Ytterligare begrepp som tas upp är Six Sigma (låg tolerans mot kvalitetsbrister), Balanced Scorecard (mätetal för helhetssyn) och CMMI eller Capability Maturity Model Integration (guide för systemförbättring). Du behöver inte kunna allt detta utantill utan det räcker att du känner till begreppen. De ligger sedan till grund för testspecifika modeller, såsom processmodellerna TMMi (Test Maturity Model Integrated) och TPI Next (Test Process Improvement) samt innehållsmodellerna STEP (The Systematic Test and Evalution Process) och CTP (Critical Testing Process). Dessa modeller gås igenom i detalj i kapitel 3. Medan de modellbaserade ansatserna fokuserar på HUR man ska förbättra testprocessen så handlar analysbaserade ansatser om VAR man ska förbättra testprocessen. GQM (Goal-Question-Metric) är ett sådant exemple och flera gås igenom i detalj i kapitel 4. Kapitlet avslutas med en uppräkning av konkreta exempel på testförbättrande åtgärder. Fundera gärna över exempel från din egen testvardag.
3. Modellbaserade förbättringarSyftet med processmodeller är att identifiera mognadsnivåer och peka ut vägen dit. En mognadsnivå kan antingen vara stegvis ("staged") eller kontinuerlig ("continuous"). Ett exempel på den förra är TMMi (Test Maturity Model Integrated) som anger kritierier som alla måste vara uppfyllda för att en mognadsnivå ska anses uppnådd. De fem mognadsnivåerna är Initial, Managed, Defined, Management and Measurement och Optimization. Ett exempel på den senare TPI Next (Test Process Improvement) där enskilda kriterier kan väljas ut och olika mognadsnivåer i olika områden därmed uppnås. Syftet med innehållsmodeller är att förbättra test genom best practices. Modellen STEP (Systematic Test and Evaluation Process) bygger på idén att test genomsyrar hela projektcykeln och i likhet med TPI Next kan enskilda projektfaser väljas ut och förbättras. CTP (Critical Testing Process) å andra sidan påminner mer om TMMi såtillvida att kritiska testprocesser identifieras och prioriterade rekommendationer för förbättringar ges. Såväl kvalitativa som kvantitativa nyckeltal är viktiga i denna modell. Modeller och mognadsnivåer i all ära men de är svåra att använda i verkligheten. Jag har sett projekt där ambitiösa utvärderingar gjorts men sedan runnit ut i sanden eftersom mottagarna inte förmått ta till sig dem. Kanske beror det på att test fortfarande är en lite eftersatt disciplin inom systemutveckling och att testare kallas in först när det är dags att testa och alltså försent för att införa långsiktiga förbättringar? Däremot är testmodellerna, som så många andra modeller, bra att ha med sig som "verktygslådor" som man kan välja och vraka ur för att hitta dem som passar bäst till det specifika projektet. ISTQB refererar till många standarder från IEEE som kan vara bra att hämta inspiration från. (De är dock inte gratis.)
För förbättringar kopplade till verkliga problem är analyser lämpligare och om detta handlar nästa kapitel.
4. Analysbaserade förbättringarAnalysbaserade förbättringar skiljer sig mot föregående kapitels modellbaserade förbättringar genom att de baseras på verkliga problem snarare än generiska processmodeller. Däremot kan de kompletteras med innehållsmodeller för att utvärdera förbättringarna. Ett exempel på en analys är orsaksanalysen, som syftar till att identifiera grundproblemet snarare än symptomet.
En sådan här orsaksanalys kan vara ett mycket kraftfullt verktyg för att hitta och eliminera fel så tidigt som möjligt i ett projekt. Jag har dock stött på flera exempel där det missbrukas och avråder från följande:
En annan analys är GQM (Goal-Question-Metric). Den bygger på att man utifrån bestämda mål (konceptuell nivå) härleder frågor (operationell nivå) som svarar på hur målen nås och nyckeltal (kvantitativ nivå) som ger svar på frågorna. Som stöd för analysen föreslås flera nyckeltal:
5. Välja rätt ansats för testförbättringarKapitel 5 fortsätter diskussionen om förbättringar med riktlinjer för vilka man ska välja:
Blandade ansatser kan också komma i fråga, t ex orsaksanalys för att uppnå en mognadsnivå enligt TMMi. Som konsult gäller det att vara mycket lyhörd inför kundens krav och förutsättningar för att välja rätt i djungeln av förbättringsansatser. På ett projekt så hade ledningen idéer om standardiserade testprocesser medan mellancheferna såg mer till affärsnyttan för sitt område och användarna var fullt upptagna av sina omedelbara problem. Att jämka samman så olika förväntningar kräver ett stort mått av diplomati, pragmatism och tålamod.
6. Genomföra testförbättringarKapitel 6 baseras på IDEAL-ramverket som introducerades i kapitel 2. Initiera förbättringsprocessenInitiera förbättringsprocessen består av följande moment:
(De olika momenten är beroende av val av ansats för testförbättringar, se kapitel 5.) Diagnosticera nulägeDiagnosticera nuläge består av följande moment:
Etablera testförbättringsplanEtablera testförbättringsplan består av följande moment:
IDEAL-modellen skiljer på en långsiktig strategisk plan som integrerar testprocessförbättringar med övriga mjukvaruprocessförbättringar och en kortsiktig taktisk plan som fokuserar på test. Agera för att implementera förbättringarAgera för att implementera förbättringar består av följande moment:
Lär från förbättringsprogramLär från förbättringsprogram består av följande moment:
Ett exempel på hur det kan gå när IDEAL-modellen inte följs utgör ett projekt jag deltog i där ett strategiskt beslut om utlokalisering fattats över verksamhetens huvuden. Det första steget, initiering, hoppades därmed över i och med att det varken fanns behov av eller stöd för förbättringen och därmed inte heller någon organisation utöver projektet. Trots det gick vi vidare med diagnosticering och kunde då konstatera att verksamhetens mognadsnivå inte var tillräcklig för utlokalisering av testtjänster. Däremot kunde vi rikta in oss på ett specifikt behov av testautomatisering och styra in projektet på detta mer avgränsade men också mer accepterade spår. Tyvärr visade sig detta vara svårt att etablera eftersom vår ansats gång på gång möttes av ointresse. Kanske berodde det på att nyckelresursen, kundens testledare, visade sig vara på väg bort från företaget. Likväl så pressades projektet vidare (prestige, behov av att visa upp resultat?) och vi agerade alltså genom att flyga in utländska testare utan att ha några tydliga uppgifter eller utpekade mottagare av deras arbete så de fick nöja sig med att hoppa in som tillfälliga testare där det behövdes. Det säger sig självt att det inte fanns mycket att lära av detta men alla blev ändå nöjda: kundens strategiska beslut förverkligades, fler konsulttjänster såldes in och testarna fick erfarenheter, om än annorlunda sådana. Om inte annat så fanns det nu ett förbättringsbehov men då hade jag redan lämnat projektet...
7. Organisation, roller och färdigheterKapitel 7 introducerar begreppet testprocessgrupp, en permanent grupp bestående av specialister som förbättrar och följer upp problemområden i hela organisationen. IDEAL-modellen kompletterar med beskrivningar av hur grupper etableras på strategisk nivå ("Executive Council"), taktiskt nivå ("Management Steering Group") och problemspecifik nivå ("Technical Working Group"). För distribuerade organisationer är det viktigt att alla parter får information och möjlighet att återkoppla samt att hinder p g a kultur, tidszon etc. övervinns. Kapitlet fortsätter med en uppräkning av de färdigheter som de två rollerna testprocessförbättrare och utvärdere behöver:
Mycket av det som tas upp i det här kapitlet är nog självklart för de flesta med lite erfarenhet medan det för andra är för ytligt för att egentligen ge något stöd i det dagliga arbetet. Det jag ändå fäste mig mest vid var teorin om samberoende beteende. Hur ofta har jag inte själv befunnit mig i den situation som tas upp som exempel: att hantera orimliga testförutsättningar genom ett pragmatiskt förhållningssätt och helt enkelt testa så bra som möjligt. Tyvärr ger kapitlet bara tips på hur man upptäcker samberoende beteende hos andra (svar som "Jag gör mitt bästa", "Det finns ingen risk", "Det här är normalt"), inte på vad man gör när man själv tvingas till det beteendet. Min erfarenhet är att det gäller att balansera den integritet mot pragmatism och lyfta fram långsiktiga risker utan att för den sakens skull framstå som en bromskloss. Själva testexekveringen kommer alltid att befinna sig sent i projektcykeln och du kan inte räkna med att få testa under ideala förutsättningar.
8. Hantera förändringKapitel 8 diskuterar utmaningen att hantera en förändring. Den grundläggande förändringsprocessen består av åtta steg som kan appliceras också på testförändringar:
Kapitlet fortsätter med de mänskliga faktorerna i förändringsprocessen och beskriver två modeller som följer "forming-storming-norming-performing"-modellen (idén att förändringar genomgår kaos innan förbättringar uppnås:
Avslutningsvis listas ett antal faktorer att ta hänsyn till för att hantera emotionella reaktioner på förändringar:
Inte heller detta kapitel torde innehålla så många nyheter. Det finns dock många exempel på hur också de bästa intentionerna misslyckas därför att förändringarna inte hanterats rätt så vikten av detta kan inte nog betonas. Som testare har man ofta en unik position nära såväl leverantören av ett system som mottagaren av detsamma och därmed möjlighet att fånga upp brister i förändringshanteringen. I ett av mina första testprojekt befann jag mig i en sådan position där systemutvecklarna kämpade för att få ett supportsystem att fungera rent tekniskt medan processutvecklarna ritade diagram på en alldeles för hög nivå. Den första versionen till användarna var således ett system där de förväntades faxa (!) supportuppgifter utan någon rutin för hur supportärendet skulle behandlas. Redan då försökte jag hålla på min integritet och lyfta fram de brister jag såg, inte så mycket i system och process som i hur de stackars användarna behandlades. Tyvärr var jag för junior för att få gehör men jag kan åtminstone känna stolthet över att jag försökte.
9. Kritiska framgångsfaktorerI tillägg till förändringshantering finns det ytterligare två nyckelfaktorer för att lyckas med testförbättring: att börja och att sluta. Att börja innebär att man ska ha tydliga mål, stöd från ledningen, formell projektorganisation, dedikerade resurser, ambitioner mappade till organisationens mognad samt den tidigare nämnda förändringsprocessen. Att sluta innebär att man ska ha förutsättningar för att uppfylla målen (min kategorisering):
Kapitlet fortsätter med en genomgång av de kulturella sammanhang som behöver beaktas:
Som exempel på testansats anförs det agila manifestet:
Som ISTQB mycket riktigt anger så kan en agil ansats vara svår att sälja in i "konservativ" organisation van vid detaljerade processer. Jag upplevde ett sådant projekt där förutsättningarna (avsaknad av krav, regelverk under utveckling, ny teknisk lösning) framtvingade en agil ansats i nära samarbete med verksamhetsexperter, såväl i utveckling som i test. Testfallen fick således fokusera på att kontrollera att data flödade genom lösningen medan utfallet fick bekräftas av dessa experter. På lägre nivåer fungerade detta alldeles utmärkt men ju högre upp i organisationen man kom, desto mindre var förståelsen för detta och vi fick kämpa mot krav på V-modellens dokumenterade design och mätbara tester och den mur som ständigt byggdes upp mellan projekt och verksamhet. Utmaningen här låg alltså inte i att sprida ledningens vision om förbättringar till verksamheten utan att få ledningen att förstå verksamhetens förbättringsbehov!
10. Anpassning till olika livscykelmodellerDet avslutande kapitlet diskuterar hur kulturella sammanhang (se föregående kapitel) påverkar val av förändringsmetod. Ledningskultur påverkar acceptans för ansats, livscykelmodell påverkar acceptans för förändringsfrekvens och testansats påverkar acceptans för förändringstyp. Det betyder dock inte att t ex agilt arbetssätt krockar med modellbaserade ansatser utan alla ansatser kan används som referenspunkter. Det viktiga är att förbättringen fokuserar på följande:
Vad kapitlet alltså säger är att man ska anpassa teori till verklighet, vilket inte är en revolutionerande tanke. Den som har erfarenhet av systemutveckling vet att ingen metod utesluter idéer från andra metoder. Kapitlet pekar också på hur t ex V-modellens verifieringar och valideringar mellan faser påminner om SCRUMS retrospektiva möten genom att båda syftar till att identifiera förbättringar. Jag har mest jobbat med V-modellen men ytterst sällan upplevt att en fas är helt avslutat innan nästa tar vid. Jag har därför fått jobba agilt med det som gått att jobba med och sedan återvänt och justerat i takt med att krav och design justeras. Projekt är av naturen föränderliga och lika viktigt som det är att mottagarna förmår hantera förändringar, lika viktigt är det att de som levererar gör det.
The Expert Test ManagerDenna bok publiceras i april 2013 och jag hoppas kunna köpa och börja läsa den så snart som möjligt. Quality Center / ALMSäg testverktyg och de flesta testledare tänker nog på Quality Center, eller ALM (Application Life Cycle Management) som det numera heter. Syftet med denna sida är inte att berätta ALLT om ALM (det gör användarmanualen bättre) utan att ge tips om hur jag använder verktyget i mitt arbete. Förhoppningsvis hittar du något som hjälper också dig i ditt arbete. ÖversiktQuallity Center är i första hand ett administrativt verktyg som håller ordning på alla testdokument, deras inbördes relationer och status. Om du t ex vill skapa ett testfall så kan du göra följande:
Bilden nedan ger en översikt över hur de olika delarna hänger ihop: Hur gör man då för att få ihop alla dessa delar? Om detta handlar nästa kapitel. Förbered ALMNär jag börjar på ett nytt testprojekt brukar jag sätta upp ALM enligt följande: 1. Bestäm filstrukturALM organiserar testdokument i mappar och filer precis som Filhanteraren i OS X eller Windows Explorer i Windows. Fundera därför på hur ditt testprojekt bäst bryts ned i logiska delar och organisera mapparna därefter. Somliga föredrar enhetliga filstrukturer genom hela ALM så att testarna alltid ska känna igen sig när man navigerar. Jag föredrar dock att också andra än testarna ska känna igen sina delar och organiserar enligt följande:
En sådan filstruktur kan se ut enligt följande:
2. Förbered för mätetalVälj vilka mätetal du vill ha och gör vad som krävs för att få underlag till dessa mätetal. ALM har många olika kolumner som kan användas (och anpassas i Tools / Customize / Project Lists). Välj inte för många mätetal - ingen användare blir glad av att ange femtioelva parametrar varje gång något ska registreras och ju fler parametrar som missas, desto sämre blir dina mätetal. Här är några mätetal jag ofta använder med tillhörande parametrar i ALM. Bryt gärna ner dem ytterligare på funktionellt område etc. så att du lättare kan rikta in förebyggande och/eller förbättrande åtgärder.
För att sedan fånga upp dessa mätetal brukar jag använda mig av grafer: 3. Informera användarnaHur perfekt uppsatt ditt ALM än är så hjälper det inte om det bara är du som vet det. Se till att dina användare (såväl testare som utvecklare) vet vilka som ska användas och hur. Jag är en vän av processbilder kompletterade med skärmdumpar som visar ett testfalls väg från skapande via defekträttning till godkänt. Var särskilt noga med att klargöra överlämningspunkter mellan test och utveckling (tilldelning av ärenden, beskrivning av defekter och rättning, ändring av status etc.) så att inget faller mellan stolarna. En test- och defektprocess bör innehålla följande steg (men tänk på att anpassa den till ditt specifika projekts processer):
Ett exempel på enkla skärmdumpar finns i bifogad fil. Arbeta i ALMNu när både ALM och användare är förberedda är det bara att köra. Vi börjar med Requirements och arbetar oss genom alla moduler. 1. Requirements: Arbeta parallellt med krav och testfallEtt krav i Requirements är i princip en beskrivning, med möjlighet att bifoga bilder och dokument vid behov. För rent kravarbete så finns det bättre verktyg - det är kopplingen till testfall som gör ALM bra. Det är alltså inte omöjligt att kraven måste importeras till ALM. Om du har ett "perfekt" projekt där krav- och testarbete görs i rätt ordning och alla krav har frysts när testfallen börjar skrivas så kan du gratulera dig till din lycka. Om inte så se till att använda statusfält både för krav och testfall och länka samman dem allt eftersom de läggs upp i ALM. På så vis kan du löpande följa upp att alla krav täcks av testfall och vice versa. Lägg gärna upp "tomma" testfall (utan teststeg) i början och komplettera dem löpande. På så vis får du tidigt en uppfattning om testomfattningen och kan följa upp hur mycket jobb som återstår. Först när ett testfall försetts med teststeg och kopplats till ett fryst testfall bör du anse dess status vara "Klart". Din roll som testledare i kravprocessen är att se till att kraven är testbara och sedan fördela dem till din testare så att de kan skriva testfall. 2. Test Plan: Skriv effektiva testfallEtt testfall i Test Plan består av ett antal steg med en beskrivning av vad som ska utföras och en beskrivning av det förväntade resultatet. ALM är inte gjort för snabb ordbehandling så det kan bli aktuellt att skriva dem i andra program och importera dem. Klipp och klistra är vanliga kommandon i ALM men det finns ingen anledning att göra det mer än nödvändigt. Om du har aktiviteter som återkommer i testerna så lägg dem i separata testfall eller skapa testmallar som man kan utgå från. I ett av mina testprojekt fanns det jobb som skapade dimensionsnycklar och som återkom i flöde efter flöde. Genom att lägga dessa testfall i en egen mapp i Test Plan och sedan koppla samma testfall till flera flöden så behövde jag bara skriva testfallet en gång och när testfallet behövde uppdateras så behövde jag bara göra det på ett ställe. Vad gör du om du har testfall som är nästan återkommande men skiljer sig på några detaljer? Lösningen heter parametrar. Om du t ex vill testa olika rapporter som skrivs ut på samma sätt så kan du skriva ett testfall med en parameter för rapportens namn. Du kan sedan i Test Lab koppla testfallet till flera flöden och i varje koppling ange olika rapportnamn i parametern. Observera dock att det i vissa tidiga versioner av ALM inte är möjligt att uppdatera testfall med parametrar under pågående körning (se nedan), en nackdel som jag tyvärr tycker överväger fördelen med parametrar. Din roll som testledare i testfallsprocessen är att stötta dina testare i att skriva så bra testfall att de kan återanvändas eller utföras av andra testare. 3. Test Lab: Utför tester med spårbarhetEtt testset i Test Lab är en logisk gruppering av testfall. Fördelen med Test Lab är att ett testfall kan köras hur många gånger som helst (det är den sista körningen som "avgör" om testet är godkänt) och även återanvändas i andra testset. När ett testfall körs tillkommer fältet Actual där utfallet av varje teststeg kan skrivas. En sak jag brukar betona när man kör tester i Test Lab är att alltid skapa defekter under pågående körning (med knappen "New Defect"). På så vis skapas automatiskt en länk mellan defekten och testfallet och därmed också kravet (för du länkade väl varje testfall till ett krav?). Om du glömmer det kan du alltid gå in i testfallet på nytt med knappvalet "Continue Manual Run" ("Run" startar en helt ny körning. En annan fördel är att såväl testfallets beskrivning som utfall kopieras till defekten, vilket gör det lättare att skriva en bra defektbeskrivning. En annan viktig sak är att inte slentrianmässigt godkänna testfall utan också notera utfallet. Ofta är det så att ett utgående värde i ett testfall behövs som ingående värde i nästa testfall och då är det bra att kunna gå tillbaka och se vilka värden som använts, i synnerhet om du behöver gå tillbaka till gamla körningar. Din roll som testledare inför och under testkörningen är att se till att testerna organiseras så effektivt som möjligt så att saker körs i rätt ordning, onödiga dubbeltester undviks och stopp i testerna hanteras så snart som möjligt. 4. Defects: Följ upp defekterDefects påmininer om Excel med en rad per defekt och en mängd olika kolumner för beskrivningar och parametrar. Defekter kan skapas direkt i Defects men jag föredrar som sagt att skapa dem i Test Lab för att få spårbarhet. Varje kolumn i Defects är sökbar, vilket gör det ganska enkelt att söka specifika defekter, så tveka inte att komplettera defekter om de ursprungliga felbeskrivningarna visar sig bristfälliga. Tyvärr går det inte att söka i beskrivningsfältet men defekter kan vid behov exporteras till Excel och sökas där. Den flexibilitet som finns i Defects är dock tveeggad, det är lätt att radera information. Se därför till att använda kommentarsfältet för uppdateringar i första hand. Din roll som testledare är att se till att defekter blir väl beskrivna och inte blir liggande. Var särskilt aktsam på defekter som bollas fram och tillbaka eller innehåller långa ordväxlingar - ett tydligt tecken på att defekten behöver genomlysas på ett möte eller i värsta fall eskaleras. 5. DashboardDet är i Dashboard som du som testledare får din belöning för ett väl uppsatt ALM. Här kan du ta fram grafer och rapporter som visar hur dina tester går. Verktyget är inte fullt så flexibelt som man kan önska men standardgraferna räcker ganska långt. För mer komplicerade grafer brukar jag helt enkelt mata in siffrorna i Excel. Observera att några av graferna använder korsfilter där data hämtas från en flik men enligt filter i en annan flik. På så vis kan jag till exempel få statistik för testfall från Test Plan knutna till en specifik testkörning i Test Lab. I planeringsfasen
I exekveringsfasen
I avslutningsfasen
Mellan projekten (för kontinuerliga förbättringar)
Övriga intressanta grafer
Se ovan för exempel på mätetal som dessa grafer kan användas till. Exportera testfall från QC till ExcelQC har standardfunktionalitet för att exportera data till HTML, PDF och Word. Det går även att exportera data till Excel men kräver lite kodning.
Exportera testresultat från QC till ExcelMed lite mer avancerad kodning kan du exportera testresultatet per teststeg från QC till Excel, inklusive teststegens beskrivning och förväntade resultat.
Mejl från QCQC kan skicka automatiska mejl vid ändringar i QC. Inställningarna kan göras i QC-gränssnittet för Defects men måste göras i skripten för övriga delar.
ALM Site AdministratorAllmänt om ALM Site AdministratorALM Site Administrator är ett administrationsverktyg som används för att skapa projekt och användare. Den kanske vanligaste åtgärden där är dock att avsluta sessioner för användare som blivit ofrivilligt utloggade ur ALM och låst den post de senast hade markerad.
För den som kan SQL går det också att köra SQL-frågor direkt mot de olika projektdatabaserna. Markera helt enkelt valfri tabell i databaslistan, skriv i SQL-fönstret och klicka på "Execute Query". För statistik är det visserligen lättare att arbeta i respektive projekt än i administrationsverktyget men ibland är det ovärderligt, till exempel när jag behövde radera en post med specialtecken som låste ALM så fort man markerade den posten.
Däremot kan man inte köra SQL-frågor mot själva ALM-databasen, där användarstatistik och annat intressant finns. Åtminstone trodde jag det tills jag upptäckte QCSITEADMIN_DB... QCSITEADMIN_DBGenom att ställa sig i vilket SQL-fönster som helst och använda QCSITEADMIN_DB.td som prefix för varje tabell i sökningen så kan man köra SQL-frågor direkt mot ALM-databasen. Till exempel kan nedanstående fråga användas för att ta fram statistik om hur många gånger användare loggat in i respektive projekt. SELECT sh.USER_NAME as "User Name",
Tips om ALMAvslutningsvis några tips hur jag jobbar effektivt i ALM: 1. Requirements
2. Test Plan
3. Test Lab
4. Defects
5. Dashboard
6. Övrigt
The Quality Dilemma - How poor quality arises and what we testers can do about it(Denna text skrev på engelska för publicering på engelskspråkigt testforum.) 1. The Quality ConceptEverybody wants quality. At least everybody will tell you so when you ask them. So why do we keep seeing products and services with poor quality? How come projects keep downprioritizing quality? And most importantly, what can we testers do to change this? Let us first look at the concept of quality. The Project Manage Institute defines quality as a measure of "how well the characteristics match requirements" - no more, no less. The ISO 9000 standard defines quality as the "degree to which a set of inherent characteristics fulfills requirements". In other words, give the customer what the customer wants. Nobody would argue against that, would they? But let us examine this concept in more detail. There are two sides to this coin: characteristics and requirements. A characteristic is defined by businessdictionary.com as a feature of an item that sets it apart from similar items. A feature in its turn is a mean of providing benefits to a customer. However, it is important to understand that the customer does not care about the feature itself, only about the benefit that the feature provides. Here we find the first potential quality trap. Quality is often defined by the supplier as the number of features an item has. In one way it is natural - mankind has always wanted to stretch the limits. If you can climb a mountain you do it, no matter what others say. This "stretch syndrome" is the reason why we often find products where you cannot see the benefit for all the features. Many IT programs and systems suffer from this syndrome, from desktop software like Microsoft Office to enterprise solutions like SAP and Oracle. They get more powerful with every new version but also more difficult to take advantage of. Steve Jobs once said about features that “we are very careful about what features we add because we can't take them away". That is something more suppliers should adhere to. If we return to the mountain allegory, it is good that you stretch your personal limits but that does not mean that you should force others to join you or pester them with photos and videos showing how good you are afterwards. Is this still a problem in today's projects? I would say yes but not as big as it used to be. Previously users had to adapt to the technology but now technology has to adapt to the users. The trend goes towards simplicity (bye bye manuals and complicated interfaces), specialization (a set of apps instead of one do-it-all application) and socialization (the important thing is not what the application can do, it is what you and your friends/colleagues can do). A good project manager also knows to avoid "gold plating" and steer away from features that the customer does not want. A good test manager will do the same - only the requirements will be tested and any additional features will be left outside the protocol and thus not receive any gratitude. This leads us to the other side of the quality coin: the requirements. 2. The RequirementsWhat is a requirement? ISO 9000 defines requirements as a "need or expectation that is stated, generally implied or obligatory". Businessdictionary.com defines requirements as "demands that must be met or satisfied, usually within a certain timeframe". In addition, PMI distinguishes between product requirements (what to deliver) and project requirements (how to deliver). Those definitions contain three additional quality traps:
Let us start with the first quality trap, what the customer wants. At first glance, requirement gathering sounds easy - simply ask the customer what she wants and give it to her. But does the customer always know what she wants? Does she always knows what she can get? No! In most cases the customer only knows what she has now. Imagine a customer in the Middle Ages used to shout across the valley (or from a mountain if she stretched her limits). She may require a glass of water to be able to shout for a longer time or perhaps a megaphone to shout higher. She may even dream of not shouting at all but rather using telepathy. But will she require a telephone if she has never heard of the concept? Probably not. Our customer faces two major obstacles in the requirement gathering process: the visionary obstacle (the requirement is attainable but not imaginable) and the contextual obstacle (the requirement is imaginable but not attainable). She needs help to expand her vision (imagine long-distance calls) but also to understand the limits (be realistic). Steve Jobs expressed it with the statement that “you can't just ask customers what they want and then try to give that to them. By the time you get it built, they'll want something new.” Thus it is important that the requirement gathering process is an iterative process where the customer and the supplier gradually learn to understand each other's perspectives. Only together can they produce requirements that unlock the technology potential to power the business. As a tester, with one foot in the business world and one foot in the technology world, you have the perfect skillset to help bridging the gap between business and technology. In addition, by assessing the testability of each requirement you will in effect evaluate the ideas and praise/kill them before they reach the real world outside the project. 3. Quality vs Time and CostSo far so good, by “testing” requirements we find defects before they have been realized in a product. However, to gather high quality requirements does require an effort so how do we handle time and cost limits? Obviously we cannot spend unlimited time and money on quality efforts, nor can we forego quality just to keep our budget. Time, cost and quality are correlated to each other, as demonstrated by Dr Martin Barnes in 1969 in his Iron Triangle. (Since then many new features have been added to the triangle such as PMI's scope, customer satisfaction, risks and resources. However, we said above that we should be careful about adding features so I will keep it simple.) In theory, we should find a balance between time, cost and quality. Any changes in one area should be evaluated based on the effect on the other areas. However, if you are an experienced tester you will know that time and cost are usually fixed points In every project there are strong forces in favour of closing the project according to plan. The project supplier does not want to decrease the project profit by adding time and cost. The customer management does not want to lose credibility by acknowledging that "their" project failed. The other project members consider their activities as completed and do not want to drag on because the testers are not ready yet. Not even the acceptance testers, who will eventually use the product, may be interested any more as they have to return to their ordinary work. The result is that any unplanned events will affect not time or cost but quality. We are now approaching the delivery-deliverable conflict and the essence of the quality dilemma. 4. The Quality DilemmaMost testers will recognize the situation: The project is delayed. There is a pressure to deliver "tangible" work items, such as executable code, report templates and nice senior management graphs. Less tangible work items such as documentation, reviews and preparations are downprioritized. The deliverable may even be "descoped", like in the fairy tale "Master Tailor", where a customer ordered a coat but only got a thumbkin. The only things that remain unchanged are the time schedule and the cost budget. As a tester, you will have to start your test later, most likely with more defects than expected, but you still have to end your test as planned. But what about the business case for testing? By taking shortcuts to save time and money early in the project, you will have to spend more time and money later, won't you? Well, that is correct in the long run but by that time the project has already closed and the stakeholders gone somewhere else (except for the poor maintenance team and the end-users, that will have to clean up the mess). But the project did deliver on time and within budget! What happened? How did the delivery become more important than the deliverable? One reason is the intangible nature of quality work, another is the tendency to consider only what is measurable. You can measure time spent versus plan down to the minute and costs expended versus plan down to the cent. But you can never put an exact value on your quality level. The test manager will most likely be expected to deliver status in terms of passed test cases, open defects and such but will those figures say anything about the quality? What if we miss defects due to insufficient test case preparation? Or test the wrong things due to insufficient requirement gathering? To make things even worse, your performance evaluation may suffer since your effort is not recognized until the end of the project and the better you perform (by detecting defects), the more you may be blamed for delaying the project! By now, you may be discouraged from pursuing a tester career but bear with me, it gets better from now on! 5. The Ten Tester CommandmentsCan you do anything about the quality dilemma? Yes you can and doing it is one of the most interesting and exciting part of testing! Here are the ten commandments that you as a tester may follow to make the quality work not only better but also more fun!
Kvalitet i agila projekt
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Understand your game's unique quality and let it lead your design and test |
When you start designing a game, you probably have grand plans about everything you would like to include in it. But how do you verify that the parts are good? And how do you verify that the whole is good? Do you even know what will make your game good?
This is where an understanding of quality gets important. The PMI definition of quality is "how well the characteristics match requirements". To design a good game, you need to fulfil the game's requirements, and to keep you on the right track, you need to plan what to test and how to test.
So what are the requirements of your game then? To be fun of course - we play games to be entertained. But how do you test if a game is "fun"? The perception of fun is not only dependent on individual preferences but may also vary with time, place and other circumstances. Nevertheless, there are things you can do to break down your game's fun factor into concrete and testable requirements.
First, there are several objective criteria that are generally acknowledged. Wolfgang Kramer, designer of games like El Grande, lists the following:
Second, there are objective criteria which depend on the game style.
Game Design Concepts list the following:There is no right or wrong here. Generally, a game should be consistent but there are also exceptions where a good balance between contradicting criteria works. A no-luck game like chess would be a worse game with a random pawn promotion. Backgammon on the other hand combines the random dice roll with the strategic decision.
Third, there are also subjective criteria that contribute to make a game fun. Different games invoke different feelings in players and this is what truly makes a game unique. Chess and Trivial Pursuit are two popular games that satisfy most of the objective criteria and yet are completely different in terms of feelings. The objective of my games is to invoke the following feelings:
As a designer, you need to set a plan for the criteria of your game and design with those in mind. As a tester, you need to test how each element of the game satisfy the criteria of the game.
In my game Find the Bug!, I wanted to make the players feel they were test leads in a real project. The "fun" factor would mainly come from the relation between applying test techniques and finding bugs. However, the game must not be too complex but easy to learn and quick to play. By stipulating those and other criteria, I came up with a "mental checklist" for the game.
To summarize with Wolfgang Kramer's words: a good game will stay with us all our lives and make us long to play it again. Make sure that you understand the criteria that make your game good!
|
Do not test your game until you know what to test |
When you understand your game's unique quality, it is time to analyse the specific criteria to test. Each criterion should be broken down to the smallest testable element possible. This may seem unnecessary or even counterproductive, as a game's quality is determined by how well all its parts work together as a whole. However, the analysis activity will help you understand why your game doesn't work and to tweak and tune all bits and pieces into perfection.
In my very first game test, I observed several areas of improvement but could not trace them back to the quality criteria of the game. The result was that I modified the game rather aimlessly and several iterations were required to get the game back on track. A proper analysis before the test would have helped me to do a proper root-cause-analysis afterwards.
The analysis is a dual activity where you in your designer role drive towards new exciting ideas and in your tester role checks the map to ensure that you are not losing the way. This is a critical phase of your game design because if you deviate from your game's unique quality now, it will be very difficult to return to it. Another good game designer, Reiner Knizia, designer of good games like Tigris & Euphrates, is of the opinion that "many people think that a game is finished when there is nothing more to be added. I believe a game is finished when there is nothing more that can be taken away and still leave a good game". In project methodology, this opinion is similar to the recommendation against "gold plating", where features are added that are not requested by the customers (your future players) and are not in the scope. An inventive battle system has nothing to do in an economic game and a stunning futuristic art would be completely wrong in a medieval game. No matter how much the designer in you like an idea, the tester in you must keep it out of the game. If the idea really begs for a game, put it on the shelf until you have a game that will make justice to it.
The outcome of the analysis should be an understanding of what elements to include (and exclude) in the game and what to test in each element. This may be a list of alternative game strategies to be tested for balance, of components to be tested for the physical use in the game or of art to be tested for consistency. Do not worry about a detailed list of elements at this stage, game design is an iterative process where you have to return and reevaluate your ideas. The important thing is that you know why you design the game in a certain way and why a certain test is necessary.
Returning to my game Find the Bug! as an example, one of my criteria was to replicate the daily work of a test lead. Of the many different tasks, I focused on that of finding bugs. As a tester cannot know where the bugs are but, using risk-based testing, may assess where they are likely to be, I needed a mechanism that could increase the odds of finding bugs. The test in this case would be to check the expected result of the different test strategies (ad-hoc testing and risk-based testing) and ensure that a risk assessment would give a reasonable pay-off (not too low but not too high either).
|
If you do not know how to test, your game will be perfect in your eyes only |
If you know what to test in your game, it is now time to find out how to test it. Testing a game is much more than just playing it and the software testing methodology offers plenty of test types to choose from.
Functional testing covers everything that defines the game, that is how the players interact with the game and with each other. Which actions can a player take? What does she need to be able to take the action. What will happen after the action? Those are the kind of questions your design needs to answer and your testing to verify. The testing is independent of physical game components - it is only the "spirit" of the game that is tested. The purpose of the testing is to ensure that the game theoretically plays as expected.
Non-functional testing covers everything that is required for the game to be physically played. Which components are needed? How are they to be handled? Are they open or hidden to the players? Each component of the game must be designed with its purpose in mind and this purpose must be understood when testing.
A test that covers both functional and non-functional tests of a game is scalability: Does your game mechanisms work with more or less players (functional) and will more/less components be required (non-functional)? An iterative process is usually required where you design and test with different number of players to assess how many players the game can be played with and if the game needs modifications for different number of players.
One of the ways the players interact with Find the Bug! is to place pawns on the game board, either to check the probability of bugs or to try to find them. To design this, not only did I have to set the density and severity of bugs to balance the player strategies but also come up with a way for the players to get information about the probability of bugs without revealing the actual location of the bugs.
The functional test in this case was to test that the expected value of bugs from checking the density would be equal to the expected value of bugs of checking the severity. In addition, both strategies should have a higher expected value than the ad-hoc strategy of not checking at all.
The non-functional test on the other hand was to test the various ideas for physical representations of bugs, density and severity. Would the representation be transparent to the players? Would it keep the location of the bugs hidden? Would it be easy to set up and handle during the game? Without a pass on all those non-functional tests, this particular part of the game would not work!
In software testing, white box testing refers to to internal structures (how the software does it) and black box testing refers to functionality (what the software does) and. For game testing, I would like to transform this into testing from the game perspective and testing from the player perspective.
The game perspective (the white box) would be to identify different paths that the game may follow and calculate statistics for them. What is the average, minimum and maximum of a certain path? Are the paths balanced? Are there any dead ends? Will the components be enough? Those are questions that white box testing may answer for games.
The player perspective would be what you typically may think of when it comes to test: a live player session. However, you can and should do own player testing first by setting up various strategies and simulate them in action. This will help you understand what takes place in the mind of the players while playing your game.
For Find the Bug!, I relied heavily on spreadsheets for my white box and black box testing. The first image below shows a sample white box test case. In the game, testing is done by drawing 1 tier tile and 1 module tile from bags and if both tiles contain a bug, a bug is found. The test case simply calculates expected bugs for different levels of density and severity.
White box test case: Expected result per density and severity level
The second image shows a sample black box test case. In the game, players do not know the exact location of the bugs but may do analyses to get to know how many bug tiles there are in a bag and and draw conclusions about the probability. The test case simply keeps track of the players' scores for different analysis strategies.
Black box test case: Simulated result per strategy
Dynamic testing refers to all testing where you play out parts or the whole of the game. Static testing is the opposite and typically refers to reviews of components. It may be perceived as a daunting task but is nevertheless important. No matter how great your game idea is, poor static testing will prevent other players from realizing it or even render the game unplayable. As a designer, it is easy to become blind to details so make sure to document every design detail, no matter how small. Use the documentation as checklists and go through them carefully. Rule language, game examples, color codes, font sizes, position of images and overall consistency in the layout are among the things that belong to the list.
Find the Bug! relies on simple art and well-known process symbols but there were still many checkpoints. One example was the relation between the tiles, the pawns and the game board. The tiles must fit the squares of the game board and pawns on the tiles must not cover the number. It is true that this kind of relation is a design task but the design will change during your work and to ensure that all changes are propagated to all components, checklists are useful.
Positive testing is all the testing that proves that your game works but what about negative testing? Negative testing refers to all attempts to break the game, intentionally or unintentionally. Are there loops which will prevent the game from progressing or dead ends that will prevent it from ending? Even classic games like go and chess have those issues that must be handled by special rules. ("Ko" prevents recurring positions in go and stalemates in chess ends in a draw). What if a player plays against the intentions of the game or even try to cheat? Or if a player deliberately attempts to sabotage the game to prevent the other players for winning? Or if a player promotes another player's victory (known as the "kingmaker" effect)? Depending on the style of the game, other negative scenarios may include bad starts (making the game boring for that particular player), unstoppable leaders (making the game boring for all other players) or too random victory conditions in the end (making the game towards the end uninteresting). Everything that may work against your game's unique quality constitutes a negative test scenario that must be tested.
One important negative test of Find the Bug! was to ensure that no player would know the location of the bugs, neither during setup, nor during gameplay. If this test would fail, the game would have no challenge. Another important test was to ensure that players doing analysis tasks would keep the information for themselves. Otherwise, an analysis would only benefit the players next in turn. I also had to ensure that a player could not lose the game for all the other players by deliberately failing to find bugs.
|
There is a time and a place for test |
By now you have a number of test cases for your game to ensure its quality. But how do you decide when to run all those test cases? The software testing methodology answer to this is the implementation phase. This is when you organize, prioritize and schedule your testing. One good starting point is to group them by test levels.
As you can see from the above list, testing is a bottom-up process, where you first test the smallest parts of the game to make sure that they work before you test them together. This will help you isolate problems and trace them back to the source. However, it does not mean that testing is a one-way process. You will need to move back and forth between the test levels as you test and improve your game. Art is typically something that you go back and retest once the rest of the game works. The main benefit of grouping your testing in test levels is that it helps you test the right thing at the right time. Let us look at them more in detail.
Unit test ensures that the smallest elements of the game works according to your quality criteria as discussed in the beginning of the article. This may refer to a certain component or a specific mechanism of your game that can be tested in isolation. Testing in isolation does not mean that you design in isolation - you should know the purpose of the element in the game but still only test the element itself.
A functional unit test in Find the Bug! was the expected value of bugs from different density and severity levels as described in Design. A non-functional unit test was to check the color codes of all green and black tiles.
Integration test ensures that the elements of the game work together. However, while software systems are often modular, game elements are often so interrelated that it is difficult to test single relations. Instead, try to look at the flow of the game and identify events that need to work smoothly for a good flow. Allocation of resources, track of victory points and transactions between players are examples of events to test during integration test.
A functional integration test in Find the Bug! was that the different tasks of the game (analysis, test, retest) could be done on the game board at the same time. A non-functional integration test was to check that the tiles fit the squares on the game board.
System test is when you actually play the game from start to end. The first system tests may be simulated but you should also produce a prototype at some stage. The prototype does not need to be fancy as you will likely have to rework and retest the game several times. System test is your chance to tick off as many quality criteria as possible before you invite other players to your test so try to simulate as many different player styles and scenarios as possible. Once all your quality criteria has been checked, you are ready for acceptance test.
Find the Bug! was simulated in spreadsheets several times before a prototype was ordered from The Game Crafter.
Do you think your game is perfect now? Good, then it is time to see if external players share your opinion. Acceptance test is critical as this is the first time someone else than you plays the complete game. You should of course discuss game details with other designers during your work and perhaps even play early prototypes with them but at some point you will be needing input from players who have never seen the game before and can play it without any preconceptions.
Acceptance test should reflect an ordinary game session where the players (the testers) play your game as they would have played any other game and you (the test lead) act as an invisible observer. Ideally, this means that they should read the rules themselves and discuss any concerns among themselves without consulting you. Make sure to set the expectations so that they understand this - once your game is published, you will not be there to guide new players. (With less experienced players, you may consider acting as a game master; setting up the game, explaining the rules and supporting the game progress; but you should not let this be your only acceptance test.)
Prepare yourself for the acceptance test with the same checklist used in the system test and a journal where you can make notes of events and actions during the game. In addition, prepare a questionnaire to capture lessons learnt from the game. It is important to capture both good and bad things. Examples of questions include:
For the first acceptance tests of Find the Bug!, test colleagues at work were invited and the above checklists and questionnaires prepared. Since the game may be played both with a teacher and by students on their own, I took on the role of a game master and prepared everything so that they could focus on the game experience. For later acceptance tests, I acted as an observer.
|
If you do not know what you tested, have you really tested? |
Now that you know what to test, how to test and when to test, it is finally time to actually execute the test. If you have followed the methodology so far, you are well on your way to ensure quality but the most important remains: documentation and investigation.
Whatever test type and test level you use, you should document the test, the expected outcome and the actual outcome. Also document information about the test environment, such as date, version and number of players. This will help you follow up issues afterwards. If possible, try to complete the test first instead of immediately trying to fix issues. Otherwise, you may fix only the symptoms, not the actual problems. Or worse, you may change things that actually work. Instead, collect as much information that you can and then apply a holistic perspective on them. The following questions should be answered:
Issues on lower test levels, such as the color of a component, may not require the full process above but you should nevertheless document and investigate them as well. Perhaps you need a better template? Perhaps other components have wrong color as well? What if you accidentally included components from an old version and your entire game needs to be reworked? A good documentation and investigation will help you avoid the issues in the future.
The early testing of Find the Bug! was much about finding a balance. The tables below show two excerpts of the test documentation. In test case 1 (early version), players would have 50% chance of finding bugs without analysis and only marginally better with analysis, making the pay-off time for letting a pawn analyse instead of test too small. Test case 2 (final version with less bugs) resulted in a better balance.
| Test case | Bug distribution | Total bugs | 18 | ||||
| 1 | 0 | 1 | 2 | Probability without analysis | 50,0% | ||
| 1 | 2 | 3 | Probability with analysis | 62,5% | |||
| 2 | 3 | 4 | Pay-off time | 4 | |||
| Test case | Bug distribution | Total bugs | 18 | ||||
| 2 | 0 | 0 | 1 | Probability without analysis | 25,0% | ||
| 0 | 1 | 2 | Probability with analysis | 37,5% | |||
| 1 | 2 | 3 | Pay-off time | 3 | |||
The higher the test level, the more important it is that you document and investigate issues, particularly if they are discovered by external players that may not be available when you start fixing them. Using the checklists and questionnaires above, facilitate a discussion where you elaborate on the game experience and brainstorm potential changes to the game. As a game designer, you must balance humbleness with integrity - do not be overly protective against criticism but do not blindly accept proposals either. You may have personal feelings for your game but you also know the reasoning behind certain elements and should share this knowledge with the other testers. It may be the case that the game's learning curve is too steep for only one session (which, depending on your quality criteria, may be another issue...).
My very first game acceptance test was a good example of bad practice: I participated myself, took in all the testers' opinions, without any discretion or any tracing back to the root cause, and ended up with a game far inferior to the game that entered the test.
For Find the Bug!, I had learned my lesson and did not participate in the game myself but acted as an observer and documented what I saw. One interesting observation was that they placed 2-3 testers on analysis tasks instead of the optimal 1. As expected, this resulted in low scores and all players actually finished on the same bug value: 2. I did explain how the game concepts related to test concepts but left the discussion to after the game. Some suggestions were given about placing the tiles on the board instead of in bags but when I explained the reasoning behind the setup (the relation between the color of the stone and the number of bugs), it was accepted. The most important test passed: they all wanted to play again!
|
A game test is only the end of the beginning |
With all the testing completed and the "perfect" game ready, what is the next step? Forget about all the hard work behind it and just let the game stand on its own? No, a game is tested every time it is played so it is important that you archive all your documentation for future reference. A FAQ could be created or strategy articles written. Other players may discover something that you missed or come up with ideas that you never thought of. You may consider designing new editions or expansions. In addition, you should take time to reflect back upon your work and think of the lessons you learned. For all this and much more, a good quality documentation of everything that went into your game and made it unique will be invaluable.
The following are some questions that a quality documentation may help answering:
Although Find the Bug! was released only recently, the quality documentation has already come to use. Most noticeably, the children's game Find the Treasure! was built on some simplified mechanisms (the bugs were replaced by a hidden treasure) and some changed mechanisms (the permanently placed testers were replaced by moving pirates). I had no intentions to create such a game while working on Find the Bug! but during the lessons learned sessions with the testers, those mechanisms just begged to be used once more.
This concludes my ambition to apply software testing methodology to games. The key message here is that quality must be a red thread throughout the entire game design process. Understand what quality means for your particular game and ensure that you test the right thing at the right time and in the right way. This will not ensure the perfect game but hopefully help you recognize it when you see it.
All comments on this article or on the topic of how we game designers can bring quality to our games are welcome. Thank you for your interest and good luck with your own games!
(Denna text skrev på engelska för publicering på LinkedIn.)
Learning by Gaming has always been close to my heart and I have now been given an opportunity to share my thoughts on this topic. At the EuroSTAR Software Testing Conference in October-November 2016, I will give a speech on Testification - Learn Testing through Gamification. Below you will find a short introduction to my speech. If you would like to learn more, please feel free to use the discount code above to get 10% off your ticket price. (See below for full text.)
Gamification and board games are two emergent trends. Both appeal to the human curiousity to explore and discover. Testing is also about exploring and discovering so the game is an excellent medium to learn testing skills.
In this speech, I would like to describe how games can be used in the testing community, using three concrete examples that have been successfully applied at SQS.
“When you know a solution to a given puzzle, it’s hard to find another one. When you don’t know the solution, you’re much more likely to find your own. Not knowing others’ solutions helps keep your own ideas fresh.”(Reiner Knizia, game designer)
This speech is a compilation of the following previously held speeches:
Learning by Gaming has always been close to my heart and I have now been given an opportunity to share my thoughts on this topic. At the EuroSTAR Software Testing Conference in October-November 2016, I will give a speech on Testification - Learn Testing through Gamification. Below you will find a short introduction to my speech. If you would like to learn more, please feel free to use the discount code above to get 10% off your ticket price.
Let us start with a philosophical question that all of us are used to from our near and dear:
What do you do?
Perhaps you answer “testing”. If you have met another tester, you will probably have enough to talk about for the rest of the evening, but what if you talk to a non-tester? Do they smile politely and change the subject to conceal their ignorance of what you do? Do their eyes roll as they try to process the meaning of what do you do? Or do they follow up with more questions to learn more of what you do?
I typically get the first reaction from people I meet for the first time and the second reaction from my spouse. But what if you meet a curious person who asks good questions and challenges me for good answers, such as a three-year-old child?
Where is your goal?
Why is it difficult?
How do you reach it?
Would you be able to answer those questions? You probably know your work so well that you never reflect on those questions. But if you are unable to tell another person what you do, how can you train another person to do what you do? This is the major challenge for all trainers, yet the solution was elegantly formulated already by the Ancient Greeks:
Now that you know yourself and know what you do, it is time to examine how you can enlighten other people. If we return to our clever three-year-old child, he or she learns by observing how adults do and does the same.
This works well for basic learnings, such as reading and writing, but how about more advanced learnings, such as reviewing a book or writing one yourself? Knowledge of other authors’ books may certainly help you avoid repeating other authors’ mistakes but will it help you writing a book of your own? Or will it steer you towards already known paths and restrict your own creativity? It is no coincidence that the words “create” and “creativity” have the same origin.
The same applies to testing. Knowledge of testing methodology, such as the ISTQB Syllabus, may certainly help us find the expected defects but it is the unexpected defects that are hard to find. The less open-minded we are, the harder it is to find those.
This challenge has been very well expressed by a famous Doctor in Mathematics, Reiner Knizia. He stated that “when you know a solution to a given puzzle, it’s hard to find another one. When you don’t know the solution, you’re much more likely to find your own. Not knowing others’ solutions helps keep your own ideas fresh.” Basically, he told us not to learn how to do but to learn how to think.
Now that we know the learning objective, we are ready to move on to the question on how to get there. How do we teach the students to think like testers? How do we stimulate their imagination and creativity? How do we ensure that the learning experience is engaging and memorable?
There is no single answer but rather several attributes that together help forming a good learning atmosphere.
Motivated students are good students. If they learn through fun and engaging activities, they are more likely to participate whole-heartedly and remember what they learned afterwards. A typical example is team-building activities, where the students practice team-building first and discusses characteristics of good teams afterwards.
Students that understand the big picture are more likely to understand the small details. To them, the learning “makes more sense” and they will remember common situations where it is applicable. A typical example is case studies, where students learn to find solutions in real life examples.
Learning together with others’ let the students share ideas and see things from new perspectives. In addition, it also creates bonds that last beyond the learning session. A typical example is group work, where the students cooperate to deliver.
A good way to learn is to ask questions and get answers. The proverb “there are no stupid questions, only stupid answers” may have become a cliché but it is important that teachers create an atmosphere that encourages students to ask questions. A typical example is the Q&A session that usually follows lectures.
Feedback serves a receipt that the students actually achieved something. More importantly, feedback also allows the students to “fail” in a safe environment and learn how to do better next time. A typical example is the school grades.
You do not need to be an expert in behavioral psychology to understand that rewards encourages learning. Learning may be a reward in itself but additional rewards never hurt. A typical example is the graduation party.
This is a long list of attributes indeed. Is there really a setting that captures all of them? As a matter of fact, there is. This list is actually a list of attributes commonly found in modern board games!

Can test really be represented by a game you might be wondering. The idea is not far-fetched at all. Games have represented life throughout the History of Man. The Mancala game symbolizes sowing and harvesting while the military plans of Chinese warlords are said to have been the origin of the game of Go.

More modern examples include the game Robot Turtles, invented by the software entrepreneur Dan Shapiro to teach his 4-year old twins programming. Basically, the players play cards to program their turtles to find crystals on a board. Robot Turtles was a huge Kickstarter success with $630,000 raised and 25,000 games shipped.

Do you still wonder if test can be represented by a game? If not, let us return to our initial question about what we do as testers and see how a game can help us answer.
If our game can answer those questions, it will also teach us to think as testers. Our friend Doctor Reiner Knizia has expressed this very well by stating that ”it is the goal that is important, not the winning”. As you may have guessed, the good Doctor is also a designer of many good games.
Now let us start designing our test game!
For our test game, the two first questions are easy to answer. Your role is a test lead and your goal is to find bugs. To ”gamify” those concepts, we convert them into game components by letting our testers be represented by game pieces and our test environment be represented by a game board. To play the game, simply place a tester on a square and draw a tile to see if you find a bug.

So far, so good, but how about the other two questions? Where is the testing challenge and where are the meaningful testing decisions? As testers, we know that we never have enough time and resources for our testing, and our game must capture and convey this knowledge.
What if we limit the number of testers each player has? Then there will not be enough testers to place on all squares and hence not enough testers to find all the bugs. This is a bit better but now the number of bugs found is dependent on luck. We all know that good testers find more bugs, don’t we? We also know that the difference between a good tester and a bad tester lies in the decisions taken. Clearly, our game must answer the fourth question about meaningful decisions as well.
Now go back to your own everyday work and ask yourself how you test. Do you prioritize test areas where bugs are not likely to be found or to be critical? No, you probably apply some kind of risk-based testing and prioritize functionally complex or business critical areas. Why not let our players do the same?
What if we let our players use a tester not for testing but for analyzing the board and learning which areas are defect-prone? And what if we let them save a tester for retest or even automatic tests, covering several squares at the same time?

Our game now lets the players face several testing decisions, they must think like testers!

Find the Bug! deals with traditional V-model testing but how about modern agile testing? Can that be gamified as well? Of course!
Our agile test game should answer the same questions as before about role, goal, challenges and decisions. Since agile testing activities are closely linked to development activities, let us put our players in the roles of scrum masters with the goal of coding components through test driven development and continuous integration. The code is represented by colored cubes and the components by tiles illustrating input codes and output codes.
The challenge for the players is to ”develop code” (acquire cubes) and ”test components” (place cubes) until the user story can be considered ”done” (the input codes placed on the components match the input codes required by the user story).
The decisions for the players are all about testing effectively (test so that you always have the code necessary to continue testing) and efficiently (test so that you pass as soon as possible).
Again, our players must learn how to think to ensure the early and continuous delivery of the Agile Manifesto.

Find the Bug! and Find the Bug! Agile are only two of many examples of how game elements can be turned into testing exercises. As we have seen, games can teach students how to think like testers by letting accessible and memorable games represent test concepts. But testing is not only about creative thinking, it is also about experience and gut feeling, about the ability to expect the unexpected. Can games be used for that as well? They sure can!
Newly graduated students typically have a strong foundation of general skills, upon which specialized testing skills can be built. We are now ready to move on to the next skill step, that of experience, and this time we will do it the other way around by turning testing exercises into game elements.

Our journey will start with the fundamental test process of Plan-Analyze-Design-Execute-Close. For each of those activities we add game elements to strengthen the learning:

In the planning activity, a role play is set up where the teachers play stakeholders that the students interview to collect information. The better the students perform, the more artefacts do they receive. The artefacts are typical documents that we testers manage on a daily basis, such as requirements, design specifications etc.
Using those artefacts, the students write a test plan and get it graded based on how well it covers test activities as well as the project risks. The grades come in the form of ”mitigation cards” that the students may play later during the project when they encounter typical test issues. We will come back to those in the Execute activity.
The key learning points include:
In the analyze activity, the teachers guide the students how to review the artifacts and extract the information necessary to identify the product risks. Based on the product risks, the students prepare test scenarios, assess functional complexity and business criticality of them, and prioritize them in a test schedule.
The test schedule as such is not graded but as we saw in the example of the board game Find the Bug!, a good test prioritization will help you find bugs. We will come back to this in the Execute activity.
The key learning points include:
In the design activity, the teachers guide the students what to test in different test stages, which test methods that are most suitable and how to write test cases.
The test cases are graded based on how well written they are and how applicable they are to the test stage chosen. This time, the grades come in the form of ”testing hours” that the students get to use. We will come back to this in the Execute activity.
The key learning points include:
The Execute activity is the grand finale of the training where the result of all the effort in the previous activities finally gets paid off — just like in real testing. Using their test schedule and testing hours, the students now allocate time to their test scenarios. The teachers feed the figures into a computerized version of Find the Bug! that return the number of bugs found and the severity of them based on hours, functional complexity and business criticality. Reviewing this bug report, the students replan as needed and proceed with the next test run.
How about the mitigation cards you might wonder? Yes, they are also used now. As in all test projects, the unexpected happens, and as all good testers, the students are expected to be prepared for the unexpected. The teachers reveal unexpected events and the students must play their mitigation cards (and motivate why they mitigate the specific event) to avoid issues.

The key learning points include:
The training is concluded with the students presenting their test findings to the class. The Close activity lets the students practice what to present and how to present it to provide a clear and concise summary of the test. More importantly, it gives the students the chance to stand in the spotlight and be at the center of everybody’s attention — just like real testers after a well performed testing!
The key learning points include:
With that, the circle is completed. We have ”testified” a game by adding a test role, a test goal, test challenges, and test decisions. Using those game elements, we have ”gamified" a test project by providing the students with motivation, context, concrete tasks, social setting, answers, feedback and rewards.
Thanks to this, we have followed in the footsteps of many other games throughout History and taught students how to think like testers and how it feels to be a tester.
Thank you for your attention.
