1. Vaše jistota na trhu IT
Test Driven Development
Jiří Kiml, ICZ a.s.
20/09/2007, Praha
www.i.cz
2. Vaše jistota na trhu IT
Agenda
► Úvod
► Tradiční/rigorózní metodiky
► Agilní metodiky – přehled
► TDD detailně
► Závěr
www.i.cz
3. Vaše jistota na trhu IT
Úvod
► Společnost ICZ patří mezi nejvýznamnější
české firmy nabízející integrovaná
softwarová a síťová řešení. Patří mezi TOP
10 systémových integrátorů.
► 400 zaměstnanců
► Sídlo v Praze, pobočky v Brně, Českých
Budějovicích, Opavě a Plzni
► www.i.cz
► České a anglické termíny
► Nejasnosti/dotazy – není třeba čekat na
konec
www.i.cz
4. Vaše jistota na trhu IT
Tradiční metodiky
► Vodopád
► Spirála
► Rational Unified Process – RUP
► LBMS Systém Engineering - SE
► Fungují dobře, ale … ne vždy je možné
přesně popsat procesy a definovat
požadavky předem
► Nepružné, velký třesk, složité
► Vhodné pro větší, organizované, stabilní
týmy
www.i.cz
5. Vaše jistota na trhu IT
Svět se změnil
► Zákazník stále očekává kvalitu, ale
odmítá na ni dlouho čekat.
► Často při zadávání ani přesně neví,
co vlastně od produktu požaduje.
► Přehnaná snaha o dokonalost je
zbytečná
► Individuální přístup
www.i.cz
6. Vaše jistota na trhu IT
Agilní metodiky
► Manifest agilního vývoje software
(2001).
► http://agilemanifesto.org/
► Kent Beck, Martin Fowler, Ward
Cunningham, Alistair Cockburn, Jeff
Sutherland …
► Přijmout změnu je efektivnější než jí
bránit
► Jedinou jistotou vývoje je změna
www.i.cz
7. Vaše jistota na trhu IT
Agilní metodiky - přehled
► Extrémní programování (XP)
► SCRUM development process
► Lean development
► Feature driven development
► Test driven development
►…
www.i.cz
8. Vaše jistota na trhu IT
XP – Extreme Programming
► Jediným zdrojem informací je
zdrojový kód
► Komunikace
► Malé verze, iterace
► Společné vlastnictví kódu
► Párové programování
► 40 hodinový pracovní týden
► Zákazník na pracovišti
►…
► Co je na tom extrémní ?
www.i.cz
9. Vaše jistota na trhu IT
SCRUM development
► SCRUM – termín z ragby
► Iterace 1 měsíc
► Každodenní schůzky suplují centrální
plány
► Každý objekt má svého vlastníka
► pigs and chickens
www.i.cz
10. Vaše jistota na trhu IT
Lean Development
► Absolutní odstranění všeho zbytečného
► Vyvíjet sw za 1/3 času
► Vystačit s 1/3 nákladů
► Snížit četnost chyb na 1/3
► Odstranit vše zbytečné
► Rozhodnutí co nejpozději
► Kdokoli rozhoduje
► Partnerství s dodavateli
www.i.cz
11. Vaše jistota na trhu IT
Feature driven development
► Hlavní roly hrají vlastnosti produktu
► Vlastnosti (měřitelnost,
realizovatelnost, srozumitelnost)
► Vlastnost má přidanou hodnotu pro
zákazníka
► Vlastnosti jsou klasifikovány dle
důležitosti
► Meziprodukt u zákazníka každé 3
týdny
► Pravidelné inspekce
www.i.cz
12. Vaše jistota na trhu IT
Test driven development
► Test First development
► Testování je základ celého procesu
► Test musí být dokončen ještě před
začátkem psaní testovaného kódu
(programový kód píšeme pouze pokud
selhal test)
► Proč mám plýtvat energií a produkovat
chyby předtím než je opravím.
► Důraz kladen na specifikaci a návrh
www.i.cz
13. Vaše jistota na trhu IT
Green – yellow – red - green
Vše funguje
Syntaktická chyba
Test volá
neimplementovanou
metodu/vlastnost
Padající test
Neúplná implementace
Úplná implementace
www.i.cz
14. Vaše jistota na trhu IT
Red – Green - Refactor
Write/modify a test
Write the code to pass the test
Refactor, remove duplication
► Two hats:
► Developer hat
► Refactoring hat
www.i.cz
15. Vaše jistota na trhu IT
Ukázka
► Green – yellow-red- green
► Red – green - refactor
www.i.cz
16. Vaše jistota na trhu IT
Příklad z praxe
► NIS – 120 instalací (verze 3.6)
► Verze 3.7 neexistuje
► Přechod na agilní metodiky s důrazem na
automatické testy
► Verze 3.8 – stabilizace 7 měsíců
► Konzultace => přechod na TDD
► Cíl verze každých 6 týdnů
► Verze 3.9 – stabilizace 3 měsíce
► Je to prohra ?
www.i.cz
17. Vaše jistota na trhu IT
Podpora
► IDE + xUnit (ne vi)
► Automatické spouštění (Continous
Integration server)
► Automatické vyhodnocení
► Klony zákaznického prostředí
► Statistiky
► Ukázka Whitespace
► Ukázka TestNG
► Ukázka LN
www.i.cz
18. Vaše jistota na trhu IT
Kvalita testů
► Rychlost
► Izolované testy (setUp, tearDown)
► Nezávislost na datech
► Duplicita kódu vers. čitelnost
► Hloupé asserty
www.i.cz
19. Vaše jistota na trhu IT
TDD a ostatní agilní metodiky
► Pair programming
► Continuous integration
► Simple design
► Pravidelné inspekce
►…
www.i.cz
20. Vaše jistota na trhu IT
Výhody/přínosy TDD
► Automatický test je výborná dokumentace
► Automatické testování vede k lepší
struktuře kódu
► 100% kódu pokryto testy
► Minimalizace času tráveného debugovaním
kódu
► Rychlá zpětná vazba
www.i.cz
21. Vaše jistota na trhu IT
Mýty nebo výhody
► Automatické testy zabírají hodně času
► Automatické testování je nepohodlné
► Automatické testování zaručí bezchybný
kód
► Můj program se nedá testovat
www.i.cz
22. Vaše jistota na trhu IT
Nevýhody/problémy
► Testy GUI (swing/web)
► Distribuované prostředí (JMS, RMI, …)
► Test first
● Reporty
● …
► Disciplína programátorů
► Bezpečnost
www.i.cz
23. Vaše jistota na trhu IT
Další typy testů
► Performance testy
► Memory/Thread leaks
► Zátěžové/failover testy
► Testovací scénáře
► Integrační testy
► Poloautomatické testy
►…
www.i.cz
24. Vaše jistota na trhu IT
Závěr
► Vývojáři, kteří zkusili TDD tvrdí, že je to
nejlepší metodika …
► Kvalita testů je důležitá
► Zkuste a uvidíte
www.i.cz
25. Vaše jistota na trhu IT
Otázky …
► … a možná i odpovědi
www.i.cz
26. Vaše jistota na trhu IT
Literatura
► Václav Kadlec – Agilní programování
(ISBN: 80-251-0342-0)
► Kent Beck – Test-Driven Developmnet By
Example (ISBN: 0-321-14653-0)
www.i.cz
27. Vaše jistota na trhu IT
Děkuji za vaši pozornost
Jiří Kiml
Jiri.Kiml@i.cz
+420 737 280 021
ICZ a.s.
Divize Zdravotnictví
www.i.cz
www.i.cz
Hinweis der Redaktion
World has changed, I smell it in the air Programátoři nejsou krabičky
Rozdíl mezi pigs and chickens
Co je to CI ? LN – QS databáze Ukázka xls od Rakusáků ?
Asynchronn í komunikace … Bezpe čnost = je tím myšleno package private /private ?