© Steria Å Lytte til koden Johannes Brodwall, Chief scientist, Steria Iterate 21. mai, 2010
TDD for fun and profit
En kodekata (30 min) Kode dojo (90 min) Et mer realistisk eksempel (90 min) Seks prinsipper
Hvorfor skriver vi programmer?
Hvorfor skriver vi programmer? Hvorfor tester vi programmer?
Del #1: Fizz Buzz
=> 1 2 => 2 3 => ”fizz” 4 => 4 5 => ”buzz” 6 => ”fizz” …
Hvorfor skriver vi programmer? Hvorfor tester vi programmer? Hva kan man lære av kode kata?
Kode dojo: Yatsi
(1,1,1,2,4),”enere” => 3 (5,5,5,4,4), ”hus” => 23 (1,2,3,4,5), ”hus” => 0
To ved tastaturet Rotering hvert 5. minutt De som sitter ved tastaturet bestemmer design Men kan spørre publikum
Uncle Bob’s tre regler No production code without failing test No more test code than makes the code fail No more production code than makes the test pass
TDD i “det virkelige liv” jhannes.blip.tv/file/ /
Prinsipp #1: Spesifiser utenfra og inn jhannes.blip.tv/file/ / (10 min) github.com/jhannes/java-ee-spike- kata/tree/1-outside-in
Hva så dere? Ende-til-ende-test (treg) Jetty, WebDriver
Prinsipp #2: Spesifiser oppførsel jhannes.blip.tv/file/ / jhannes.blip.tv/file/ / (6 min) github.com/jhannes/java-ee-spike- kata/tree/2-1-servlet-test
Hva så dere? Mockito, FEST-assert Beskriv formålet med testen Finkornete tester github.com/jhannes/java-ee-spike- kata/blob/commit_per_test/src/test/java/co m/brodwall/kata/javaee/PersonServletTest.j ava
Prinsipp #3: Test tett på koden jhannes.blip.tv/file/ / (5 min) github.com/jhannes/java-ee-spike- kata/tree/3-equals-test
Hva så dere? Test av meningsløs funksjon? Rask bytte mellom test og kode github.com/jhannes/java-ee-spike- kata/blob/commit_per_test/src/test/java/com/brodwall/kata/javaee/Pers onTest.java
Prinsipp #4: Dyrk fram et API jhannes.blip.tv/file/ / (8 min) github.com/jhannes/java-ee-spike- kata/tree/4-search-for-people
(Implementer etterpå) jhannes.blip.tv/file/ / (7 min) github.com/jhannes/java-ee-spike- kata/tree/5-3-person-dao-test/
Hva så dere? Mocking av API før implementering Kode som trenger å refaktoreres! (Never refactor on red!) github.com/jhannes/java-ee-spike- kata/blob/commit_per_test/src/main/java/com/brodwall/kata/javaee/Per sonDao.java
Prinsipp #5: Dyrk fram struktur jhannes.blip.tv/file/ / (3:20 min) github.com/jhannes/java-ee-spike- kata/tree/5-2-refactoring
Hva så dere? Hadde allerede refactorer viewene Masser koden med refactoring verktøy github.com/jhannes/java-ee-spike- kata/blob/commit_per_test/src/main/java/com/brodwall/kata/javaee/Per sonServlet.java
Pause før det viktigste prinsippet!
Prinsipp #6: Det skal virke første gang jhannes.blip.tv/file/ / (5 min) github.com/jhannes/java-ee-spike- kata/tree/6-getting-it-to-work
Hva så dere? Ende-til-ende test tester infrastruktur Koden virker første gang i browser github.com/jhannes/java-ee-spike- kata/blob/commit_per_test/src/test/java/com/brodwall/kata/javaee/Pers onWebTest.java
Verktøy JUnit ( Jetty ( WebDriver ( FEST-assert ( Mockito ( Hibernate (
#1: Bygg utenfra inn #2: Spesifiser oppførsel #3: Test nær koden #4: Dyrk fram API’et #5: Dyrk fram design #6: Det skal virke første gang
Retrospektiv
Hvorfor skriver vi programmer? Hvorfor tester vi programmer? Hva kan man lære av kode kata?
En ting som overrasket deg En ting du vil lære mer om En ting du er uenig i En ting du vil prøve
Johannes Brodwall Chief Scientist Steria, Norway Takk for oppmerksomheten