www steria no Lytte til koden Johannes Brodwall
www. steria. no Å Lytte til koden Johannes Brodwall, Chief scientist, Steria Iterate 21. mai, 2010 © Steria
TDD for fun and profit www. steria. no 23. 11. 2020 2
• En kodekata (30 min) • Kode dojo (90 min) • Et mer realistisk eksempel (90 min) • Seks prinsipper www. steria. no 23. 11. 2020 3
Hvorfor skriver vi programmer? www. steria. no 23. 11. 2020 4
Hvorfor skriver vi programmer? Hvorfor tester vi programmer? www. steria. no 23. 11. 2020 5
Del #1: Fizz Buzz www. steria. no 23. 11. 2020 6
Hvorfor skriver vi programmer? Hvorfor tester vi programmer? Hva kan man lære av kode kata? www. steria. no 23. 11. 2020 8
Kode dojo: Yatsi www. steria. no 23. 11. 2020 9
• (1, 1, 1, 2, 4), ”enere” => 3 • (5, 5, 5, 4, 4), ”hus” => 23 • (1, 2, 3, 4, 5), ”hus” => 0 www. steria. no 23. 11. 2020 10
• To ved tastaturet • Rotering hvert 5. minutt • De som sitter ved tastaturet bestemmer design • Men kan spørre publikum www. steria. no 23. 11. 2020 11
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 www. steria. no 23. 11. 2020 12
TDD i “det virkelige liv” http: //jhannes. blip. tv/file/3487566/ www. steria. no 23. 11. 2020 13
Prinsipp #1: Spesifiser utenfra og inn github. com/jhannes/java-ee-spikekata/tree/1 -outside-in www. steria. no 23. 11. 2020 14 jhannes. blip. tv/file/3487399/ (10 min)
Hva så dere? Ende-til-ende-test (treg) Jetty, Web. Driver www. steria. no 23. 11. 2020 15
Prinsipp #2: Spesifiser oppførsel github. com/jhannes/java-ee-spikekata/tree/2 -1 -servlet-test www. steria. no 23. 11. 2020 16 jhannes. blip. tv/file/3487395/ (6 min)
Hva så dere? Mockito, FEST-assert Beskriv formålet med testen Finkornete tester github. com/jhannes/java-ee-spikekata/blob/commit_per_test/src/test/java/co m/brodwall/kata/javaee/Person. Servlet. Test. java www. steria. no 23. 11. 2020 17
Prinsipp #3: Test tett på koden github. com/jhannes/java-ee-spikekata/tree/3 -equals-test www. steria. no 23. 11. 2020 18 jhannes. blip. tv/file/3487334/ (5 min)
Hva så dere? Test av meningsløs funksjon? Rask bytte mellom test og kode github. com/jhannes/java-ee-spikekata/blob/commit_per_test/src/test/java/com/brodwall/kata/javaee/Pers on. Test. java www. steria. no 23. 11. 2020 19
Prinsipp #4: Dyrk fram et API github. com/jhannes/java-ee-spikekata/tree/4 -search-for-people www. steria. no 23. 11. 2020 20 jhannes. blip. tv/file/3487377/ (8 min)
(Implementer etterpå) github. com/jhannes/java-ee-spikekata/tree/5 -3 -person-dao-test/ www. steria. no 23. 11. 2020 21 jhannes. blip. tv/file/3487456/ (7 min)
Hva så dere? Mocking av API før implementering Kode som trenger å refaktoreres! (Never refactor on red!) github. com/jhannes/java-ee-spikekata/blob/commit_per_test/src/main/java/com/brodwall/kata/javaee/Per son. Dao. java www. steria. no 23. 11. 2020 22
Prinsipp #5: Dyrk fram struktur github. com/jhannes/java-ee-spikekata/tree/5 -2 -refactoring www. steria. no 23. 11. 2020 23 jhannes. blip. tv/file/3487376/ (3: 20 min)
Hva så dere? Hadde allerede refactorer viewene Masser koden med refactoring verktøy github. com/jhannes/java-ee-spikekata/blob/commit_per_test/src/main/java/com/brodwall/kata/javaee/Per son. Servlet. java www. steria. no 23. 11. 2020 24
Pause før det viktigste prinsippet! www. steria. no 23. 11. 2020 25
Prinsipp #6: Det skal virke første gang github. com/jhannes/java-ee-spikekata/tree/6 -getting-it-to-work www. steria. no 23. 11. 2020 26 jhannes. blip. tv/file/3487396/ (5 min)
Hva så dere? Ende-til-ende tester infrastruktur Koden virker første gang i browser github. com/jhannes/java-ee-spikekata/blob/commit_per_test/src/test/java/com/brodwall/kata/javaee/Pers on. Web. Test. java www. steria. no 23. 11. 2020 27
Verktøy JUnit (http: //junit. org) Jetty (http: //www. mortbay. org) Web. Driver (http: //code. google. com/p/selenium) FEST-assert (http: //easytesting. org/assert/) Mockito (http: //mockito. org) Hibernate (http: //hibernate. org) www. steria. no 23. 11. 2020 28
#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 www. steria. no 23. 11. 2020 29
Retrospektiv www. steria. no 23. 11. 2020 30
Hvorfor skriver vi programmer? Hvorfor tester vi programmer? Hva kan man lære av kode kata? www. steria. no 23. 11. 2020 31
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 www. steria. no 23. 11. 2020 32
Takk for oppmerksomheten Johannes Brodwall Chief Scientist Steria, Norway johannes. brodwall@steria. no http: //johannesbrodwall. com http: //sterkblanding. no http: //jhannes. blip. tv @jhannes www. steria. no
- Slides: 33