NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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é:

Seznam osob v databázi faktur - Praktické testování projektů - Automatizované testování

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:

Seznam faktur v databázi faktur - Praktické testování projektů - Automatizované testování

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:

Seznam faktur v databázi faktur - Praktické testování projektů - Automatizované testování

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ů:

Rozdělení testovacích případů do sprintů. - Praktické testování projektů - Automatizované testování

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ů

 

Všechny články v sekci
Praktické testování projektů - Automatizované testování
Přeskočit článek
(nedoporučujeme)
Automatizované testování front-endu - Příprava prostředí
Článek pro vás napsal Filip Zeman
Avatar
Uživatelské hodnocení:
1 hlasů
Autor se věnuje vývojem aplikací hlavně kolem technologií .NET a to jak ve sféře desktopové, mobilní, tak hlavně samozřejmě webové. Nepohrdne ani Reactem či Djangem.
Aktivity