Riesim integracne/e2e testy webovej aplikacie, cize testovanie aplikacie so stejtom(db/cache...). Mam cez 170 handlerov a rozmyslam ako k tomu pristupit.
Davnejsie sme v praci riesili integracne testy so Selenium a proste automatizovana klikaca cez web. To nastastie teraz robit nemusim a mozem testovat priamo kod pretoze mam hexagonalnu/"cibulovu" architekturu takze mozem priamo volat kod a obyst tak http vrstvu. Vtedy sme riesili len najdolezitejsie cesty, volali sme to "playbook" a bol to "pribeh", kedy uzivatel isiel z A do B a cela cesta bol vlastne test. Preklikat sa cez web a formulare zo stavu A do stavu B(napriklad prejst objednavkovy proces -> produkt, kosik, platba..).
Ja ale chcem otestovat vsetky handleri, takze rozmyslam ze ako k tomu pristupit. Ci ist cestou, ze jeden handler = 1 test/playbook, alebo ci mam spravit jeden test/playbook a don zaclenit viacero handlerov?
Hlavny problem je ze tu vlastne vecsina handlerov zavisi na predoslom stave, takze na inych handleroch/testoch.
Napriklad registracia uzivatel je 1. odoslanie zakladnych udajov, 2. odoslanie emailu, 3. uzivatel potvrdi email cim 4. vytvori ucet v systeme. Prakticky sa teda testuju dva handleri a jedna automatizovana uloha(odoslanie emailu). A ja teda mozem otestovat odoslanie uzivatelskych dat(validny email? vyplnene meno?), lenze vytvorenie uctu uz vyzaduje ten predosly stav, takze vlastne testujem dva handleri a nie jeden. A teda ma zmysel mat dva testy?
Tiez mam problem ze nechcem otestovat len zmeny stejtu/workflow, lebo to je spravanie aplikacie(tie spominane playbooky), ale chcem aj otestovat validaciu handlerov. Napriklad "existuje uz tento email?" je validacia ktora pracuje so stavom ale tiez "je toto validny email?" uz pracuje len na urovni kodu a teda hned tu mam dve rozne validacie, ktore su v hre len pre jeden handler.
A potom tu moze byt este mnoho dalsich, ako ze "email uz bol odoslany", "je dnes utorok?", "uzivatel nevlastni tento obsah", "uzivatel ma pravo vytvorit tento obsah" a podobne. A tie handleri su viac a viac komplexnejsie ak ide o validaciu vstupnych dat, a hlavne v kontexte stavu aplikacie(db).
Takze proste neviem ako k tomu spravne pristupit. Lebo chcem otestovat, ze apliakcia funguje spravne ale aj ze handleri validuju stav tiez spravne.
Zaujimalo by ma ako k integracnym testom pristupujete bezne vy a ci mate nejake tipy? Toto je asi druh testovania ktory sa uplne najviac flaka, takze niet moc kde cerpat informacie z prvej ruky.