Lekce 1 - Úvod do automatizovaného testování softwaru Nové
V tomto tutoriálu kurzu praktického testování projektů si představíme hlavní výhody automatizovaného testování oproti manuálnímu přístupu. Připomeneme si, jak pracovat s nástrojem Jira, a seznámíme se s konkrétními testovacími případy, na které se v průběhu kurzu zaměříme. Ukážeme si také, jak vypadá testovací projekt a jak spustíme jeho klientskou i serverovou část.
Úvod do automatizovaného testování softwaru
S rostoucí složitostí softwarových systémů a zrychlujícím se vývojovým cyklem se testování stává nedílnou součástí moderního vývoje. Manuální testování je sice důležité, ale bývá časově náročné, náchylné k lidským chybám a hůře škálovatelné. Právě zde přichází ke slovu automatizované testování, které umožňuje efektivní, rychlé a opakovatelné ověřování funkčnosti aplikací.
Automatizované testy výrazně zkracují čas potřebný k regresnímu testování, minimalizují riziko opomenutí chyb a celkově zvyšují kvalitu softwaru. Navíc umožňují vývojářům i testerům rychle reagovat na změny v kódu a ihned ověřit, zda nové úpravy neovlivnily stávající funkcionalitu.
Minimální požadavky
Pro úspěšné absolvování kurzu je nutná znalost jazyka Python alespoň v rozsahu našich kurzů:
Z oblasti testování předpokládáme také znalosti z kurzů:
Na poslední z uvedených kurzů tento kurz přímo navazuje. I když si některé klíčové principy z oblasti manuálního testování krátce připomeneme, bez základní orientace v problematice praktického testování nebude možné plně porozumět probíraným tématům.
Očekáváme, že účastníci už mají zkušenosti s návrhem testovacích případů, orientují se v Jiře a rozumí základům testovacího procesu, na které v tomto kurzu přímo navazujeme a dále je rozvíjíme směrem k automatizaci.
Zprovoznění testovacího projektu
Pracovat budeme s projektem fakturačního systému z lekce Fakturační systém s REST API - Zprovoznění projektu, kde v případě potíží naleznete podrobnější postup ke spuštění obou částí aplikace.
Fakturační systém se skládá ze dvou částí:
- Klientské části, která spravuje uživatelské rozhraní (front-end) a je napsána v javascriptovém frameworku React.
- Serverové části, jež řídí hlavně ukládání a získávání dat (back-end) a jež je napsána v Python frameworku Django.
Databáze faktur obsahuje osoby (podnikatele), které vystupují jako odběratelé nebo dodavatelé:

Na obrázku výše vidíme seznam těchto osob s možností zobrazení detailu, úpravy nebo smazání záznamu. Můžeme samozřejmě také přidat nový subjekt.
Pod záložkou Faktury nalezneme přehled všech faktur:

Faktury lze filtrovat podle ceny, názvu odběratele, dodavatele nebo textu v popisu. K dispozici je i přehledná souhrnná a roční bilance.
Obě části projektu (klient i server) jsou k dispozici ke stažení v archivu této lekce.
Příprava serveru
Začneme spuštěním serverové části postavené na Django REST Frameworku v Pythonu.
Tento postup předpokládá, že máme na počítači nainstalovaný Python (pro server) a Node.js (pro klienta). Postup k případné instalaci těchto technologií najdeme v lekci Fakturační systém s REST API - Zprovoznění projektu.
V rozbalené složce s projektem klikneme pravým tlačítkem myši na
podsložku invoice_server/
a zvolíme možnost Otevřít v
Terminálu. Pokud jsme s projektem ještě vůbec nepracovali, bude nutné
nainstalovat potřebné balíčky. K tomu využijeme příkaz:
pip install <název_balíčku>
V našem projektu využíváme následující balíčky a knihovny:
django
,django-filter
,djangorestframework
,django-cors-headers
,pandas
,numpy
.
V příkazové řádce nakonec spustíme Django projekt příkazem:
python manage.py runserver
Příprava klienta
Nyní zprovozníme klientskou část aplikace. Klikneme pravým tlačítkem
myši na podsložku invoice-client/
a opět zvolíme Otevřít
v Terminálu.
Potřebné knihovny nainstalujeme příkazem:
npm install
Po dokončení instalace spustíme klienta příkazem:
npm start
V prohlížeči zadáme adresu http://localhost:3000
, kde
aplikace poběží, a zobrazí se nám seznam faktur:

Obě části aplikace (klienta i server) ukončíme v příslušném terminálu stisknutím klávesové zkratky Ctrl + C.
Testovací případy v Jiře
Základy práce s nástrojem Jira jsme si popsali v lekci Plánování testů v Jiře - Tvorba testovacích scénářů, kde jsme také vytvořili první testovací případ (test case) k manuálnímu testování, TC1 – Přidání osoby.
Následně jsme v lekci Plánování testů v Jiře - Doplnění testovacích případů doplnili další TC a vše rozdělili do tří sprintů:

TC pro automatizované testování
V následujících tutoriálech se zaměříme na automatizaci testovacích případů. Ukážeme si, jak testovat obě vrstvy naší aplikace pomocí běžně používaných nástrojů v Pythonu.
Testování front-endu pomocí Selenia
Pro automatizované testování webového rozhraní využijeme nástroj Selenium, který umožňuje programově ovládat webový prohlížeč (např. Chrome nebo Firefox), jako by s ním pracoval běžný uživatel. Během tohoto testování Selenium kliká na prvky stránky, vyplňuje formuláře nebo ověřuje přítomnost konkrétních dat.
Pro testování front-endu jsme zvolili tyto testovací případy:
- TC5 – Přidání faktury: Ověříme, že po vyplnění formuláře a jeho odeslání se nová faktura správně uloží a zobrazí v seznamu.
- TC8 – Smazání faktury: Otestujeme, že po kliknutí na tlačítko Smazat u konkrétní faktury dojde k jejímu odstranění z databáze a že ji uživatel již neuvidí v seznamu. Díky tomuto testu bude odstraněna faktura, kterou jsme vytvořili v předchozím automatickém testu (TC5 – Přidání faktury).
Oba testy tak tvoří uzavřený celek, který ověřuje správnou funkčnost systému při práci se záznamy od jejich vytvoření až po jejich odstranění. Tyto scénáře zároveň pokrývají základní funkce, s nimiž se uživatel nejčastěji setkává (vytváření a mazání záznamů).
Testování back-endu pomocí pytestu
Serverovou část aplikace budeme testovat pomocí frameworku pytest, který je široce používaný pro automatizované testování v Pythonu. Umožňuje přehledně organizovat testy, hromadně je spouštět a vyhodnocovat jejich výsledky.
Na rozdíl od testování front-endu se zde zaměříme na ověření logiky a funkčnosti API, tedy na to, zda server správně reaguje na požadavky typu editace, mazání, získání dat apod. Místo simulace uživatele pracujeme přímo s požadavky HTTP.
Vybrané testovací scénáře:
- TC2 – Editace osoby: Ověříme, zda server umožní upravit údaje u existující osoby a zda se změny správně uloží.
- TC4 – Smazání osoby: Otestujeme, že po odeslání požadavku na smazání určité osoby server záznam skutečně odstraní a nebude jej vracet v seznamu.
Smazání osoby je v naší aplikaci odlišné od smazání faktury. Ve skutečnosti se "smazaná" osoba, která může figurovat v již vystavených fakturách, v databázi pouze skryje. Díky použití frameworku pytest se po provedení těchto testovacích případů data v databázi automaticky vrátí do původního stavu, takže testování nijak neovlivní reálný obsah aplikace.
Oba případy pokrývají důležité akce nad entitou osoby a zároveň
ověřují různé HTTP metody (v našem případě PUT
a
DELETE
), čímž si procvičíme práci s REST API a testování
různých typů požadavků.
Zvolená čtveřice testovacích případů dobře reprezentuje základní funkce obou částí systému a umožní nám vytvořit smysluplný základ pro budoucí rozšíření automatizace. Zaměřujeme se na CRUD operace (Create, Read, Update, Delete), které jsou jádrem většiny moderních aplikací.
Výsledkem bude nejen provedení konkrétních testů, ale i vytvoření základního testovacího rámce, na který bude možné dále navázat.
V příští lekci, Automatizované testování front-endu - Příprava prostředí, přejdeme k automatickému testování projektu a připravíme si prostředí pro automatizované testy front-endu.
Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 10x (132.77 kB)
Aplikace je včetně zdrojových kódů