Automatické testy
Ke spuštění testů slouží vývojový server (.24). Testy je možné spustit následujícím příkazem
0 4 * * * docker exec git_aiscr_web_1 python3 run_tests.py
Testy jsou dále nastavené ke spuštění každý den ve 4 hodiny ráno s využitím cronu. Automatické testy musí být spuštěny vždy před deploymentem nové verze na testovací server.
Vyhodnocení výsledků testu
K vyhodnocení běhu testu slouží aplikace Kibana. V ní je připraven
pohled Test logs query (zobrazuje logové zprávy z půběhu testu).
Dále jsou k dispozici dashboardy Test Errors (zobrazuje chyby a
varování) a Test Overview (statistika chybových zpráv testu).
Požadované vlastnosti testovacího scénáře
Požadované vlastnosti testovacího scénáře jsou následující (vychází z článku How to Write Test Cases in Software Testing with Examples:
testovací scénář by měl být jednoduchý a měl by testovat max. jednu stránku či jednu sadu funkcí,
testovací scénář musí být napsán a vytvořen z pohledu uživatele, tj. musí přesně simulovat kroky, které by prováděl uživatel, pokud by chtěl dosáhnout daného výsledku,
testy by se neměly překrývat,
u každého testu musí být specifikována alespoň jedna metrika úspěšnosti průběhu.
Postup vytvoření kódu testu
Pro scénář je třeba připravit sadu vstupních dat a kontrolní výstup.
Struktura popisu scénáře
Popis scénáře musí obsahovat následující:
ID scénáře,
stručný popis scénáře,
předpoklady pro průběh testu (pokud jsou),
uživatelské kroky, které scénář simuluje,
testovací data,
očekávané výsledky (tj. metriky, které oveřují úspěšný průběh testu).
Scénáře jsou seskupeny podle jednotlivých aplikací.
1 Core
1.1 CORE-001
Testuje přihlášení uživatele.
Uživatelské kroky
Vyplnění formuláře na titulní stránce
Testovací data
Field |
Value |
|---|---|
id_username |
e-mail testovacího uživatele |
id_password |
heslo testovacího uživatele |
Očekávané výsledky
Uživatel je přesměrován na stránku s titulkem AMČR Homepage
Stav testu
Implementováno
2 Projekt
2.1 Otevření tabulky projekty
Testuje tabulku s projekty. Ověřuje, zda funguje řazení podle jednotlivých sloupců a zobrazení/skrývání sloupců.
Využívá metodu _check_column_hiding.
Předpoklady
Uživatel je přihlášen.
Uživatelské kroky
Uživatel klikne na menu Projekty -> Vybrat projekty
Uživatel kliká na záhlaví jednotlivých sloupců
Uživatel skyje a znovu zobrazí jednotlivé sloupce pomocí výsuvného menu
Testovací data
Žádná
Očekávané výsledky
Po kliknutí na název sloupce je do adresy stránky přidán řetězec
sort=sloupecPo skytí sloupce zmizí název sloupce ze záhlaví
Po zobrazení sloupce je sloupec v záhlaví tabulky
Stav testu
Implementován v
projekt.tests.test_selenium.ProjektSeleniumTest.test_projekt_001.
2.2 Zapsání projektu (pozitivní scénář 1)
Test zapsání projektu na stránce /projekt/zapsat. Test simuluje
zadání validních data měl by končit zapsáním projektu do databáze.
Předpoklady
Uživatel je přihlášen.
Jsou vložena kompletní data o katastrech, okresech a krajích.
Uživatelské kroky
Uživatel klikne na menu Projekty -> Zapsat
Uživatel vyplní data do formuláře a kliknutím na mapu vybere hlavní katastr
Uživatel klikne na tlačítko Uložit
Testovací data
Field |
Value |
|---|---|
typ_projektu |
záchranný |
id_podnet |
test |
id_lokalizace |
test |
id_parcelni_cislo |
test |
id_planovane_zahajeni |
dynamicky vložené datum (dnes + dva dny až dnes + pět dní) |
id_oznamovatel |
test |
id_odpovedna_osoba |
test |
id_adresa |
test |
id_telefon |
+420123456789 |
id_email |
Očekávané výsledky
Pole
id_oznamovatelje povoleno.Pole
id_odpovedna_osobaje povoleno.Pole
id_adresaje povoleno.Pole
id_telefonje povoleno.Pole
id_emailje povoleno.Po kliknutí na tlačítko Uložit je v databázi o 1 projekt více
Stav testu
Implementován v
projekt.tests.test_selenium.ProjektZapsatSeleniumTest.test_projekt_zapsat_p_001.
2.3 Zapsání projektu (negativní scénář 1)
Test zapsání projektu na stránce /projekt/zapsat. Test simuluje
zadání nevalidních data měl by končit nezapsáním projektu do databáze.
Předpoklady
Uživatel je přihlášen.
Uživatel otevře stránku Zapsat projekt.
Uživatelské kroky
Uživatel otevře stránku Zapsat projekt.
Testovací data
Pokud není uvedeno, jsou stejná jako u testu 2.2.
Field ID |
Value |
|---|---|
id_planovane_zahajeni |
(date range calculated: -9 days and -5 days from today) |
Očekávané výsledky
Počet projektů se nezměnil.
Stav testu
Implementován v
projekt.tests.test_selenium.ProjektZapsatSeleniumTest.test_projetest_projekt_zapsat_n_001.
2.4 Zapsání projektu (negativní scénář 2)
Test zapsání projektu na stránce /projekt/zapsat. Test simuluje
zadání nevalidních data měl by končit nezapsáním projektu do databáze.
Předpoklady
Uživatel je přihlášen.
Uživatel otevře stránku Zapsat projekt.
Uživatelské kroky
Uživatel otevře stránku Zapsat projekt.
Testovací data
Pokud není uvedeno, jsou stejná jako u testu 2.2.
Field ID |
Value |
|---|---|
id_telefon |
XXX |
Očekávané výsledky
Počet projektů se nezměnil.
Stav testu
Implementován v
projekt.tests.test_selenium.ProjektZapsatSeleniumTest.test_projekt_zapsat_n_002.
2.5 Zapsání projektu (negativní scénář 3)
Test zapsání projektu na stránce /projekt/zapsat. Test simuluje
zadání nevalidních data měl by končit nezapsáním projektu do databáze.
Předpoklady
Uživatel je přihlášen.
Uživatelské kroky
Uživatel otevře stránku Zapsat projekt.
Testovací data
Pokud není uvedeno, jsou stejná jako u 2.2.
Field ID |
Value |
|---|---|
id_planovane_zahajeni |
(date range calculated: 600 days and 620 days from today) |
Očekávané výsledky
Počet projektů se nezměnil.
Stav testu
Implementován v
projekt.tests.test_selenium.ProjektZapsatSeleniumTest.test_projekt_zapsat_n_003.
2.6 Zahájení výzkumu (pozitivní scénář 1)
Předpoklady
Uživatel je přihlášen.
Existuje projekt ve stavu A2.
Uživatelské kroky
Uživatel otevře projekt ve stavu A2.
Testovací data
Field ID |
Value |
|---|---|
id_datum_zahajeni |
(date calculated: -5 days from today) |
Očekávané výsledky
Projekt přesunut do stavu A3
Datum zahájení projektu odpovídá testovacím datům.
Stav testu
Implementován v
projekt.tests.test_selenium.ProjektZahajitVyzkumSeleniumTest.test_projekt_zahajit_vyzkum_p_001.
2.7 Ukončení výzkumu (pozitivní scénář 1)
Předpoklady
Uživatel je přihlášen.
Existuje projekt ve stavu A3.
Uživatelské kroky
Uživatel otevře projekt ve stavu A3.
Testovací data
Field ID |
Value |
|---|---|
id_datum_ukonceni |
(date calculated: -1 days from today) |
Očekávané výsledky
Projekt přesunut do stavu A4.
Datum zahájení projektu odpovídá testovacím datům.
Stav testu
Implementován v
projekt.tests.test_selenium.ProjektUkoncitVyzkumSeleniumTest.test_projekt_ukoncit_vyzkum_p_001.
2.8 Ukončení výzkumu (negativní scénář 1)
Předpoklady
Uživatel je přihlášen.
Existuje projekt ve stavu A3.
Uživatelské kroky
Uživatel otevře projekt ve stavu A3.
Testovací data
Field ID |
Value |
|---|---|
id_datum_ukonceni |
(date calculated: 90 days from today) |
Očekávané výsledky
Projekt zůstal ve stavu A3.
Zobrazena chyba
Datum nesmí být dále než měsíc v budoucnosti.
Stav testu
Implementován v
projekt.tests.test_selenium.ProjektUkoncitVyzkumSeleniumTest.test_projekt_ukoncit_vyzkum_n_001.
2.9 Uzavření projektu (pozitivní scénář 1)
Předpoklady
Uživatel je přihlášen.
Existuje projekt ve stavu A4, který má projektovou akci.
Uživatelské kroky
Uživatel otevře projekt ve stavu A4.
Testovací data
Žádná.
Očekávané výsledky
Projekt přestunut do stavu A5.
Stav testu
Implementován v
projekt.tests.test_selenium.ProjektUzavritSeleniumTest.test_projekt_uzavrit_p_001.
2.10 Uzavření projektu (negativní scénář 1)
Předpoklady
Uživatel je přihlášen.
Existuje projekt ve stavu A4, který nemá projektovou akci.
Uživatelské kroky
Uživatel otevře projekt ve stavu A4.
Testovací data
Žádná.
Očekávané výsledky
Projekt zůstal ve stavu A4.
Zobrazena chyba
Projekt musí mít alespoň jednu projektovou akci.
Stav testu
Implementován v
projekt.tests.test_selenium.ProjektUzavritSeleniumTest.test_projekt_uzavrit_n_001.
2.11 Archivace projektu (pozitivní scénář 1)
Předpoklady
Uživatel je přihlášen.
Existuje projekt ve stavu A5, který má archivovanou projektovou akci.
Uživatelské kroky
Uživatel otevře projekt ve stavu A5.
Testovací data
Žádná
Očekávané výsledky
Projekt je přesunut do stavu A6.
Stav testu
Implementován v
projekt.tests.test_selenium.ProjektArchivovatSeleniumTest.test_projekt_archivovat_p_001.
2.12 Archivace projektu (negativní scénář 1)
Předpoklady
Uživatel je přihlášen.
Existuje projekt ve stavu A5, který má nearchivovanou projektovou akci.
Uživatelské kroky
Uživatel otevře projekt ve stavu A5.
Testovací data
Stejná jako u test_projekt_zapsat_p_001.
Očekávané výsledky
Projekt zůstal ve stavu A5.
Zobrazena chyba
Akce musí být archivovaná.
Stav testu
Implementován v
projekt.tests.test_selenium.ProjektArchivovatSeleniumTest.test_projekt_uzavrit_n_001.
2.13 Vrácení stavu u archivovaného projektu (pozitivní scénář 1)
Předpoklady
Uživatel je přihlášen.
Existuje projekt ve stavu A6.
Uživatelské kroky
Uživatel otevře projekt ve stavu A6.
Testovací data
Field ID |
Value |
|---|---|
id_reason |
test |
Očekávané výsledky
Projekt přesunut do stavu A5.
Stav testu
Implementován v
projekt.tests.test_selenium.ProjektVratitArchivovanySeleniumTest.
2.14 Vrácení stavu u uzavřeného projektu (pozitivní scénář 1)
Předpoklady
Uživatel je přihlášen.
Existuje projekt ve stavu A5.
Uživatelské kroky
Uživatel otevře projekt ve stavu A5.
Testovací data
Field ID |
Value |
|---|---|
id_reason |
test |
Očekávané výsledky
Projekt přesunut do stavu A4.
Stav testu
Implementován v
projekt.tests.test_selenium.ProjektVratitUzavrenySeleniumTest.
2.15 Vrácení stavu u ukončeného projektu (pozitivní scénář 1)
Uživatel je přihlášen.
Existuje projekt ve stavu A4.
Uživatel otevře projekt ve stavu A4.
Field ID |
Value |
|---|---|
id_reason |
test |
Projekt přesunut do stavu A3.
Implementován v
projekt.tests.test_selenium.ProjektVratitUkoncenySeleniumTest.
2.16 Vrácení stavu u zahájeného projektu (pozitivní scénář 1)
Předpoklady
Uživatel je přihlášen.
Existuje projekt ve stavu A3.
Uživatelské kroky
Uživatel otevře projekt ve stavu A3.
Testovací data
Field ID |
Value |
|---|---|
id_reason |
test |
Očekávané výsledky
Projekt přesunut do stavu A2.
Stav testu
Implementován v
projekt.tests.test_selenium.ProjektVratitZahajenySeleniumTest.
2.17 Vrácení stavu u přihlášeného projektu (pozitivní scénář 1)
Předpoklady
Uživatel je přihlášen.
Existuje projekt ve stavu A2.
Uživatelské kroky
Uživatel otevře projekt ve stavu A2.
Testovací data
Field ID |
Value |
|---|---|
id_reason |
test |
Očekávané výsledky
Projekt přesunut do stavu A1.
Stav testu
Implementován v
projekt.tests.test_selenium.ProjektVratitPrihlasenySeleniumTest.
2.21 Zrušení projektu (pozitivní scénář 1)
Předpoklady
Uživatel je přihlášen.
Existuje projekt ve stavu A7.
Uživatelské kroky
Uživatel otevře projekt s projektovými akcemi.
Testovací data
Field ID |
Value |
|---|---|
id_reason_text |
test |
Očekávané výsledky
Projekt je přesunut do stavu A8.
Stav testu
Implementován v
projekt.tests.test_selenium.ProjektZrusitSeleniumTest.test_projekt_zrusit_p_001.