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.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive functioning. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms.
Mynewsdesk - vår kommunikation i sociala medier april2011Mynewsdesk
Sociala medier på riktigt. Charlotte Ulvros, marknadschef på Mynewsdesk, presenterar hur hela företaget arbetar med sociala och digitala medier varje dag på alla avdelningar på 30 minuter. Taktik och tankar hur företaget jobbar oavsett om det gäller försäljning, marknad eller kundservice.
Presentationen hölls i samband med NPP Reklams frukostseminarium i april, 2011.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive functioning. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms.
Mynewsdesk - vår kommunikation i sociala medier april2011Mynewsdesk
Sociala medier på riktigt. Charlotte Ulvros, marknadschef på Mynewsdesk, presenterar hur hela företaget arbetar med sociala och digitala medier varje dag på alla avdelningar på 30 minuter. Taktik och tankar hur företaget jobbar oavsett om det gäller försäljning, marknad eller kundservice.
Presentationen hölls i samband med NPP Reklams frukostseminarium i april, 2011.
Design thinking & storytelling - föreläsning på Marknadsföringen i Dalarna av...Mathias Gullbrandson
A lecture on Design Thinking and storytelling as methods for business innovation by Mathias Gullbrandson, The Story Lab
The lecture was hold 2011-05-11 at MID (Marknadsföreningen i Dalarna), in Falun, Sweden.
The presentation is in Swedish.
Att mäta affärsmål, presentation at Google Analytics Conference Nordic 25 may...Carl-Magnus Löfström
Min presentation om hur AFA Försäkring jobbar för att mäta affärsmål med hjlp av Google Analytics. Handlar om att bryta ned affärsmål i mindre beståndsdelar för att till slut konvertera dem till kommunikationsmål som har mätpunkter som år att följa i Google Analytics.g
Der er mindst to gode grunde til at lave en kommunikationsplan.
Dine markedsføringsaktiviteter bliver resultatet af grundige overvejelser og planlægning i stedet for pludselige tilbud og indskydelser. Desuden vil der komme en rød tråd i dine aktiviteter, der øger effekten … du får ganske enkelt mere for dine markedsføringskroner. Og så er det da også et meget godt argument, at du kan lave den på en enkelt A4 side, ikke?
Marknadsföring och Kommunikation i Sociala medierKreafon
Marknadsföring och Kommunikation i Sociala Medier har lotsat hundratals, kanske tusentals, företag och organisationer ut i sociala medier. Andra och helt omarbetade upplagan är här.
Sociala medier är trams, säger skeptikern. Möjligheterna är oändliga! menar entusiasten. Vem har egentligen rätt?
Det bestämmer du själv efter att ha läst boken som gör dig till en vinnare på den sociala webben. Upptäck vilka sociala medier som är bäst för dig och hur du skapar mesta möjliga affärsnytta.
Denna andra och helt omarbetade upplaga berättar bland annat hur du:
- Väljer rätt kanaler
- Skapar attraktionskraft
- Undviker tidstjuvar
- Håller dig inom lagens gränser
PS. Att avfärda sociala medier innan man vet hur de funkar och vilken nytta de kan göra i affärssammanhang, medför att svenska företag går miste om miljarder i omsättning. Har vi råd med det idag?
Sociala Medier 2016 - Trender, nya beteenden och caseDaniel Chow
Den här presentationen ger en ögonblicksbild av hur det digitala medielandskapet med fokus på sociala medier ser ut i början av 2016. Den första delen ger en överblick av sociala medier och fokuserar på trender och nya beteenden samt hur sök påverkas av sociala medier. Den andra delen fokuserar intressanta case där sociala medier haft en väsentlig roll.
The document provides a marketing plan for CT Bento Cafe, a new Japanese restaurant in Ithaca, NY. The plan aims to increase awareness of the restaurant and position it as a healthy and affordable dining option for college students. Key tactics include revamping social media, developing a unified brand identity, organizing special promotions, and utilizing various media outlets like local newspapers, radio stations, and blogs to reach target audiences. The plan also includes competitor analyses, objectives, target audiences, and proposed strategies and tactics.
Design thinking & storytelling - föreläsning på Marknadsföringen i Dalarna av...Mathias Gullbrandson
A lecture on Design Thinking and storytelling as methods for business innovation by Mathias Gullbrandson, The Story Lab
The lecture was hold 2011-05-11 at MID (Marknadsföreningen i Dalarna), in Falun, Sweden.
The presentation is in Swedish.
Att mäta affärsmål, presentation at Google Analytics Conference Nordic 25 may...Carl-Magnus Löfström
Min presentation om hur AFA Försäkring jobbar för att mäta affärsmål med hjlp av Google Analytics. Handlar om att bryta ned affärsmål i mindre beståndsdelar för att till slut konvertera dem till kommunikationsmål som har mätpunkter som år att följa i Google Analytics.g
Der er mindst to gode grunde til at lave en kommunikationsplan.
Dine markedsføringsaktiviteter bliver resultatet af grundige overvejelser og planlægning i stedet for pludselige tilbud og indskydelser. Desuden vil der komme en rød tråd i dine aktiviteter, der øger effekten … du får ganske enkelt mere for dine markedsføringskroner. Og så er det da også et meget godt argument, at du kan lave den på en enkelt A4 side, ikke?
Marknadsföring och Kommunikation i Sociala medierKreafon
Marknadsföring och Kommunikation i Sociala Medier har lotsat hundratals, kanske tusentals, företag och organisationer ut i sociala medier. Andra och helt omarbetade upplagan är här.
Sociala medier är trams, säger skeptikern. Möjligheterna är oändliga! menar entusiasten. Vem har egentligen rätt?
Det bestämmer du själv efter att ha läst boken som gör dig till en vinnare på den sociala webben. Upptäck vilka sociala medier som är bäst för dig och hur du skapar mesta möjliga affärsnytta.
Denna andra och helt omarbetade upplaga berättar bland annat hur du:
- Väljer rätt kanaler
- Skapar attraktionskraft
- Undviker tidstjuvar
- Håller dig inom lagens gränser
PS. Att avfärda sociala medier innan man vet hur de funkar och vilken nytta de kan göra i affärssammanhang, medför att svenska företag går miste om miljarder i omsättning. Har vi råd med det idag?
Sociala Medier 2016 - Trender, nya beteenden och caseDaniel Chow
Den här presentationen ger en ögonblicksbild av hur det digitala medielandskapet med fokus på sociala medier ser ut i början av 2016. Den första delen ger en överblick av sociala medier och fokuserar på trender och nya beteenden samt hur sök påverkas av sociala medier. Den andra delen fokuserar intressanta case där sociala medier haft en väsentlig roll.
The document provides a marketing plan for CT Bento Cafe, a new Japanese restaurant in Ithaca, NY. The plan aims to increase awareness of the restaurant and position it as a healthy and affordable dining option for college students. Key tactics include revamping social media, developing a unified brand identity, organizing special promotions, and utilizing various media outlets like local newspapers, radio stations, and blogs to reach target audiences. The plan also includes competitor analyses, objectives, target audiences, and proposed strategies and tactics.
Examplariska exempel - Om att använda specificerande exempel för att förbättra samarbetet och utveckla rätt system
1. Exemplariska exempel
Använda specificerande exempel för att förbättra
samarbetet och utveckla rätt system
Joakim Holm, Adaptiv STHLM AB, 2011
lördag den 12 mars 2011 1
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. specificerande exempel
Karaktäriserande, konkret, exekverbar beskrivning
av korrekt beteende hos ett system
uttryckt på naturligt språk
lördag den 12 mars 2011 3
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 systemet
lördag den 12 mars 2011 9
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. 2
Arbetsprocessen
Acceptanskriteria:
- 1-dagskurser visas med startdatum
- Flerdagskurser visas som startdatum -
slutdatum
lördag den 12 mars 2011 11
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. 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. 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. 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. 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
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. 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 utvecklare
lördag den 12 mars 2011 21
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. 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. 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. 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. 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 WiP
lördag den 12 mars 2011 26
28. 3 sätt att ansluta
Exempel
Exempel Klient
Exempel Applikation Applikation
Domän Domän Domän
Domän direkt Simulerad klient Automatiserad klient
lördag den 12 mars 2011 28
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 DB
lördag den 12 mars 2011 29
30. 3 verktyg
http://code.google.com/p/robotframework/
Robot
http://fitnesse.org/
http://cukes.info/
lördag den 12 mars 2011 30
32. Exempel: Kursanmälan
CourseDescript
code
name
description
realises
Course
startDate Participant
endDate
Registration name
location timeStamp email
for by
teachers
lördag den 12 mars 2011 32
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älle
lördag den 12 mars 2011 33
34. Story:
För att förbättra mitt CV
Som deltagare
Kan jag anmäla mig till ett
aktuellt kurstillfälle
lördag den 12 mars 2011 34
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 full
lördag den 12 mars 2011 35
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
full
lördag den 12 mars 2011 36
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 varning
lördag den 12 mars 2011 37
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. 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. 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 regressionstester
lördag den 12 mars 2011 40