Test Driven Development

Test-Driven Development vám pomůže psát kód bez chyb a s téměř 100% pokrytím unit testy. Jako vedlejší efekt budete mít sadu příkladů použití, která zlepší vaši orientaci v kódu.

Test-Driven Development (TDD) neboli programování řízené testy je technika je založeno na psaní kódu v extrémně krátkých cyklech (jeden cyklus typicky trvá několik minut). V každém cyklu se nejdříve napíše test, který dokazuje, že požadovaná funkcionalita ještě nefunguje. Ve druhé fázi se upraví produkční kód tak, aby procházel nový test i všechny předcházející. Poslední fází je potom tzv. refaktoring neboli vylepšení struktury kódu beze změny funkcionality.

Test Driven Development typicky vede k psaní mnohem kvalitnějšího kódu než, když se kód píše bez testů. Například programátoři přirozeně téměř přestanou používat debugger, protože ho nepotřebují. Navíc je z kód přirozeně postupně pokrýván testy, což vede k menším obavám ze změn do budoucna.

Kurz programování pomocí Test-Driven Development je praktickým úvodem do této populární techniky známé už přes dvacet let. TDD je vhodná technika pro snižování technického dluhu pomocí refaktoringu. Kurz provede účastníky krok po kroku úvodem do TDD a na modelových příkladech jim umožní získat praktické zkušenosti s touto programátorskou technikou. 90% času kurzu je věnováno programování na praktických příkladech. Modelové příklady jsou vybrány tak, aby byly jednoduché na pochopení a daly se na nich demonstrovat výhody TDD jako jsou kontrola nad psaným kódem, zvýšení pokrytí kódu testy nebo inkrementální vývoj. 

Cíle kurzu

Cílem kurzu je poskytnout účastníkům praktickou zkušenost s technikou Test-Driven Development a dovednosti potřebné k tomu, aby potom mohli tuto techniku používat ve své každodenní praxi. Kurz se zaměřuje na začínající i zkušené programátory, kteří ale nemají s TDD osobní zkušenost. Po absolvování kurzu budou účastníci schopni psát kvalitnější modulární kód, který bude přirozeně pokrytý automatickými testy a bude obsahovat podstatně méně chyb.

Rozsah1 den
Formaosobně nebo online
práce v párech
3-4x blok po dvou hodinách s přestávkami
Pro koho je určenvývojář
tester
člen Scrum týmu
architekt
cvičení je možné provádět v libovolném programovacím jazyce a technologii, např. JavaScript/TypeScript, C#, Java, python, atd.
Test Driven Development (TDD) cycle

Obsah školení

Blok 1. Úvod do Test Driven Development

Odhalíte tajemství efektivního programování pomocí TDD. Naučíte se cyklus Red-Green-Refactor. Vyzkoušíte si TDD na jednoduchém příkladu a získáte pocit kontroly nad vyvíjeným kódem, který už nikdy neztratíte.

Cvičení: přestupný rok – osvojení nástrojů

Cvičení: Word Counter – trénink cyklu Red-Green-Refactor

Blok 2. Expanze kódu pomocí Test Driven Development

V tomto bloku se naučíte rozvíjet složitější kód krok za krokem. Použijete techniku zvanou ZOMBIEs (Zero-One-Many-Boundary-Interface-Exception), která vám pomůže vybrat následující test tak, abyste si udrželi kontrolu nad rostoucím a stále komplexnějším kódem.

Cvičení: IPv6 validator – rostoucí kód pomocí ZOMBIEs

Blok 3. Dodávání hodnoty inkrementálně 

Naučíte se dodávat hodnotu po po malých, snadno uchopitelných částech. Z krátkého zadání vytvoříte seznam (backlog) 10-20 minipožadavků, z nichž každý je sám o sobě hodnotný. Potom tyto požadavky v průběhu 45 minut postupně naimplementujete, takže budete dodávat novou funkci každých několik minut.

Cvičení: Elephant Carpaccio – dodávání hodnoty inkrementálně

Blok 4. Testování kódu, který má závislosti

Jaké jsou hlavní problémy, když potřebujete testovat kód, který má závislosti? Pomalé a křehké testy, které se obtížně píšou. Co s tím – naučíte se hledat tzv. švy neboli místa, kde se kód dá izolovat k testování. A potom čtyři metody, jak testy psát – Integrační testy, mockování, využití dědičnosti, explicitní závislosti. Na praktických příkladech si vyzkoušíte výhody a nevýhody každé metody.

Cvičení: Pokémoni – 4 způsoby odstranění závislosti

Bonus

Co říkají výzkumy o Test-Driven Development? Naše zkušenosti jsou jedna věc, ale co říkají data? Jaká zlepšení vašich produktů a profesionálních schopností můžete očekávat, pokud budete pravidelně používat TDD?

Školení je pouze úvodem do TDD. Tento úvod je vhodné po školení doplnit dlouhou a intenzivní praxí na konkrétním kódu dané firmy, ideálně pod vedením zkušeného mentora.

Požadavky na účastníka

  • základní znalost programování
  • schopnost psát kód v jednom z těchto jazyků: JavaScript, C#, Java, python
  • schopnost napsat jednoduchý unit test v jednom z těchto jazyků

Technické požadavky (BYOD)

  • Počítač s jakýmkoli operačním systémem
  • Docker
  • Visual Studio Code s rozšířením DevContainers

Školení je pouze úvodem do TDD. Tento úvod je vhodné po školení doplnit dlouhou a intenzivní praxí na konkrétních příkladech dané firmy, ideálně pod vedením zkušeného mentora.

Zkušenosti zákazníků

“O TDD a o tom, že bychom ho v naší práci mohli využít, se u nás ve firmě mluvilo už nějakou dobu. Byla to ale spíše partyzánská akce pár nadšenců, čekající na všeobecné pochopení a uznání. K tomu došlo po workshopu s Robertem, kterému se podařilo jednoduchou a navíc praktickou cestou vysvětlit přínosy tohoto přístupu i těm méně nadšeným vývojářům. Všichni si workshop moc užili a už společně spřádáme plány, jak TDD začlenit do našeho každodenního vývojářského života. Moc děkujeme!”

Anita Bak, Easy Software