Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
gcx11
Tvůrce
Avatar
gcx11:25.10.2016 20:07

Ahoj, měl bych dotaz na ostatní programátory. Zrovna se učíme o TDD a jeho používání v programech. Jak často ho používáte v praxi? V každém programu, který píšete? Více v týmových projektech než ve vlastních? A jak velkou část programu testujete?

Přijde mi, že je to časovně náročnější napsat testy, ale na druhou stranu to vede k udržovatelnějšímu programu.

 
Odpovědět
25.10.2016 20:07
Avatar
Adam Ježek
Tvůrce
Avatar
Adam Ježek:25.10.2016 20:31

Testy jsem použil jednou v životě na jednom workshopu, kde jsme dělali v týmu.

Když mi něco nefunguje, tak si program odkrokuju a podívám se, co to (ne)dělá. A mam to vyřešený mnohem rychlejc, než kdybych se měl patlat s testama pro každou blbost. Navíc si program po připsání každé větší části pouštím, takže vím, jestli jsem to s ní pokazil nebo ne.

Jestli je to správně nebo ne mi je úplně jedno, když si dělam pro sebe, tak to nikoho nezajímá, a v práci po mě testy nikdo nechce.

Nahoru Odpovědět
25.10.2016 20:31
Počkej chvíli, poradím se s křišťálovou koulí.
Avatar
Luboš Běhounek Satik:25.10.2016 21:08

TDD přidělává nějakou režii navíc, takže vývoj teoreticky prodražuje, ale zase na druhou stranu ti může ušetřit spousty problémů, protože se prostě občas stane, že do kódu zavlečeš chybu, které si u větších programů ani po spuštění a projití nemusíš všimnout - navíc na kódu často dělá více prográmátorů a spousta z nich ten kód třeba ani nezná, takže něco rozbít není zas tak obtížné :)

Rozhodně se to může se to hodit pro větší projekty, obzvlášť pokud je potřeba co nejvíc eliminovat chyby, protože by mohly způsobit nějakou větší škodu - typicky banky, doprava, zdravotnictví.

Pro malé projekty nebo třeba weby (mimo eshopy), kde nehrozí při chybě žádné velké problémy, to nemá moc cenu.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
25.10.2016 21:08
https://www.facebook.com/peasantsandcastles/
Avatar
Petr Čech
Tvůrce
Avatar
Petr Čech:25.10.2016 21:12

Asi bych to shrnul tak, že testy jsou super nástroj, někdy se opravdu hodí, ale ve většině případů jsou naprosto zbytečné a je pakárna a ztráta času, pokud to máš psát pro každou hovadinu.

Nahoru Odpovědět
25.10.2016 21:12
the cake is a lie
Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovídá na gcx11
Jindřich Máca:25.10.2016 22:03

Já bych jenom dodal, že téma dalšího srazu zdejší komunity - http://www.itnetwork.cz/…az-itnetwork je právě testování, takže přijď a můžeš se zeptat "live" na konkrétní věci, které Tě zajímají. ;)

 
Nahoru Odpovědět
25.10.2016 22:03
Avatar
gcx11
Tvůrce
Avatar
Odpovídá na Jindřich Máca
gcx11:25.10.2016 22:53

Díky za pozvání a vaše ostatní odpovědi, ale spíše se nestavím. V C# se ty testy píší za pomoci interface docela hezky. Na MFF máme vyhodnovací systém, skrz který musí program projít na 100%, takže se TTD dost hodí. Zajímalo mě, jak to používají programátoři zde, kteří jsou blíže praxi, protože jsem si říkal, jestli to není špatně, že si je pro vlastní menší věci nepíšu.

 
Nahoru Odpovědět
25.10.2016 22:53
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na gcx11
David Hartinger:25.10.2016 23:12

Ze začátku ti testy projekt zbytečně prodraží, protože malý projekt IMHO nemá moc smysl testovat. Potřebuješ naopak peníze na vývoj a to co nejvíc. TDD je IMHO teoretický výmysl, který bych v praktickém podnikání nepoužil, toť můj názor. Od určité velikosti projektu ti testy naopak vývoj zlevní. Vyhýbal bych se nařízením vždy nebo nikdy.

Editováno 25.10.2016 23:13
Nahoru Odpovědět
25.10.2016 23:12
You are the greatest project you will ever work on.
Avatar
gcx11
Tvůrce
Avatar
Odpovídá na David Hartinger
gcx11:25.10.2016 23:19

A co bys v praxi použil místo toho?

 
Nahoru Odpovědět
25.10.2016 23:19
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na gcx11
David Hartinger:25.10.2016 23:22

Místo čeho? TDD, pokud se nepletu, říká, že bys měl psát testy a až pak implementovat a psát testy na všechno. Prostě piš testy až je potřebuješ ;-) Já píši unit testy pro své knihovny, tam je mám obvykle delší, než je kód těch knihoven. Na aplikaci píši jen akceptační testy, které proklikají základní funkcionalitu.

Nahoru Odpovědět
25.10.2016 23:22
You are the greatest project you will ever work on.
Avatar
Odpovídá na Adam Ježek
Marian Benčat:26.10.2016 0:32

ach boze."testy nepisu, pri kazde uprave si to spustim a zkusim".. Tak tady je asi videt naprosto nulova praxe z realneho projektu.

Nahoru Odpovědět
26.10.2016 0:32
Totalitní admini..
Avatar
Odpovídá na gcx11
Marian Benčat:26.10.2016 0:34

realne neni duvod, aby si mel mensi code coverage nez je 100% u kazdeho projektu, ktery je vetsi, nez kalkulacka a prezentacni web. pokud ti nekdo rekne neco ve stylu, ze testy nejsou treba, dal se s nim nebav.

Nahoru Odpovědět
26.10.2016 0:34
Totalitní admini..
Avatar
Adam Ježek
Tvůrce
Avatar
Odpovídá na Marian Benčat
Adam Ježek:26.10.2016 0:35

Praxi mam a naučila mě, že stačí ručně otestovat ty části, do kterejch zasahu. Jak píše David, pro velký projekty to bude třeba, ale zatim na ničem tak rozsáhlym nedělam.

Nahoru Odpovědět
26.10.2016 0:35
Počkej chvíli, poradím se s křišťálovou koulí.
Avatar
Odpovídá na Adam Ježek
Marian Benčat:26.10.2016 0:39

Prave, ze spolehat na to, z jsi svym zasahem neco nezmenil, je pomerne dosti nebezpecne... Navic testovani rucni je casove narocne a vetsinou vzdy se na neco zapomene. prave proto jsou testy,..

Ty testy se kazdou pulnoc samy pusti na aktualnich zdrojacich, to testovani klidne trva X hodini a pokud nejaky neprojde, posle se autorum uprav od posledniho testovani zprava, ze neco neproslo.. kde a co se vlatne stalo..

tedy se proste vyviji a kdyz tam nekdo prida kod, ktery upravi chovani na uplne opacne strane programu, neprojde test a hned se to vyresi.

To, ze ovlivnis svym zasahem pouze miniaturni cast aplikace, kteoru jsi realne shcopny rucne otestovat, plati pouze u tech nejmensich aplikaci, kde nepises vlastni framework, knihovny atp,.. tedy prave treba prezentacni weby.

Nahoru Odpovědět
26.10.2016 0:39
Totalitní admini..
Avatar
Adam Ježek
Tvůrce
Avatar
Odpovídá na Marian Benčat
Adam Ježek:26.10.2016 0:45

to testovani klidne trva X hodin

No, to sou ty velký projekty. Většina, co dělam, tak sou firemní aplikace co běžej ve výrobě a všechny scénáře co mohou nastat mam proklikaný za pár minut. Navíc dostávám kompletní specifikace, takže to pak i proklikam podle nich a je to kompletní. Testy sou potřeba na jenom malou část věcí.

Nahoru Odpovědět
26.10.2016 0:45
Počkej chvíli, poradím se s křišťálovou koulí.
Avatar
Odpovídá na Adam Ježek
Marian Benčat:26.10.2016 0:47

nezlob se, presvedcovat o necem jinem nemam potrebu. clovek chybuje, stroj nikoliv.

Nahoru Odpovědět
26.10.2016 0:47
Totalitní admini..
Avatar
Adam Ježek
Tvůrce
Avatar
Odpovídá na Marian Benčat
Adam Ježek:26.10.2016 0:51

To ano, ale nemá cenu psát testy k aplikacu, kde ti nejvíc času zaberou samotné testy. Klidně si je piš, ale já ten čas radši budu věnovat dalšímu projektu, za který dostanu bez testů zaplaceno stejně, jako kdyby tam byly, když navíc ani nejsou v požadavcích.

Nahoru Odpovědět
26.10.2016 0:51
Počkej chvíli, poradím se s křišťálovou koulí.
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Adam Ježek
Martin Dráb:26.10.2016 0:54

No, obvykle tu bude implicitní požadavek, že výsledná aplikace "má fungovat". Může se stát, že ne všechny případy ručně pochytáš. Zvlášt pokud se jedná např. o vícevláknovou aplikaci.

Ale souhlasím s tím, že se nic nemá přehánět.

Nahoru Odpovědět
26.10.2016 0:54
2 + 2 = 5 for extremely large values of 2
Avatar
coells
Tvůrce
Avatar
Odpovídá na gcx11
coells:26.10.2016 1:16

První věc, kterou si musíš uvědomit, je, že TDD vůbec nesouvisí s testováním.
To je stejně extrémní výrok, jako celý koncept TDD.

Základní poučkou totiž je, že předtím, než začneš implementovat aplikaci, vytvoříš testy.
Aplikace je tedy kompletně otestovaná ve chvíli, kdy jsi ještě nenapsal ani řádek.
Aplikace je naopak dokončená ve chvíli, kdy všechny testy hlásí zelenou.
Ve chvíli, kdy dojde v aplikaci k jakékoliv změně, musíš nejprve opravit testy, teprve potom začneš upravovat aplikaci.
Úprava je zase hotová, když testy hlásí zelenou.

Tahle myšlenka je dokonalým opakem testování - nic netestuješ, protože podle koncepce testy řídí vývoj.
Jak už jsem řekl na začátku, tohle spadá do extrémních náhledů na vývoj aplikací.

Skalní příznivci tvrdí, že je to správný postup a jediný správný postup (postoj odpovídá myšlence TDD).
Z mého pohledu je na každém šprochu pravdy trochu, ale cokoliv jde do extrému a nepřipouští varianty, to smrdí.
Obecně se dá říct, že se TDD za těch 25+ let moc neuchytilo, ale hodně ovlivnilo vývoj a jeho kvalitu.
Některé myšlenky jsou dobré, ale extremismus zas tak moc ne.

 
Nahoru Odpovědět
26.10.2016 1:16
Avatar
gcx11
Tvůrce
Avatar
Odpovídá na coells
gcx11:26.10.2016 1:34

A opačně, napsat kus kódu a pak ho podle potřeby testovat, když se má chovat deterministickým způsobem?

 
Nahoru Odpovědět
26.10.2016 1:34
Avatar
Odpovídá na gcx11
Marian Benčat:26.10.2016 1:36

svym zpusobem se kod chova vzdy deterministicky.. Přesně tak jak to programátor napíše.. Nedeterministicky se začíná většinou chovat až ve vysoké nadmořské výšce. :-)

Nahoru Odpovědět
26.10.2016 1:36
Totalitní admini..
Avatar
coells
Tvůrce
Avatar
Odpovídá na gcx11
coells:26.10.2016 2:18

Testování je hodně důležité a také hodně složité.
Navíc je problém s tím, že testy mají tendenci stárnout, pokud se o ně neustále nestaráš.

Každopádně je to ale něco, co se rozhodně vyplatí.
Naplno to oceníš, až odevzdáš v práci svůj kód a zkušenější kolega ti ho z první sestřelí, docela fajn pocit.
Nebo ještě lépe, když odevzdáš zápočet a sestřelíš Zavoralovi OS (stalo se mi).

Osobně si myslím, že čím kvalitněji budeš umět testovat, tím lépe budeš umět programovat.
Dobře napsané testy tě totiž donutí zamyslet se nad problémem z jiných úhlů pohledu.
A z vlastní zkušenosti ti můžu říct, že pokud otestuješ svůj kód a všechno funguje, není test kvalitní.

 
Nahoru Odpovědět
26.10.2016 2:18
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 21 zpráv z 21.