Jak začít s testováním databáze?

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

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.

  1. 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.
  2. 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
+
+1
-

Ř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?…

ondrej256
Člen | 186
+
+1
-

Už jsem ji viděl, ale stejně pořád moc nevím jak na to :-(

jiri.pudil
Nette Blogger | 1028
+
+3
-

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
+
0
-

@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
+
0
-

@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 | 1028
+
+1
-

@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
+
0
-

@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) :)