TDD - Test Driven Development Petr Šťovík, Software Developer & Architect I 11.4.2017 I Ostrava 2017 - © GMC Classification: PUBLIC
Agenda Teoretické seznámení Demo příklad (> 50%) Doména: Bowlingové skóre DEV workflow: pomocí nástroje bobril-build Zhodnocení TDD, aneb kdy použít Kooperace týmů – CI Server Závěr a volné otázky 2017 - © GMC Classification: PUBLIC
Teorie 2017 - © GMC Classification: PUBLIC
Cost of Change http://www.agilemodeling.com/essays/costOfChange.htm 2017 - © GMC Classification: PUBLIC
Cost of Change http://www.agilemodeling.com/essays/costOfChange.htm NOTES u SW vývoje vždy zvažovat otestovatelnost - TDD tlačí k psaní testovatelného kódu 2017 - © GMC Classification: PUBLIC
TDD – Test Driven Development https://en.wikipedia.org/wiki/Test-driven_development Add a test – tvorba očekávání je nejdůležitější fáze Run all tests and see if the new test fails Write the code Run tests Refactor code Repeat Protiklad – psaní funkcionality a následné pokrytí testy 2017 - © GMC Classification: PUBLIC
TDD – Test Driven Development https://en.wikipedia.org/wiki/Test-driven_development 2017 - © GMC Classification: PUBLIC
Demo příklad 2017 - © GMC Classification: PUBLIC
Bowling Game Kata 1 hra má 10 kol (10 frames) kolo má 1 nebo 2 hody (rolls) na 10 kuželek (pins) 10. kolo je jiné má 2 nebo 3 hody bonus za „strike“, „spare“ podle následných hodů http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata https://github.com/hontas/bowling-game-kata 2017 - © GMC Classification: PUBLIC
Demo 10:05 Intro: nástroj „bobril-build“ Fáze 1: vizuální očekávání – návrh datových struktur Fáze 2: očekávané chování – logika výpočtu 10:05 NOTES: TDD i jako technika pro implementaci GUI prvků 2017 - © GMC Classification: PUBLIC
The Flow & Feedback „Pocit hlubokého zaujetí úkolem, aniž cítíme zvláštní námahu. Splynutí činnosti a vědomí, z mysli jsou vypuzeny běžné myšlenky.“ https://cs.wikipedia.org/wiki/Flow http://dilbert.com/strip/2017-01-05 NOTES: Průběžný refactoring a rychlý feedback 2017 - © GMC Classification: PUBLIC
TDD Evaluation 2017 - © GMC Classification: PUBLIC
TDD Evaluation [1/2] TDD jako myšlenkový nástroj Kdy rozhodně ANO Base philosophy TDD jako myšlenkový nástroj Kdy rozhodně ANO Jasné vstupy / výstupy Rozložitelnost na části s jasnými vstupy / výstupy Oblast již testy pokrytá (+ bug fixing) Kdy zvážit Složité nastavení prostředí „5 minutový projekt“ bez budoucnosti Nemám nástroje pro pouštění testů Čitelný projekt bez logiky „Test Driven: It is the mindset not the tool!“ http://blog.jonasbandi.net/2011/08/test-driven-it-is-mindset-not-tool.html NOTES: nejde o řešení příkladu ale o postup uvažování není to o dogmatismu, ale o tom vědět, co kdy pomůže a efektivně použít těžko se prezentuje něco, co prezentovat nelze... ale musí se zažít – jako kladivo 2017 - © GMC Classification: PUBLIC
Specification/Test writting TDD Evaluation [2/2] Specification/Test writting Popis testu by měl odpovědět na „proč?“ Typy očekávání Mít očekávané „success scénáře“ Mít očekávané „error scénáře“ Neočekávané scénáře doplňovat při bugfixingu Vrstvy abstrakce Interní funkce Knihovna Integrace (mockování) I testy potřebují údržbu Deduplikace (buildery, lokální funkce …) Čitelnost záměru důležitější než u produkčního kódu „Test Driven: It is the mindset not the tool!“ http://blog.jonasbandi.net/2011/08/test-driven-it-is-mindset-not-tool.html 2017 - © GMC Classification: PUBLIC
Team Cooperation 2017 - © GMC Classification: PUBLIC
DEV Team & Build Server DEV je nejefektivnější ve Flow Spouštění všech testů trvá Build server (CI - Continous Integration) Ukázka – Jenkins (https://jenkins.io/) Tým A Tým B Build Server 2017 - © GMC Classification: PUBLIC
Summary 2017 - © GMC Classification: PUBLIC
Summary 5 kroků TDD Ukázka „Bowling Game Kata“ pomocí „bobril-build“ Návrh struktur Definice chování Zhodnocení TDD Přínos pro tým(y) Protiklad – psaní funkcionality a následné pokrytí testy 2017 - © GMC Classification: PUBLIC
What next http://www.peterprovost.org/blog/2012/05/02/kata-the-only-way-to-learn-tdd/ https://sites.google.com/site/tddproblems/all-problems-1 http://www.bowlinggenius.com/ 2017 - © GMC Classification: PUBLIC
Your Questions 2017 - © GMC Classification: PUBLIC
TDD se musí zažít! p.stovik@gmc.net 2017 - © GMC Classification: PUBLIC