h1

Q: Automatisera tester i samma sprint?

måndag, 2 april, 2012

Att det är kämpigt och utmanande att implementera A-TDD och TDD skriver jag gärna under på. Att göra resan från en process där testning handlar om att kritisera kod efter att den är skriven till att bli ett verktyg för teamet (där testerna primärt tjänar till att stötta utveckling under tiden utveckling sker) kan både var bökig och omtumlande.

Framför allt måste man skruva ner tempot innan man kan skörda hyperproduktivitetens frukter och detta är inte alltid så lätt när trycket är högt att leverera maximalt just denna sprint. Och sprinten efter. Och sprinten efter den.

För en tid sedan fick jag följande mail på ämnet…

.


Hej Jimmy

[…] Jag har på jobbet kommit i liten het diskussion om (Sprintlängd och autotester) […]. Dvs att man måste få tillverkat automatiserade tester i samma sprint som utveckling sker i eller åtminstonde sprinten efter. […] Och då menar jag tester som Test Avd. tillverkar. Unittester antar jag du menade dev gör i sprinten tillsammans med utv. arbetet?

Vilken typ av projekt har du varit involverad i? Det kanske är svårare att applicera detta i avancerade system med få utvecklare, oklara krav och dagliga byggen, än i ett system för en myndighet tex med väldigt klara krav?

Finns det någon bra bok man kan läsa om detta?

Mvh
#####

.


Hej #####,

Min egen starka personliga åsikt är att man ska utveckla automatiserade tester för det man utvecklar i samma sprint som arbetet sker. Det gäller både utvecklarnas enhetstester och testarnas/kravställarnas automatiserade funktions- och acceptanstester.

Jag gillar skarpt David Evans syn på test och kod som summeras i citatet ”[Acceptance] Testing slows down development just as passangers slows down the bus – the speed of the bus is not the point!”. Målet med sprinten är alltid att leverera fungerande värdefull testad mjukvara. Hinner man inte åstadkomma detta under en sprint har teamet tagit på sig för många, alternativt för stora, User Stories.

.

Blir dock lite förvirrad över en sak du skriver. Finns det en separat testavdelning? Ett starkt agilt team består av all kompetens som behövs för att gå från idé till leverans. Detta inkluderar då kompetens som täcker programmering, testning, verksamhet, gränssnittsdesign, databasdesign, teknisk dokumentation, osv.

Jag har erfarenhet från både små och riktigt stora projekt. Jag håller såklart med om att utmaningarna och förutsättningarna är olika men jag tycker ambitionen ska vara densamma. Om ni är få utvecklare och tampas med otydliga krav så kommer tydliga krav ”tvingas” fram om ni försöker skriva automatiserade acceptanstester i samma sprint som jobbet sker. Jag menar, utvecklarna lyckas ju uppenbart klura ut vad de ska programmera, då borde testarna (om det nu är olika personer som kodar respektive skriver de automatiserade testerna) klara av att klura ut hur det ska testas. Om inte så finns det uppenbart diskussioner och informationsloopar som testarna inte är med i.

Genom att skriva de automatiserade testerna först i sprinten efter tappar man halva poängen med dem som jag ser det. Visst, man bygger på en regressionstestsvit som är automatiserad och upprepbar, men styrkan med testautomatisering är att det möjliggör TDD! Att skriva testerna innan och samtidigt som koden (genom TDD) förkortar feedbacklopparna, förenklar koden, gör systemet testvänligt och spar tid totalt (för att räkna upp några fördelar).

.

Jag kan ge tre boktips. Det finns säkert fler bra böcker men dessa har jag läst och tycker är bra:

1) Agile Testing (Lisa Crispin and Janet Gregory) – En riktigt bra bok som berättar på en konkret och praktiskt sätt hur man bygger upp en bra agil test strategi.

2) Lean-Agile Acceptance Test-Driven Development (Ken Pugh) – Också riktigt bra. Den beskriver hur man går tillväga för att driva designen framåt i ett projekt genom testning (istället för genom krav).

3) Test Driven Development: By Example (Kent Beck) – Berättar på ett mer teknisk plan hur man går tillväga och kommer gång med TDD.

.

Hoppas detta svar gav några idéer och upplägg på hur ni går vidare i diskussionerna.

Med Vänlig Hälsning
/Jimmy

.

2 kommentarer

  1. Hej Jimmy! Håller med om mycket av det du skriver, men vill bidra med ett annat perspektiv.

    Som jag ser det finns det tre sätt att hantera fel av olika slag: 3. Bli duktig på att rätta dem, 2. Bli duktig på att hitta dem snabbt, 1. Bli duktig på att undvika dem. Den sistnämnda är givetvis att föredra, därav numreringen (om vi antar att kostnaden för att hitta och rätta fel i efterhand är högre, vilket är det typiska).

    Traditionella grupper av utvecklare och testare kan bli bra på nr 3. Agila team, med inbäddade, tekniska testare med god domänkunskap, satsar på nr 1 – i andra hand nummer 2. Därför måste arbetet ske parallellt, dvs i samma sprint.

    Testare i agila team klarar inte detta själva – alla måste deltaga. Därför måste testspecialisten agera som coach för övriga i hur man skriver mjukvara av hög kvalitet. I det bör inte bara ingå felfrihet utan också missförståndsfrihet och användningskvalitet.

    Nu snackar vi en spännande testroll – inte någon som sitter vid sidan om och ”tillverkar tester”.


    • Tack Joakim för din kommentar! Jag kan bara instämma. Du belyser en viktig aspekt och en spännande konsekvens av att utveckling och test på sätt och vis faktiskt smälter samman och utmanar och utvecklar rollerna i sig. /Jimmy



Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s

%d bloggare gillar detta: