Není jednodušší to nechat párkrát spadnout a vychytat chyby?
Není. Protože
- Pokud je v jednoduchým programu 20 ortogonálních podmínek "if", máš 2^20 možností, jak vykonat program. I kdybys při každým spuštění otestoval 1024 možností, budeš testovat 1024x? Pro představu, tohle odpovídá načtení konfiguračního souboru s 20 booleovskýma volbama, bez ošetření chyb v přístupu k tomu souboru a ošetření chyb při parsování. (-> TDD, DDT)
- Modul A pošle nesmyslnou hodnotu, modul B ji zpracuje, modul C vezme nulu, která vypadla z B a zkusí jí dělit. V logu vidíš, že padl modul C, hodnota může pocházet z modulů B, X a Y,..., kde B jede s daty z A, V, W,... Good luck, roste to exponenciálně. (-> Assert před funkcí, assert za funkcí)
- Nemáš konzistentní testování po změně. Když v modulu něco změníš, musíš ověřit, že jsi ho nerozbil. (-> unit testy, integrační testy)
- Ne každá chyba vede k pádu, třeba zaokrouhlování při výpočtu, dekrement místo inkrementu,...
- Chyba může být i třeba v tom, že program přepíše svoje nastavení. Práva na zápis má, během zápisu souboru nespadne, ale po druhým spuštění se začne chovat divně, ale bez pádu...
Když to nespadlo, tak to podle tebe není chyba (do doby, něž ti spadne zákazníkova/šéfova pěst do oka).