• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Examplariska exempel - Om att använda specificerande exempel för att förbättra samarbetet och utveckla rätt system
 

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

on

  • 1,144 views

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 ...

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.

Statistics

Views

Total Views
1,144
Views on SlideShare
1,144
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
1

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • 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
    • 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
    • specificerande exempel Karaktäriserande, konkret, exekverbar beskrivning av korrekt beteende hos ett system uttryckt på naturligt språklördag den 12 mars 2011 3
    • 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 ä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
    • 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
    • 2 Arbetsprocessen Acceptanskriteria: - 1-dagskurser visas med startdatum - Flerdagskurser visas som startdatum - slutdatumlördag den 12 mars 2011 11
    • 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
    • 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
    • 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
    • 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
    • 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
    • 8 Arbetsprocessenlördag den 12 mars 2011 17
    • 9 Arbetsprocessen Using the default profile... ............................................ ......................... 24 scenarios (24 passed) 69 steps (69 passed) 0m4.477slördag den 12 mars 2011 18
    • lördag den 12 mars 2011 19
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • lördag den 12 mars 2011 27
    • 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
    • 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
    • 3 verktyg http://code.google.com/p/robotframework/ Robot http://fitnesse.org/ http://cukes.info/lördag den 12 mars 2011 30
    • Exempelövninglördag den 12 mars 2011 31
    • 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
    • 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
    • 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
    • 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
    • Ö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
    • 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
    • Ö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
    • 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
    • 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
    • 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
    • lördag den 12 mars 2011 42