Jaké typy testů děláte a proč?
- Nobody.guy
- Člen | 19
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
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
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
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
Č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.