Ten člověk má pravdu a zřejmě nebyl pochopen.
Na jednu stranu je spousta lidí, kteří netestují – špatně. Na druhou stranu je mnoho lidí, kteří testování považují za boha - ještě horší.
Jsem ze starší školy. Jedna matematická poučka zní – neexistuje – a to je prosím seriózně matematicky dokázáno – možnost jak otestovat na 100 %, že v programu není chyba a že běží správně.
Jinak řečeno, nějaké pokrytí 100 % testy je víra nepodložená realitou. Můžete pokrýt 100 % kódu testy, ale je otázka, zda je to vždy potřebné, účelné a nutné. Ale hlavně, vždy a jakékoli testy odhalí jen zlomeček možných chyb. Přesněji odhalí ty chyby, které předpokládáte a na které si uděláte testy. Což je zlomeček chyb, které mohou nastat.
Z tohoto pohledu se dělání testů zaměňuje za test kódu. I testovat se musí umět.
Dále, abych interpretoval kolegu, kterého jste utřel, ale nejsem si jist zda správně. Existují programy, které nemají výstup testovatelný programově, ale přitom tento výstup je jejich účel. A zrovna občas grafické nebo zvukové programy alespoň část takové funkce mají.
Já bych přidal ze svého pohledu ještě další věc. Jsou programy a rutiny, kde není rychlostní rezerva na to dodržovat všechny zásady aby šlo do toho snadno vložit unit test. Každá abstrakce a každý luxus programátora má dost často jako za následek nižší výkon programu. A někdy se to nehodí. Třeba doporučuji si pokusně stvořit článek – jak bych použil unit testy na video kodeky. Pohoříte jako papír. Nic uvnitř rozumně neotestujete, pouze celý kodek jako černou skříňku. Ani není prostor na to uvnitř dodržovat pravidla pro to aby unit testy bylo snadné použít.
Beru ovšem, že tento článek je pro TDD, kde testování je základ. Takový vývoj není vhodný pro každý projekt ani každý program. Dokonce bych řekl že pro většinu není vhodný. Nicméně pro enterprise projekty nebo běžné desktop programy celkem ano či je to dokonce jedna z nejelpších metodik.
Metodu 100 % pokrytí testy bez přemýšlení považuji osobně za dogmatickou ptákovinu.
Miloslav Ponkrác