Metodika testovania
Testovanie vytvoreného softvéru je nevyhnutnosťou pre akýkoľvek rozsiahly softvérový projekt. Každá zmena softvéru má potenciál ovplyvniť aj funkcionalitu ostatných súvisiacich komponentov a tak je nevyhnutné, aby bola správnosť funkcionality softvéru testovaná po akejkoľvek zmene a úpravy boli schválené až po takomto overení.
Vymedzenie pojmov
Jednotkový test - test najmenšej možnej zložky softvéru, spravidla vstupu a výstupu jednej metódy.
Integračný test - test spoločného fungovania niekoľkých komponentov softvéru.
Štruktúra testov
Všetky testy sú uložené v zložke /tests
príslušného komponentu, odkiaľ sa dajú skupinovo spúšťať jedným príkazom (npm test
pre webapp a pytest
pre servery). Testy pre webovú aplikáciu využívajú test runner Karma, musia byť uložené v zložke tests a dodržiavať menovaciu konvenciu *.spec.js
. Testy pre webovú aplikáciu využívajú balík PyTest, musia byť taktiež uložené v zložke tests a dodržiavať menovaciu konvenciu test_*.py
.
Testy slúžiace na pokrytie jednej funkcionality by mali byť súčasťou samostatného súboru (testovacieho skriptu), ktorý môže obsahovať niekoľko testovacích scenárov slúžiacich na overenie správnosti pri rôznych vstupoch, postupnostiach akcií a rôznych okrajových prípadoch.
Pokyny pre autorov zmien
Po vykonaní akýchkoľvek zmien v zdrojovom kóde komponentu sa od autora vyžaduje, aby spustil všetky dostupné testy pre daný komponent. Pre databázový a simulačný server to obnáša spustenie integračných (pytest) a jednotkových testov (unittest), pre webovú aplikáciu iba unit testy (karma). Až po úspešnom behu testov môže vývojár vytvoriť pull request. Ak vykonané zmeny spôsobili zastaranie starých testov, mali by byť aktualizované tak, aby zodpovedali správnemu správaniu po vykonaní zmien. Ak testy zlyhávajú na funkcionalite zdanlivo nesúvisiacej s nedávnymi zmenami, je potrebné o tom informovať ostatných členov tímu, od ktorých sa očakáva, že pomôžu s vyšetrením zlyhaní zabraňujúcich mergu zmien.
Od autora zmien sa zároveň očakáva, že spolu s nimi rozšíri testovaciu sadu o nové testy, ktoré budú overovať správne fungovanie rozšírení kódu. Nie je to však nutnosťou v každom prípade (napr. pri časovej tiesni alebo netriviálnosti testovania) a je na zvážení reviewera, či po zdôvodnení umožní zmeny merge-núť. V takomto prípade by mal však byť o chýbajúcom pokrytí upovedomený manažér testovania, ktorý si potrebu testu zapíše a vytvorí úlohu na doimplementovanie.