Jag hade för en tid sedan möjlighet att experimentera lite med partestning. Jag fick fram en del observationer som jag presenterar här nedan. Dock så känner jag att jag skulle vilja höra fler erfarenheter av par testning. Om det över huvud taget används hur ofta använder ni det? Vid vilka förhållanden ser ni att det verkar som bäst? Vilka fällor finns det som är bra att känna till? Jag ser denna artikel som en inbjudan till er läsare att dela med er av er kunskap och erfarenhet i detta ämne.
Vi testade i 90 minuters sessioner med en Exploratory approach. Varje session hade ett mål som vi hade som syfte att uppfylla. Vi delade in personerna två och två och lät dom planera sin session och sedan genomföra den.
Observationer som jag gjorde var att det var väldigt viktigt vilka personer som man parar ihop. Då detta till viss det var ett experiment så kunde jag pröva lite olika konstellationer för att se om det blev någon skillnad.
Som exempel så observerade jag när två personer med introvert personlighetstyp testade tillsammans så pratade dom inte mycket med varandra utan en satt och testade och den andra satt brevid och tittade på. Efter en vad som verkade vara en förutbestämd tid så bytte dom plats och den som hade suttit brevid och observerat satte sig nu och testa medans den andra satt brevid och tittade på. Jag säger inte att detta nödvändigtvis behöver vara en dålig taktik det är väldigt mycket information man kan få ut av ett test genom sitta brevid som utföraren riskerar missar. Invändningen man kan ha mot denna taktik är väl att man inte delar med sig av den information man tar till sig och utbyter tankar och reflektioner. Detta kan leda till att den som utför testet gör ett felbeslut när han väljer nästa test för att han missade en viktig observation som den som satt brevid tog till sig.
Å andra sidan parade jag ihop två personer med tydliga extroverta personlighetstyper. Dom var väldigt entusiastiska och hade väldigt många idéer och kom på test möjlighet på test möjlighet. Dock så verkade dom i sin iver prioritera brainstorming och diskussion före att faktiskt test mjukvaran så när tiden var ute så hade dom hur mycket idéer som helst om vad dom ville fortsätta att testa men hade inte kommit så långt med själva testningen.
Vid ett tillfälle så provade jag även att sätta ihop tre personer i ett team för att se hur dom organiserade sig och vad som då händer.
Vad jag såg var att en person satte sig och började testa och de två andra började titta på men redan efter ett par minuter så föll intresset och de två som inte testade började istället prata om helt andra saker som inte hörde till det dom testade. Efter ett tag så satt dom inte ens en gång vända mot testobjektet utan hade mer utav en fika paus. Jag pratade med James Bach om mina observationer han berättade att han hade testat i grupp någon gång. Viktigt då var att man utsåg en ledare och att under test sessionen så fick deltagarna tydliga uppgifter att utföra, tex diagnosera en upptäckt bugg eller ta fram information ur en specifikation. Är det någon som har gjort detta berätta gärna hur ni upplevde det.
Det man kanske först kommer att tänka på för par testning är att sätta en oerfaren testare med en erfaren för att lära ut. Det jag fick som feedback är inte att det bara är den oerfarne som lär sig. Den med mest erfarenhet beskriver vad han gör och börjar då också tänka efter varför han gör som han gör och vad han baserar sina slutsattser på. En oerfaren som ser en applikation för första gången observera andra saker än en van användare så det kommer upp lite andra typer av frågeställningar som ofta är värdefulla. Så lärdomarna går i båda riktningarna.
Jag är själv väldigt osäker på hur man bäst implementerar par testning. Jag skulle nog böja i liten skala med mycket experimenterande för att hitta de former som passar just den gruppen bäst. En variant skulle kunna vara att släppa det helt fritt och låta testarna själva bestämma när dom gör det och med vem. Det man riskerar är då att man bara får med sig dom som från början tyckte att det lär intressant medans skeptikerna inte ens provat det.
Andra varianten är så klart att bestämma att alla ska par testa minst x antal timmar i veckan. Den uppenbara risken är ju då att det känns påtvingat och att det blir obekvämt och ineffektivt. Vilket har fungerat bäst för er?
Nu har jag skrivit mina tankar om detta ämne så nu är det eran tur!
Är inte speciellt insatt i sessionsbaserad partestning men en spontan tanke som dyker upp är:
Är det effektivt/lönsamt (värde vs. kostnad) om man jämför med vad bägge skulle kunna uträtta var för sig under samma tidsperiod?
Förutom att kombinera personlighetsstyper som du beskriver ovan så skulle man kunna tänka sig att en erfaren testare i kombination med en erfaren verksamhetsexpert skulle ha en bra chans att hitta relevanta problem under en testsession.
En bra variant på detta i mitt tycke är att en testare har en demo av ny funktionalitet inför testteamet . Även om syftet främst är kunskapsspridning så brukar en positiv sidoeffekt vara att man hittar nya problemställningar som den enskilde testaren missat.
Jag har inte kört jättemycket partestning, men till och från under flera år.
Partestning är mycket bra, bl.a. av dessa anledningar:
* det är roligare
* man hittar mer fel
* större chans att man fokuserar på det viktigaste
* man lär sig av varandra
En indikation på bra partestning är att du är mycket tröttare än efter ensamtestning, du har ansträngt dig mer än vanligt helt enkelt.
Partestning är mycket svårt, bl.a. av dessa anledningar:
* en del personer jobbar helst själva
* det är svårt att börja med nya metoder
* det är lätt att tro att man förlorar tid
* man blir tröttare…
Att köra en begränsad tid, och inte bli störd under den tiden tror jag är bäst.
En rattar testmaskinen, och den andre tänker högt och antecknar.
Man kan även sitta med varsin maskin, och testa olika varianter på samma teman.
Jag tror att effektiviteten är högre för funktionalitet där man behöver prova sig fram för att hitta de bästa angreppssätten och buggar.
Jag tror att den kortsiktiga effektiviteten för testfallsexekvering är högre om man testar var för sig.
Jag har aldrig kört partestning och efteråt tänkt: det här hade varit mer effektivt om jag testat själv.
Jag tror det är svårt att köra partestning hela tiden.
Jag tror alla testare har nytta av att köra partestning ibland, oavsett personlighetstyp/inlärningsstil.
Jag tror att det är roligare att partesta med någon som tänker ungefär likadant, men mer nyttigt ihop med någon som tänker annorlunda.
Jag tror partestning är viktigare att göra om testarna inte sitter nära varandra när de jobbar.
Jag tror att partestning ihop med en icke-testare är bra, men att det är något annat än partestning.
Jag tror inte partestning fungerar bra om man känner sig tvingad.
Men det är inte svårt att börja; säg bara till en kollega att nu kör vi en timme ihop!
Jag har fått frågan flera gånger om det är effektivt och verkligen värt det att sitta som par. Man kanske inte alltid ska göra det, men i stort så tycker jag det är effektivt. Jag tycker det finns en övertro till att man är alltid effektivast när man är själv.
Om grundidén är att den ena testar och den andra dokumenterar, buggrapporterar, analyserar m.m. Testaren fokuserar på att gräva sig ner i funktionaliteten medan dokumentatören kartlägger vart man går och vart man varit samt potentiellt identifierar nya områden. Man byter plats lite då och då för att byta roll.
Jag tycker det fungerar att köra både i en explorativsituation med sessioner samt i en semi-skriptad testfalls session.
Partestning är ett verktyg som ska användas när man tycker att det passar. Vem som fattar beslut om det är ju helt baserat på hur man är organiserad.
Beroende på vad man testar och hur det ser ut så kan man göra olika slags kombinationer av detta. T.ex om man kör mjukvara så går det lättare att sitta bredvid varandra. Om man istället kör mycket hårdvara, där plats är trång faktor, så kan man försöka köra liknande test men inte samma. Ibland med annat vinkel eller andra dataset.
Dialogen mellan de som partestar är viktig, därför att det bra att hitta intressanta kombinationer av personer så som du säger, Henrik. Vissa arbetar bättre ihop andra sämre. Om det finns konflikter i gruppen kan dessa ibland lösas genom att man får köra partestning. Vissa personer jobbar sämre i grupp andra bättre, det är ju bara att testa runt och se vad som funkar.
En extrem till partestning är ju cinematestning, det passar ju bättre i en situation så som Stefan pratar om med att göra ett demo för gruppen.
Har de senaste två veckorna varvat enskild testning med partestning. Jag sitter i ett rätt tekniskt projekt med minimal projektstyrning. Vi har konstaterat att för att få snabb respons på våra felrapporter så måste vi analysera och isolera felen mer än vad vi vanligen gör som testare. Vi har inte heller någon betungande dokumentation att utgå från då vi testar. Utforskande tester är nog ett rätt bra sätt att beskriva det vi gör. Vi är två testare, min kollega är helt ny på test men mycket intresserad och driven. På grund av ovanstående fakta är det inte helt enkelt att testa systemet.
Vi har därför valt att köra tester tillsammans under en stor del av de senaste två veckorna. Vi har inte styrt upp det med SBTM eller charters utan mer experimenterat oss fram. En typisk sittning inebär att vi båda två sitter vid våra datorer bredvid varandra. Vi har en testidé om att undersöka en viss funktion. En av oss börjar testa i GUI på första systemet, den andra noterar och ställer frågor. Systemet bygger på BizTalk och wcf-tjänster vilket innebär att den som testar nu går in på servern och öppnar BizTalk administrator för att se vad som fysiskt sker. Nu startar inläsningstjänsten, nu hämtas kompletterande data, nu har info gått vidare till…det är häftigt att se vad som händer! osv. Den som inte testar öppnar SQL-verktyget och söker efter den nya data som ska ha lagts in. Nästa steg är att ett nytt GUI-öppnas för system nummer två. Där ligger nu senaste testfallet. Testaren fortsätter jobba och den andre noterar och kollar upp resultaten i databasen. Då vi hittar fel, och det gör vi ofta, analyserar vi dessa genom att köra fler liknande testfall, letar upp alla poster som är inblandade och bifogar den SQL-kod som ska köras för att hitta felen och de koder som är kooplade till stället det är fel på. Detta gör vi för att vi har en samlad översikt och kompetens för alla medverkande system på en nivå som utvecklarna inte har. Vi går tillsammans igenom felrapporten och verifierar att den går att förstå och återskapa. Sen lägger vi in felet i felrapporteingssysteet och utvecklaren får ett mejl. De akuta felen åtgärdas ofta inom en dag.
Resultatet: det är både roligt och givande att testa tillsamans. Precis som när man löser korsord tillsammans så kompletterarar man varandra med kunskap, insikter, observationer och nya idéer. Jag vet inte om vi hittar dubbelt så många fel men vi gör en betydligt noggrannare och mer fokuserad analys då vi måste berätta för varandra vad vi håller på med. En svårighet är att inte dyka för djupt själv på egen hand utan att ha den andra med. Men totalt sett så ser jag det som väl investerad tid att växla melan egen test och parvis test.