Diskuze: Test Driven Development - dotaz
Tvůrce
Zobrazeno 21 zpráv z 21.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
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.
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.
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í.
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.
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.
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.
ach boze."testy nepisu, pri kazde uprave si to spustim a zkusim".. Tak tady je asi videt naprosto nulova praxe z realneho projektu.
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.
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.
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.
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í.
nezlob se, presvedcovat o necem jinem nemam potrebu. clovek chybuje, stroj nikoliv.
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.
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.
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.
A opačně, napsat kus kódu a pak ho podle potřeby testovat, když se má chovat deterministickým způsobem?
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.
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í.
Zobrazeno 21 zpráv z 21.