Jaké typy testů děláte a proč?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Nobody.guy
Člen | 19
+
+1
-

Ahoj,
už jsme to řešili na Jabberu, ale zajímají mě názory širšího publika. Jaké typy testů děláte (jednotkové, integrační, akceptační scénáře) a proč? Jaké testy Vám odhalili nejvíc bugů a nedostatků v návrhu?
Předem díky za odpovědi. Výsledky debaty bych rád zapracoval do připravovaného návodu.

enumag
Člen | 2118
+
0
-

zatím píšu testy jen pro své knihovny, ne pro celou aplikaci. Píšu tedy jednotkové a integrační, akceptační pro knihovny nemají smysl.

V jednotkové testech vše důsledně mockuji (výjimky se najdou, ale vzácně). Protože se snažím pokrýt všechny možné cesty, odchytím občas i chyby které integrační testy nezachytí. Na druhou stranu mi tyto testy poměrně často komplikují život když měním API některých služeb které uživatel většinou nepoužívá přímo (latte makra + traita pro presenter). V takových případech mi často integrační testy i po změně prochází max s drobnými úpravami (+ přidám pár nových pro otestování přidané feature) zatímco jednotkové musím přepsat komplet protože tam failuje všecko.

Samozřejmě je to jen má subjektivní zkušenost a je i možné že něco dělám špatně. Nemám s testy až tak bohaté zkušenosti jaké bych chtěl mít.

Jinak mi většinou více chyb odhalí integrační testy. Ty píšu tak že si vytvořím DIC, z něj vytáhnu službu kterou testuji, vytvořím pár pomocných tříd, případně i šablon a zkouším reálné use-cases. Pokud integrační test pokrývá traitu pro Presenter nebo latte makra tak většinou už pouštím celou application, přidat primitivní RouterFactory neni složitý.

K akceptačním jsem se ještě nedostal ale mám je v plánu.

Používané nástroje: Codeception + Mockery.

Editoval enumag (15. 2. 2014 1:32)

Nobody.guy
Člen | 19
+
0
-

Díky za super odpověď :-) K čemu všemu děláš jednotkové a integrační testy?
Jinak díky za zmínění Codeception, o tom jsem nevěděl a vypadá to skvěle.

enumag
Člen | 2118
+
0
-

Jednotkové testy píšu zpravidla ke všem třídám které registruju do DIC jako služby.

Integračními testy pokryju zbytek – Extension, makra, traity, komponenty etc.

Codeception nemá podporu pro Nette framework, ale mám ji rozpracovanou: https://github.com/…codeception/. Mimochodem v Codeception ani náhodou nepoužívej ty jejich „Stubs“ ale rovnou si tam strč Mockery pomocí https://github.com/…ockeryModule.

Editoval enumag (15. 2. 2014 17:07)

Nobody.guy
Člen | 19
+
0
-

Čili jednotkové testy píšeš pro služby (mimo jiné i repozitáře) a integrační pro presentery, extensions, komponenty a zbytek :) To mi přijde fajn.
Díky za odkazy, mrknu.