tdd over bdd why and how
DESCRIPTION
TDD over BDD why and how. XP meetup Johannes Brodwall, Programming artist Steria Norway. Hva er TDD? Hvem myrdet FitNesse ? Hvorfor vil BDD feile? Et alternativ. 1. TDD. Demo. TDD er…. …treningsform. …frigjøring av hjernekraft. …forståelse. TDD er ikke…. …alltid riktig. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/1.jpg)
TDD over BDDwhy and how
XP meetupJohannes Brodwall, Programming artist
Steria Norway
![Page 2: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/2.jpg)
![Page 3: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/3.jpg)
![Page 4: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/4.jpg)
•Hva er TDD?•Hvem myrdet FitNesse?•Hvorfor vil BDD feile?•Et alternativ
![Page 5: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/5.jpg)
1. TDD
![Page 6: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/6.jpg)
Demo
![Page 7: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/7.jpg)
TDD er…
![Page 8: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/8.jpg)
…treningsform
![Page 9: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/9.jpg)
…frigjøring av hjernekraft
![Page 10: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/10.jpg)
…forståelse
![Page 11: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/11.jpg)
TDD er ikke…
![Page 12: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/12.jpg)
…alltid riktig
![Page 13: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/13.jpg)
…alltid riktig(men oftere enn du tror)
![Page 14: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/14.jpg)
…kvalitetsgaranti
![Page 15: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/15.jpg)
Eksempel:FitNesse
![Page 16: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/16.jpg)
103.38% testdekning
![Page 17: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/17.jpg)
103.38% testdekning(ikke bekreftet)
![Page 18: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/18.jpg)
![Page 19: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/19.jpg)
Støtter ikke UTF-8
![Page 20: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/20.jpg)
Netto tap for brukere
![Page 21: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/21.jpg)
2. Mordet på FitNesse
![Page 22: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/22.jpg)
Johannes
Kodebase
maintest
FitNesse
![Page 23: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/23.jpg)
Johannes
Kodebase
maintest
FitNesse
Hmmm….
![Page 24: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/24.jpg)
Johannes
Kodebase
maintest
FitNesse
Litt rotete og tregt.
Utvikler
Enig. Let’s refactor!
![Page 25: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/25.jpg)
Produktiv tid passerer….
![Page 26: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/26.jpg)
Johannes
Kodebase
maintest
FitNesse
Ah, endelig ferdig
Utvikler
![Page 27: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/27.jpg)
Johannes
Kodebase
maintest
FitNesse
Hva med FitNesse?
Utvikler
![Page 28: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/28.jpg)
Johannes
Kodebase
maintest
FitNesse
Burde gå greit… La
oss se
Utvikler
![Page 29: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/29.jpg)
Johannes
Kodebase
maintest
FitNesse
Kom visst borti noe
Utvikler
![Page 30: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/30.jpg)
Johannes
Kodebase
maintest
FitNesse
Hva f… skjer her?
Utvikler
![Page 31: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/31.jpg)
Ikke-Produktiv tid passerer….
![Page 32: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/32.jpg)
Neste morgen
![Page 33: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/33.jpg)
Nesten ferdig med historien
Johannes
![Page 34: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/34.jpg)
Mangler bare FitNesse test
Johannes
![Page 35: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/35.jpg)
Samme herJohannes
Hmmm….
![Page 36: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/36.jpg)
Utvikler
Utvikler
Hvorfor skriver vi FitNesse tester
Hmmm…
Johannes
![Page 37: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/37.jpg)
Utvikler
Utvikler
Det blir lissom JUnit-tester på
nytt
Johannes
![Page 38: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/38.jpg)
Utvikler
Utvikler
Litt vanskeligere å debugge…
Johannes
![Page 39: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/39.jpg)
Utvikler
Utvikler
Men da bruker vi JUnit-testene.
Johannes
![Page 40: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/40.jpg)
Utvikler
Utvikler
Har dere bruk for FitNesse testene?
Hmmm…
Johannes
![Page 41: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/41.jpg)
Utvikler
Utvikler
Tror testleder vil ha dem…
Hmmm….Johannes
![Page 42: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/42.jpg)
Testleder
Hva bruker vi FitNesse testene
til?
Johannes
Utviklerne viser dem til meg når de er ferdige.
![Page 43: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/43.jpg)
Testleder
Johannes
Og jeg tror kunden vil ha
dem
Hmmm….
![Page 44: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/44.jpg)
Kundens arkitekt
Johannes
Få FitNesse tester er slik vi
vil…
![Page 45: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/45.jpg)
Johannes
Jeg har ikke sett på FitNesse på
måneder
Produkteier
![Page 46: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/46.jpg)
Johannes
Utvikler
Utvikler
Hva gjør dere med FitNesse
tester
![Page 47: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/47.jpg)
Johannes
Utvikler
Utvikler
Beskrive manuelle tester
![Page 48: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/48.jpg)
Johannes
Utvikler
Utvikler
Ja. Ugh!
![Page 49: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/49.jpg)
When …
![Page 50: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/50.jpg)
… stop digging!
![Page 51: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/51.jpg)
3. Hvorfor BDD mislykkes
![Page 52: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/52.jpg)
Gitt at linje 12 går fra knutepunkt a til knutepunkt b,og knutepunkt a ligger i NO3og knutepunkt b ligger i NL,når systemet mottar en utveksling over linje 12 på
700 MWh for 12.06.2011 mellom 14:00 og 15:00,så skal følgende kraftbidrag blir registrert:
Område Knutepunkt Start Slutt EffektNO3 a 201…T15:00 201…T16:00 -700 MWh
![Page 53: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/53.jpg)
Gitt at linje 12 går fra knutepunkt a til knutepunkt b,
og knutepunkt a ligger i NO3og knutepunkt b ligger i NL,når systemet mottar en utveksling over linje 12
på 700 MWh for 12.06.2011 mellom 14:00 og 15:00,
så skal følgende kraftbidrag blir registrert:Område Knutepunkt Start Slutt EffektNO3 a 201…T13:00 201…T16:00 -700 MWh
(missing)
![Page 54: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/54.jpg)
Gitt at linje 12 går fra knutepunkt a til knutepunkt b,
og knutepunkt a ligger i NO3og knutepunkt b ligger i NL,når systemet mottar en utveksling over linje 12
på 700 MWh for 12.06.2011 mellom 14:00 og 15:00,
så skal følgende kraftbidrag blir registrert:Område Knutepunkt Start Slutt EffektNO3 a 201…T15:00 201…T16:00 700 MWh
-700 MWh
![Page 55: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/55.jpg)
Gitt at linje 12 går fra knutepunkt a til knutepunkt b,
og knutepunkt a ligger i NO3og knutepunkt b ligger i NL,når systemet mottar en utveksling over linje 12
på 700 MWh for 12.06.2011 mellom 14:00 og 15:00,
så skal følgende kraftbidrag blir registrert:Område Knutepunkt Start Slutt EffektNO3 a 201…T14:00 201…T15:00 -700 MWh
![Page 56: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/56.jpg)
Gitt at linje 12 går fra knutepunkt a til knutepunkt b,
og knutepunkt a ligger i NO3og knutepunkt b ligger i NL,når systemet mottar en utveksling over linje 12
på 700 MWh for 12.06.2011 mellom 14:00 og 15:00,
så skal følgende kraftbidrag blir registrert:Område Knutepunkt Start Slutt EffektNO3 a 201…T15:00 201…T16:00 -700 MWh
NO2 Z 201…T15:00 201…T16:00 288 MWh (ekstra)
![Page 57: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/57.jpg)
Gitt at linje 12 går fra knutepunkt a til knutepunkt b,
og knutepunkt a ligger i NO3og knutepunkt b ligger i NL,når systemet mottar en utveksling over linje 12
på 700 MWh for 12.06.2011 mellom 14:00 og 15:00,
så skal følgende kraftbidrag blir registrert:Område Knutepunkt Start Slutt EffektNO3 a 201…T15:00 201…T16:00 -700 MWh
NL b 201…T15:00 201…T16:00 700 MWh (ekstra)
![Page 58: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/58.jpg)
Gitt at linje 12 går fra knutepunkt a til knutepunkt b,og knutepunkt a ligger i NO3og knutepunkt b ligger i NL,når en utveksling over linje 12 på 700 MWh registreres for 12.06.2011 mellom 14:00 og 15:00,så skal følgende kraftbidrag blir registrert:Område Knutepunkt Start Slutt EffektNO3 a 201…T14:00 201…T15:00 -700 MWh
Holy crap!
Johannes
![Page 59: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/59.jpg)
Gitt en kraftlinje fra et norsk elspotområde til et utlandsk elspotområde,
Når vi mottar en måling for linjaså skal kun bidraget til det norske
området registreres
![Page 60: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/60.jpg)
Hva er viktig med ”key examples?”
![Page 61: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/61.jpg)
Kundedialog er essensielt
![Page 62: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/62.jpg)
Automatisering er irrelevant
![Page 63: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/63.jpg)
Ingen går i prod uten manuell test
![Page 64: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/64.jpg)
4. Hvordan lykkes med TDD
![Page 65: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/65.jpg)
1. Nøkkeleksempel
![Page 66: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/66.jpg)
Gitt en kraftlinje fra et norsk elspotområde til et utlandsk elspotområde,
Når vi mottar en måling for linjaså skal kun bidraget til det norske
området registreres
![Page 67: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/67.jpg)
Nøkkeleksempel:Formål fremfor automatisering
![Page 68: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/68.jpg)
De lo når jeg testet manuelt,
![Page 69: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/69.jpg)
… men når det ikke var feil…
![Page 70: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/70.jpg)
2. Enhetstest
![Page 71: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/71.jpg)
@Testpublic void shouldCreatePerson() throws Exception { Connection connMock = mock(Connection.class); PreparedStatement statementMock = mock(PreparedStatement.class); when(connMock.prepareStatement(anyString())) .thenReturn(statementMock); Person person = Person.withName("Darth", "Vader"); personDao.createPerson(person); ArgumentCaptor sqlCaptor = ArgumentCaptor.forClass(String.class); verify(connMock.prepareStatement(sqlCaptor.capture())); assertThat(sqlCaptor.getValue()) .contains("insert into table person");
verify(statementMock).setString(1, "Darth"); verify(statementMock).setString(2, "Vader");}
NEVER
do this!
![Page 72: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/72.jpg)
@Testpublic void shouldLimitFindToQuery() throws Exception { personDao.beginTransaction(); Person matchingPerson = Person.withName("Darth", "Vader"); Person nonMatchingPerson = Person.withName("Darth", “Maul"); personDao.createPerson(matchingPerson); personDao.createPerson(nonMatchingPerson);
assertThat(personDao.findPeople("vader")) .contains(matchingPerson) .excludes(nonMatchingPerson);}
![Page 73: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/73.jpg)
@Testpublic void shouldLimitFindToQuery() { Person match = Person.withName("Darth", "Vader"); Person nonMatch = Person.withName("Darth", “Maul"); personDao.createPerson(match); personDao.createPerson(nonMatch);
assertThat(personDao.findPeople("vader")) .contains(match) .excludes(nonMatch);}
![Page 74: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/74.jpg)
Enhetstest:Formål fremfor oppførsel
![Page 75: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/75.jpg)
3. Trening
![Page 76: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/76.jpg)
Trening:Intensjon framfor
tastetrykk
![Page 77: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/77.jpg)
Kommunikasjoneller
Automatisering
![Page 78: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/78.jpg)
Ja, takk
![Page 79: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/79.jpg)
Men ikke i samme test
![Page 80: TDD over BDD why and how](https://reader035.vdocuments.us/reader035/viewer/2022062315/56815c3c550346895dca33a1/html5/thumbnails/80.jpg)
Takk for [email protected]
http://johannesbrodwall.comhttp://sterkblanding.no
http://twitter.com/jhannes