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).

dashboard

Dále jsou k dispozici dashboardy Test Errors (zobrazuje chyby a varování) a Test Overview (statistika chybových zpráv testu).

dashboard

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

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

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

  1. Uživatel klikne na menu Projekty -> Vybrat projekty

  2. Uživatel kliká na záhlaví jednotlivých sloupců

  3. Uživatel skyje a znovu zobrazí jednotlivé sloupce pomocí výsuvného menu

Testovací data

Žádná

Očekávané výsledky

  1. Po kliknutí na název sloupce je do adresy stránky přidán řetězec sort=sloupec

  2. Po skytí sloupce zmizí název sloupce ze záhlaví

  3. 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

  1. Uživatel klikne na menu Projekty -> Zapsat

  2. Uživatel vyplní data do formuláře a kliknutím na mapu vybere hlavní katastr

  3. 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

test@example.com

Očekávané výsledky

  • Pole id_oznamovatel je povoleno.

  • Pole id_odpovedna_osoba je povoleno.

  • Pole id_adresa je povoleno.

  • Pole id_telefon je povoleno.

  • Pole id_email je 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.

Číslo a název scénáře

Předpoklady

Uživatelské kroky

Testovací data

Očekávané výsledky

Stav testu