Exemplariska exempel         Använda specificerande exempel för att förbättra         samarbetet och utveckla rätt system  ...
Vem talar? Vem talar?               Inom mjukvara sedan 1994 ✦ Praktiserat agila               metoder sedan år 2001 ✦ I s...
specificerande exempel                 Karaktäriserande, konkret, exekverbar beskrivning                 av korrekt beteend...
Exempel avluddar budskap         Graham Barker, bibliotekarielördag den 12 mars 2011                 4
Bro för kommunikation         Över mörka vattenlördag den 12 mars 2011          5
Spel kräver en spelplan         Vuxna män gör saker tillsammanslördag den 12 mars 2011                    6
Exempelexempellördag den 12 mars 2011   7
lördag den 12 mars 2011   8
Grunderna i exempel                          Givet att jag redigerar kontaktuppgifter                          När jag änd...
1         Arbetsprocessen                          Story:                          För att locka fler deltagare           ...
2         Arbetsprocessen                          Acceptanskriteria:                          - 1-dagskurser visas med st...
3         Arbetsprocessen                          Exempel:                          - Kurstillfälle som inte fått ett dat...
4         Arbetsprocessen                          Scenario: 2-dagarskurs                            Givet ett kurstillfäl...
5         Arbetsprocessen                          Given /^ett kurstillfälle$/ do                            pending      ...
6         Arbetsprocessen                          Given /^ett kurstillfälle$/ do                            @course = Cou...
7         Arbetsprocessen                          Scenario: 2-dagarskurs                            Givet ett kurstillfäl...
8         Arbetsprocessenlördag den 12 mars 2011        17
9         Arbetsprocessen                          Using the default profile...                          ....................
lördag den 12 mars 2011   19
Tre vanliga tankefel                          1. "ATDD är ett testverktyg"                                (det hör man ju!...
Tre vanliga tankefel            2. "Kraven måste ju komma från verksamheten"                        (det är ju deras ansva...
Tre vanliga tankefel                          3. "Allt måste specificeras via exempel!"                                (pro...
Spec:a inte impl.detaljer          Givet att jag är på ansökningssidan till kursen "Makramé"          När jag fyller i tex...
Spec:a inte allt          Givet att jag är på anmälningssidan till "Motorprogrammet"          När jag fyller i tidigare ak...
Spec:a inte persistens      Givet att jag kan redigera kontaktuppgifter      När jag redigerar namn till "Hocke Jolm"     ...
Råd för dåd                          Tala svenska (verksamhetsspråket)                          Använd ert gemensamma språ...
lördag den 12 mars 2011   27
3 sätt att ansluta                                                     Exempel                                Exempel     ...
3 sätt för data                    Exempel      Exempel        Exempel                      Domän      Domän           Dom...
3 verktyg                                  http://code.google.com/p/robotframework/                          Robot        ...
Exempelövninglördag den 12 mars 2011   31
Exempel: Kursanmälan         CourseDescript         code         name         description                          realise...
Drivande stories         Admin                              Deltagare               CRUD kurser                   Lista al...
Story:                          För att förbättra mitt CV                          Som deltagare                          ...
Acceptanskriteria:                          - Deltagare kan bara anmäla sig till                          kommande kurser ...
Övning 1: Exempellistan                          Exempel:                          - Deltagare kan bara anmäla sig till ku...
Facit 1: Exempellistan                          Exempel:                          - Deltagare kan anmäla sig till kurstill...
Övning 2: Ett exempel                          Exempel: Deltagare kan inte anmäla sig till                          samma ...
Facit 2: Ett exempel                          Exempel: Deltagare kan inte anmäla sig till                          samma k...
Potentiella vinster           Färre missförstånd            Synk mellan krav & test                               Ökad kän...
joakim holm                          AGILE SOFTWARE DEVELOPER & COACH                                        +46 70 773 76...
lördag den 12 mars 2011   42
Upcoming SlideShare
Loading in …5
×

Examplariska exempel - Om att använda specificerande exempel för att förbättra samarbetet och utveckla rätt system

1,185 views

Published on

Så kallade specificerande exempel (kundorienterade, ofta automatiserade funktionstester) är ett missförstått och kritiserat arbetssätt. Somliga hävdar till och med att de mest är en dröm från extremagilister som inte fungerar i praktiken. Vi som har sett dem fungera alldeles utmärkt vet att så inte behöver vara fallet. Tvärtom kan de kännas nästan ovärderliga. I den här session vill jag gräva lite i detta. Vad är poängen med specificerande exempel i en effektiv utvecklingsprocess? Vilka är de potentiella fördelarna? Vilka problem kan man råka ut för? Vad är bra arbetssätt och vad bör vi undvika? Hur kan vi få det att fungera rent praktiskt?

Bilderna hör samman med ett föredrag som jag gav på DevLin2011, en systemutvecklingskonferens i Linköping, 10 Mars, 2011.

Published in: Technology, Business
1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
1,185
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Examplariska exempel - Om att använda specificerande exempel för att förbättra samarbetet och utveckla rätt system

  1. 1. Exemplariska exempel Använda specificerande exempel för att förbättra samarbetet och utveckla rätt system Joakim Holm, Adaptiv STHLM AB, 2011lördag den 12 mars 2011 1
  2. 2. Vem talar? Vem talar? Inom mjukvara sedan 1994 ✦ Praktiserat agila metoder sedan år 2001 ✦ I styrelsen av Agile Sweden ✦ Medgrundare och konsult på Adaptiv (2009) ✦ Medgrundare av Agila Sverige-konferensen (2008)lördag den 12 mars 2011 2
  3. 3. specificerande exempel Karaktäriserande, konkret, exekverbar beskrivning av korrekt beteende hos ett system uttryckt på naturligt språklördag den 12 mars 2011 3
  4. 4. Exempel avluddar budskap Graham Barker, bibliotekarielördag den 12 mars 2011 4
  5. 5. Bro för kommunikation Över mörka vattenlördag den 12 mars 2011 5
  6. 6. Spel kräver en spelplan Vuxna män gör saker tillsammanslördag den 12 mars 2011 6
  7. 7. Exempelexempellördag den 12 mars 2011 7
  8. 8. lördag den 12 mars 2011 8
  9. 9. Grunderna i exempel Givet att jag redigerar kontaktuppgifter När jag ändrar namn till "Hocke Jolm" Och jag sparar ändringen Så visas ett meddelande: "Fel. Hocke Jolm är inget vettigt namn." Och jag heter "Jocke Holm" i systemetlördag den 12 mars 2011 9
  10. 10. 1 Arbetsprocessen Story: För att locka fler deltagare Som deltagare Kan jag korrekt och koncist se när kursen ges.lördag den 12 mars 2011 10
  11. 11. 2 Arbetsprocessen Acceptanskriteria: - 1-dagskurser visas med startdatum - Flerdagskurser visas som startdatum - slutdatumlördag den 12 mars 2011 11
  12. 12. 3 Arbetsprocessen Exempel: - Kurstillfälle som inte fått ett datum ännu visas som "(datum kommer)" - 1-dagskurser visas som "7 mars 2011" - Flerdagskurser visas som "7 mars 2011 - 10 mars 2011" ...lördag den 12 mars 2011 12
  13. 13. 4 Arbetsprocessen Scenario: 2-dagarskurs Givet ett kurstillfälle När jag sätter startdatum till "2011-03-07" Och jag sätter slutdatum till "2011-03-08" Så visas kursdatum som "07 Mar, 2011 - 08 Mar, 2011"lördag den 12 mars 2011 13
  14. 14. 5 Arbetsprocessen Given /^ett kurstillfälle$/ do pending end When /^jag sätter startdatum till "([^"]*)"$/ do |start_date| pending end ...lördag den 12 mars 2011 14
  15. 15. 6 Arbetsprocessen Given /^ett kurstillfälle$/ do @course = Course.create! end When /^jag sätter startdatum till "([^"]*)"$/ do |start_date| @course.update_attribute( :start_date, Date.parse(start_date)) end ...lördag den 12 mars 2011 15
  16. 16. 7 Arbetsprocessen Scenario: 2-dagarskurs Givet ett kurstillfälle När jag sätter startdatum till "2011-03-07" Och jag sätter slutdatum till "2011-03-08" Så visas kursdatum som "07 Mar, 2011 - 08 Mar, 2011"lördag den 12 mars 2011 16
  17. 17. 8 Arbetsprocessenlördag den 12 mars 2011 17
  18. 18. 9 Arbetsprocessen Using the default profile... ............................................ ......................... 24 scenarios (24 passed) 69 steps (69 passed) 0m4.477slördag den 12 mars 2011 18
  19. 19. lördag den 12 mars 2011 19
  20. 20. Tre vanliga tankefel 1. "ATDD är ett testverktyg" (det hör man ju!) Nej! Det är ett arbetssätt för att i samarbete utforska, kommunicera och validera funktioner.lördag den 12 mars 2011 20
  21. 21. Tre vanliga tankefel 2. "Kraven måste ju komma från verksamheten" (det är ju deras ansvar) Nej! Det måste ske i samarbete mellan domänexpert, testare och utvecklarelördag den 12 mars 2011 21
  22. 22. Tre vanliga tankefel 3. "Allt måste specificeras via exempel!" (processer är till för att följas) Nej! Använd rätt verktyg för rätt jobb.lördag den 12 mars 2011 22
  23. 23. Spec:a inte impl.detaljer Givet att jag är på ansökningssidan till kursen "Makramé" När jag fyller i textfältet "Namn" med "Jocke Holm" Och textfältet "E-postadress" med "jocke@adaptiv.se" Och klickar på knappen "Skicka" Så visas meddelandet "Du är anmäld till kursen Makramé" Givet att jag ska ansöka till kursen "Makramé" När jag anger namn "Jocke Holm" ansöker till kursen med namn och e-postadress Och jag anger e-postadress "jocke@adaptiv.se" Så bekräftas min ansökan Och jag skickar in anmälan Så bekräftas att "Jocke Holm" har ansökt till kursen "Makramé"lördag den 12 mars 2011 23
  24. 24. Spec:a inte allt Givet att jag är på anmälningssidan till "Motorprogrammet" När jag fyller i tidigare akademiska poäng med "25,5" Så visas felmeddelande "Enbart heltal" <enhetstest>lördag den 12 mars 2011 24
  25. 25. Spec:a inte persistens Givet att jag kan redigera kontaktuppgifter När jag redigerar namn till "Hocke Jolm" Och sparar nya kontaktuppgifter Så sparas mina kontaktuppgifter i databasen Och min profil visas Och mitt namn är nu "Hocke Jolm" <integrationstest>lördag den 12 mars 2011 25
  26. 26. Råd för dåd Tala svenska (verksamhetsspråket) Använd ert gemensamma språk Komplettera exempel med beskrivningar Fokusera på domänlogiken Se gärna till att alla kan exekvera Två sviter: Regression och WiPlördag den 12 mars 2011 26
  27. 27. lördag den 12 mars 2011 27
  28. 28. 3 sätt att ansluta Exempel Exempel Klient Exempel Applikation Applikation Domän Domän Domän Domän direkt Simulerad klient Automatiserad klientlördag den 12 mars 2011 28
  29. 29. 3 sätt för data Exempel Exempel Exempel Domän Domän Domän Infrastruktur Infrastruktur DB-stubbe DB DB Populerad DB Rensad DB Emulerad DBlördag den 12 mars 2011 29
  30. 30. 3 verktyg http://code.google.com/p/robotframework/ Robot http://fitnesse.org/ http://cukes.info/lördag den 12 mars 2011 30
  31. 31. Exempelövninglördag den 12 mars 2011 31
  32. 32. Exempel: Kursanmälan CourseDescript code name description realises Course startDate Participant endDate Registration name location timeStamp email for by teacherslördag den 12 mars 2011 32
  33. 33. Drivande stories Admin Deltagare CRUD kurser Lista alla kurser CRUD kurstillfällen Se kursdetaljer med kurstillfällen Lista alla anmälningar för kurstillfälle Lista alla kommande kurstillfällen Mejla bekräftelse till deltagarna Anmäl mig till kurstillfällelördag den 12 mars 2011 33
  34. 34. Story: För att förbättra mitt CV Som deltagare Kan jag anmäla mig till ett aktuellt kurstillfällelördag den 12 mars 2011 34
  35. 35. Acceptanskriteria: - Deltagare kan bara anmäla sig till kommande kurser - Deltagare kan inte anmäla sig till kurs som redan har gått - Deltagare kan inte anmäla sig till kurs som är fulllördag den 12 mars 2011 35
  36. 36. Övning 1: Exempellistan Exempel: - Deltagare kan bara anmäla sig till kurs som har ett startdatum - Deltagare kan inte anmäla sig till kurs som redan har gått - Deltagare kan inte anmäla sig till kurs som är fulllördag den 12 mars 2011 36
  37. 37. Facit 1: Exempellistan Exempel: - Deltagare kan anmäla sig till kurstillfälle - Deltagare kan inte anmäla sig till kurstillfälle som inte har ett startdatum - Deltagare kan inte anmäla sig till kurs som har startat eller genomförts - Deltagare kan inte anmäla sig till kurs som är full (antalet platser är lika med antalet anmälningar) - Deltagare kan inte anmäla sig till samma kurstillfälle t vå ggr. - Deltagare som anmäler sig till en kurs de redan har gått ska få en varninglördag den 12 mars 2011 37
  38. 38. Övning 2: Ett exempel Exempel: Deltagare kan inte anmäla sig till samma kurstillfälle t vå ggr. Scenario: Dubbel anmälan Givet ... När jag anmäler mig med e-postadress "johan@adaptiv.se" Så ...lördag den 12 mars 2011 38
  39. 39. Facit 2: Ett exempel Exempel: Deltagare kan inte anmäla sig till samma kurstillfälle t vå ggr. Scenario: Dubbel anmälan Givet en kurs med namn "Data" Och ett kurstillfälle som startar "2011-03-07" Och en anmäld deltagare med e-postadress "johan@adaptiv.se" När jag anmäler mig med e-postadress "johan@adaptiv.se" Så är jag inte anmäld till kursen "Data" som startar "2011-03-07" Och jag ser meddelandet "Du är redan anmäld till kursen!"lördag den 12 mars 2011 39
  40. 40. Potentiella vinster Färre missförstånd Synk mellan krav & test Ökad känsla av delaktighet Korrekt dokumentation Mindre omarbete Minskar spekulativ utveckling Minskat dubbelarbete Bättre samarbete Bättre regressionstesterlördag den 12 mars 2011 40
  41. 41. joakim holm AGILE SOFTWARE DEVELOPER & COACH +46 70 773 76 29 joakim.holm@adaptiv.se jockeholm.wordpress.com twitter: jockeholmlördag den 12 mars 2011 41
  42. 42. lördag den 12 mars 2011 42

×