Jak začít s testováním databáze?
- ondrej256
- Člen | 186
Zdravím,
rád bych konečně začal psát testy, ale pořád to odkládám, protože pořádně nevím jak. Rád bych s vámi poradil jak na to.
Mám hotovou webovou aplikaci. Během vývoje jsem stále uvažoval na co napsát test a jediné co mně vyšlo jsou 2 helpery, které nejsou až tak důležité.
Zbytek aplikace je zápis/čtení/editování dat v DB.
- Jenže nette/tester se spouští ve více vláknech a hrozí, že mně jeden test ovlivní jiný, protože můžou dva testy, které běží paralelně, pracovat se stejnou tabulkou. To je důvod co mně odrazuje začít testy psát.
- Příklad Eshop: chci otestovat vkládání recenze produktu. Abych mohl otestovat tuto funkčnost, tak potřebuju nějakého uživatele, tento uživatel musí mít objednávku. Mám si v testu vytvořit testovacího uživatele a testovací objednávku abych mohl otestovat zda jde k produktu vkládat recenze? Nebo jak takové situace řešíte vy?
Předem děkuju za odpověďi a přeju krásné prožití svátků :-)
- CZechBoY
- Člen | 3608
Řešíš to moc na vysoký úrovni. To co ty chceš jsou až akceptační
testy.
Mrkni na nějaký přednášky o testování, třeba teďka se na youtube
objevila přednáška od FP: https://www.youtube.com/watch?…
- jiri.pudil
- Nette Blogger | 1029
Nedávno jsem zrovna o tomhle (jak řešit izolaci testů a inicializaci testovací databáze a dat) napsal článek. Je to sice psané pro Doctrine, ale nějaké základní principy se v tom snad dají vysledovat :)
Ale jinak souhlasím s @CZechBoY: ze začátku mi připadá lepší postupovat odspodu. I tu práci s databází a doménovou logiku máš určitě zapouzdřenou v nějakých třídách, kterým můžeš namockovat závislosti a testovat je jednotkově.
- Myiyk
- Člen | 321
@ondrej256 Aby neběžely testy současně, je potřeba použít zámek. https://tester.nette.org/cs/#…
U každého testu co používá databázi, před samotným testem mazat obsah tabulek, nebo smazat celé tabulky a zase je vytvořit zpátky. V podstatě spustit instalační SQL soubor.
- blaztar
- Člen | 93
@CZechBoY díky za odkaz na video. O tomto zdroji jsem nevěděl.
Integrační testy co tam ukazuje @FilipProcházka mi přijdou super. Je toto součástí nějaké knihovny rozšiřující Tester?
Takové věci bych přesně chtěl umět testovat. Chtěl, ale neumím. :)
Editoval blaztar (24. 12. 2015 10:00)
- jiri.pudil
- Nette Blogger | 1029
@blaztar: @FilipProcházka má spoustu těch věcí v TesterExtras, ale jak už tu jednou někde psal, ten balíček je určený spíše k inspiraci než k instalaci :)
- blaztar
- Člen | 93
@jiri.pudil díky, na toto jsem koukal. Ve videu ta knihovna vypadá více kompletně :)
Koukal jsem i na testy v Kdyby/CsobPaygateNette a Kdyby/CsobPaymentGatwey a tady už toho je asi víc. Ale nějak to z toho lepit asi není nejlepší způsob.
Jinak právě spíš hledám balíček k instalaci než k inspiraci, kvůli svým programátorským zkušenostem (umem) :)