1. diel - Úvod do automatizovaného testovania softvéru Nové
V tomto tutoriále kurzu praktického testovania projektov si predstavíme hlavné výhody automatizovaného testovania oproti manuálnemu prístupu. Pripomenieme si, ako pracovať s nástrojom Jira a zoznámime sa s konkrétnymi testovacími prípadmi, na ktoré sa v priebehu kurzu zameriame. Ukážeme si tiež, ako vyzerá testovací projekt a ako spustiť jeho klientsku aj serverovú časť.
Úvod do automatizovaného testovania softvéru
S rastúcou zložitosťou softvérových systémov a zrýchľujúcim sa vývojovým cyklom sa testovanie stáva neoddeliteľnou súčasťou moderného vývoja. Manuálne testovanie je síce dôležité, ale býva časovo náročné, náchylné k ľudským chybám a horšie škálovateľné. Práve tu prichádza k slovu automatizované testovanie, ktoré umožňuje efektívne, rýchle a opakovateľné overovanie funkčnosti aplikácií.
Automatizované testy výrazne skracujú čas potrebný na regresné testovanie, minimalizujú riziko opomenutia chýb a celkovo zvyšujú kvalitu softvéru. Navyše umožňujú vývojárom aj testerom rýchlo reagovať na zmeny v kóde a ihneď overiť, či nové úpravy neovplyvnili súčasnú funkcionalitu.
Minimálne požiadavky
Pre úspešné absolvovanie kurzu je nutná znalosť jazyka Python aspoň v rozsahu našich kurzov:
Z oblasti testovania predpokladáme aj znalosti z kurzov:
Na posledný z uvedených kurzov tento kurz priamo nadväzuje. Aj keď si niektoré kľúčové princípy z oblasti manuálneho testovania krátko pripomenieme, bez základnej orientácie v problematike praktického testovania nebude možné plne porozumieť preberaným témam.
Očakávame, že účastníci už majú skúsenosti s návrhom testovacích prípadov, orientáciou v Jira a rozumejú základom testovacieho procesu, na ktoré v tomto kurze priamo nadväzujeme a ďalej ich rozvíjame smerom k automatizácii.
Sprevádzkovanie testovacieho projektu
Pracovať budeme s projektom fakturačného systému z lekcie Fakturačný systém s REST API - Sprevádzkovanie projektu, kde v prípade problémov nájdete podrobnejší postup na spustenie oboch častí aplikácie.
Fakturačný systém sa skladá z dvoch častí:
- Klientska časť fakturačného systému, spravujúca užívateľské rozhranie (front-end), je napísaná v javascriptovom frameworku React.
- Serverová časť, riadiaca hlavne ukladanie a získavanie dát (back-end), potom v Python frameworku Django.
Databáza faktúr obsahuje osoby (podnikateľov), ktoré vystupujú ako odberatelia alebo dodávatelia:

Na obrázku vyššie vidíme zoznam týchto osôb s možnosťou zobrazenia detailu, úpravy alebo zmazania záznamu. Môžeme samozrejme tiež pridať nový subjekt.
Pod záložkou Invoices nájdeme prehľad všetkých faktúr:

Faktúry je možné filtrovať podľa ceny, názvu odberateľa, dodávateľa alebo textu v popise. K dispozícii je aj prehľadná súhrnná a ročná bilancia.
Obe časti projektu (klient aj server) sú k dispozícii na stiahnutie v archíve tejto lekcie.
Príprava servera
Začneme spustením serverovej časti postavenej na Django REST Frameworku v Pythone.
Tento postup predpokladá, že máme na počítači nainštalovaný Python (pre server) a Node.js (pre klienta). Postup k prípadnej inštalácii týchto technológií nabehneme v lekcii Fakturačný systém s REST API - Sprevádzkovanie projektu
V rozbalenej zložke s projektom klikneme pravým tlačidlom myši na
podpriečinok invoice_server/
a zvolíme možnosť Open in
Terminal. Pokiaľ sme s projektom ešte vôbec nepracovali, bude nutné
nainštalovať potrebné balíčky. Na to využijeme príkaz:
pip install <package_name>
V našom projekte využívame nasledujúce balíčky a knižnice:
django
,django-filter
,djangorestframework
,django-cors-headers
,pandas
,numpy
.
V príkazovom riadku nakoniec spustíme Django projekt príkazom:
python manage.py runserver
Príprava klienta
Teraz sprevádzkováme klientsku časť aplikácie. Klikneme pravým
tlačidlom myši na podpriečinok invoice-client/
a opäť zvolíme
Open in Terminal.
Potrebné knižnice nainštalujeme príkazom:
npm install
Po dokončení inštalácie spustíme klienta príkazom:
npm start
V prehliadači zadáme adresu http://localhost:3000
, kde
aplikácia pobeží a zobrazí sa nám zoznam faktúr:

Obe časti aplikácie (klienta aj server) ukončíme v príslušnom termináli stlačením klávesovej skratky Ctrl + C.
Testovacie prípady v Jiře
Základy práce s nástrojom Jira sme si popísali v lekcii Plánovanie testov v Jira - Tvorba testovacích scenárov, kde sme tiež vytvorili prvý testovací prípad (test case) na manuálne testovanie, TC1 – Adding a person.
Následne sme v lekcii Plánovanie testov v Jira - Doplnenie testovacích prípadov doplnili ďalšie TC a všetko rozdelili do troch šprintov:

TC pre automatizované testovanie
V nasledujúcich tutoriáloch sa zameriame na automatizáciu testovacích prípadov. Ukážeme si, ako testovať obe vrstvy našej aplikácie pomocou bežne používaných nástrojov v Pythone.
Testovanie front-endu pomocou Selenia
Pre automatizované testovanie webového rozhrania využijeme nástroj Selenium, ktorý umožňuje programovo ovládať webový prehliadač (napr. Chrome alebo Firefox), podobne ako by s ním pracoval bežný používateľ. Počas tohto testovania Selenium kliká na prvky stránky, vypĺňa formuláre alebo overuje prítomnosť konkrétnych dát.
Pre testovanie front-end sme zvolili tieto testovacie prípady:
- TC5 – Adding an invoice: Overíme, že po vyplnení formulára a jeho odoslaní sa nová faktúra správne uloží a zobrazí v zozname.
- TC8 – Deleting an invoice: Otestujeme, že po kliknutí na tlačidlo Delete pri konkrétnej faktúre dôjde k jej odstráneniu z databázy a že užívateľ ju už neuvidí v zozname. Vďaka tomuto testu bude odstránená faktúra, ktorú sme vytvorili v predchádzajúcom automatickom teste (TC5 – Adding an invoice).
Oba testy tak tvoria uzavretý celok, ktorý overuje správnu funkčnosť systému pri práci so záznamami od ich vytvorenia až po ich odstránenie. Tieto scenáre zároveň pokrývajú základné funkcie, s ktorými sa používateľ najčastejšie stretáva (vytváranie a mazanie záznamov).
Testovanie back-endu pomocou pytestu
Serverovú časť aplikácie budeme testovať pomocou frameworku pytest, ktorý je široko používaný na automatizované testovanie v Pythone. Umožňuje prehľadne organizovať testy, spúšťať ich hromadne a vyhodnocovať ich výsledky.
Na rozdiel od testovania front-endu sa tu zameriame na overenie logiky a funkčnosti API, teda na to, či server správne reaguje na požiadavky typu editácie, mazania, získania dát a pod. Namiesto simulácie používateľa pracujeme priamo s požiadavkami HTTP.
Vybrané testovacie scenáre:
- TC2 – Editing a person: Overíme, že server umožní upraviť údaje u existujúcej osoby a zmeny sa správne uložia.
- TC4 – Deleting a person: Otestujeme, že po odoslaní požiadavky na zmazanie určitej osoby server záznam skutočne odstráni a nebude ho vracať v zozname.
Zmazanie osoby je v našej aplikácii odlišné od zmazania faktúry. V skutočnosti sa "zmazaná" osoba, ktorá môže figurovať na už vystavených faktúrach, v databáze iba skryje. Vďaka použitiu frameworku pytest sa po vykonaní týchto testovacích prípadov dáta v databáze automaticky vrátia do pôvodného stavu, takže testovanie nijako neovplyvní reálny obsah aplikácie.
Oba prípady pokrývajú dôležité akcie nad entitou osoby a zároveň
overujú rôzne HTTP metódy (v našom prípade PUT
a
DELETE
), čím si precvičíme prácu s REST API a testovanie
rôznych typov požiadaviek.
Zvolená štvorica testovacích prípadov dobre reprezentuje základné funkcie oboch častí systému a umožní nám vytvoriť zmysluplný základ pre budúce rozšírenie automatizácie. Zameriavame sa na CRUD operácie (Create, Read, Update, Delete), ktoré sú jadrom väčšiny moderných aplikácií.
Výsledkom bude nielen vykonanie konkrétnych testov, ale aj vytvorenie základného testovacieho rámca, na ktorý bude možné ďalej nadviazať.
V nasledujúcej lekcii, Automatizované testovanie front-endu - Príprava prostredia, prejdeme k automatickému testovaniu projektu a pripravíme si prostredie pre automatizované testy front-endu.
Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 5x (255.08 kB)
Aplikácia je vrátane zdrojových kódov