Lekce 13 - Testovací nástroje
V předchozí lekci, Management rizik, jsme se detailněji zaměřili na definici rizika a jeho atributy, rozlišili jsme si projektová a produktová rizika a také jsme si ukázali, co je to analýza a řízení produktových rizik. Ve druhé části jsme se zaměřili na metriky používané v testování a také na účel, obsah a cílové skupiny reportů z testování.
V dnešní lekci, která se věnuje testovacím nástrojům, se nejprve podíváme na konfigurační management a management defektů. Vysvětlíme si, jak různé typy testovacích nástrojů podporují testování, a ukážeme si výhody i rizika automatizace testů.
Konfigurační management
Konfigurační management je disciplína v oblasti testování zaměřená na identifikaci, řízení a sledování pracovních produktů:

Komplexní konfigurační položky mohou zahrnovat položky dílčí s definovanými vztahy a verzemi. Jakmile je konfigurační položka schválena, stává se součástí tzv. baseline a jakékoli změny mohou být prováděny pouze prostřednictvím formálního procesu řízení změn. Baseline je výchozí stav projektu, kódu nebo systému, který slouží jako referenční bod pro srovnání budoucích změn. Umožňuje měřit odchylky a zajišťuje kontrolu nad změnami během vývoje a testování.
Při vytvoření nové baseline konfigurační management zaznamenává všechny změny, což umožňuje reprodukovat předchozí výsledky testů návratem k původní baseline.
Konfigurační management zajišťuje:
- jednoznačnou identifikaci všech konfiguračních položek a jejich verzí, evidenci změn a sledování vztahů mezi položkami pro trasovatelnost v průběhu testování,
- jednoznačné odkazy na všechny dokumenty a softwarové položky v dokumentaci testování.
Automatizovaný konfigurační management je často součástí DevOps pipeline, která zahrnuje procesy jako continuous integration, continuous delivery a nasazování spolu s automatizovaným testováním.
Praktický příklad
Představme si tým, který testuje nový modul pro správu objednávek v e-shopu. Tým vytváří a spravuje několik konfiguračních položek pro testování modulu objednávek. Testovací tým vytvoří test casy pro ověření funkčnosti, jako je přidání položek do košíku, uplatnění slev a dokončení objednávky. Každý test case je jednoznačně identifikován verzí a je uložen v nástroji pro správu verzí. Jakmile jsou všechny test casy schváleny, stanou se součástí baseline. Pokud je nutné některý z test casů upravit, například při přidání nové funkce, úpravy mohou být provedeny pouze prostřednictvím formálního procesu řízení změn.
Konfigurační management zaznamenává všechny změny provedené v test casech a testovacích skriptech. To umožňuje týmu snadno se vrátit k předchozí verzi testovací sady, je-li potřeba reprodukovat výsledky testů z předchozího cyklu. Automatizovaný konfigurační management je integrován do DevOps pipeline. Při každém nasazení nové verze modulu jsou všechny změny v testovacích skriptech a konfiguracích automaticky zaznamenány a testy jsou spuštěny, aby se ověřilo, že nová verze neporušila žádnou z funkcionalit.
Management defektů
Management defektů je nezbytný proces v testování, jehož cílem je efektivně řídit zjištěné defekty od jejich odhalení až po uzavření. Tento proces zahrnuje definici pracovního postupu pro zpracování anomálií a pravidla pro jejich klasifikaci. Pracovní postup obvykle zahrnuje činnosti jako zaznamenávání, analýzu, klasifikaci, rozhodnutí o reakci a uzavření reportu o defektu. Anomálie mohou být hlášeny v jakékoli fázi SDLC, včetně static testingu. Ne všechny nahlášené anomálie jsou skutečné defekty, což je posouzeno v rámci zpracování reportu:

Report o defektu zaznamenaný během dynamic testingu obvykle obsahuje:
- jedinečný identifikátor,
- název a krátké shrnutí anomálie,
- datum, název reportující organizace a jméno autora,
- identifikaci testovaného objektu a prostředí,
- kontext defektu,
- popis selhání umožňující reprodukci a vyřešení,
- očekávané a skutečné výsledky,
- závažnost defektu,
- prioritu opravy,
- stav defektu,
- odkazy.
Praktický příklad
Během testování e-shopu může tester objevit chybu, kdy se nesprávně počítá celková cena objednávky při použití slevového kuponu. Tester tuto chybu zaznamená do systému pro správu defektů s podrobným popisem problému, identifikací testovaného prostředí, kroků k reprodukci chyby a očekávaného či skutečného výsledku. Defekt je klasifikován jako vysoce závažný, protože ovlivňuje výpočet plateb zákazníků, a je prioritně předán vývojovému týmu k opravě.
Nástroje pro management defektů mohou automaticky zaznamenávat některé informace. Šablony a příklady reportů lze nalézt v normě ISO/IEC/IEEE 29119-3.
Nástroje pro podporu testování
Testovací nástroje podporují a usnadňují mnoho testovacích aktivit. Patří mezi ně například nástroje pro management testování, které zvyšují efektivitu práce zjednodušením správy SDLC, požadavků, testů, defektů a konfigurací. Nástroje pro static testing zase podporují provádění revizí a static analysis. Nástroje pro návrh a test implementation usnadňují vytváření test casů, testovacích dat a testovacích procedur. Nalezneme i nástroje, které napomáhají automatizovanému provádění testů a měření pokrytí. Další nástroje zase umožňují provádět nefunkcionální testování, které je obtížné nebo nemožné provést manuálně. DevOps nástroje podporují pipeline v DevOps, sledování pracovních toků, procesy automatizovaného sestavování a CI/CD.

Nástroje pro spolupráci zlepšují komunikaci. Máme také nástroje podporující škálovatelnost a standardizaci nasazení, jako virtuální počítače a nástroje pro práci s kontejnery. Může to být však i jakýkoli jiný nástroj, který pomáhá při testování, kupříkladu tabulkový procesor může být v kontextu testování považovaný za testovací nástroj.
Výhody a rizika automatizace testů
Prosté pořízení nástroje není zárukou úspěchu. Každý nový nástroj vyžaduje určitou pracnost k dosažení reálných a trvalých přínosů, a to například na zavedení nástroje, jeho údržbu či školení. Existují také určitá rizika, u kterých je vhodné provést analýzu a zmírnění jejich dopadu.
Mezi možné výhody použití automatizace testů patří:
- Úspora času snížením množství opakované manuální práce – patří sem provádění regression testů, opětovné zadávání stejných testovacích dat, porovnávání očekávaných výsledků se skutečnými nebo kontroly kódu dle daného standardu programování.
- Předcházení lidským chybám díky vyšší konzistenci a opakovatelnosti – testy jsou důsledně odvozovány z požadavků, testovací data jsou vytvářena systematicky a testy jsou prováděny nástrojem ve stále stejném pořadí se stejnou frekvencí.
- Objektivnější posouzení a provádění opatření, která jsou pro člověka příliš komplikovaná na odvození.
- Snazší přístup k informacím o testování pro podporu managementu a reportování – statistiky, grafy a souhrnná data o průběhu a délce provádění testů a míře defektů.
- Zkrácení doby testování vedoucí k dřívější detekci defektů, rychlejší zpětné vazbě a rychlejšímu uvedení na trh.
- Úspora času testerů, který je možno využít k návrhu nových, důkladnějších a efektivnějších testů.
Mezi možná rizika použití automatizace testů patří:
- Nerealistická očekávání od daného nástroje včetně funkcionality a snadnosti použití.
- Nepřesné odhady času, nákladů, úsilí potřebného k zavedení nástroje, udržování testovacích skriptů a změně stávajícího procesu manuálního testování.
- Používání nástroje v situacích, kdy je manuální testování vhodnější.
- Přílišné spoléhání se na nástroj, např. ve smyslu ignorování potřeby kritického myšlení člověka.
- Závislost na dodavateli nástroje, který může ukončit činnost, přestat nástroj vyvíjet, prodat jej jinému dodavateli nebo poskytovat nedostatečnou podporu, například reakce na dotazy, upgrady či opravy defektů.
- Používání open-source nástroje, jehož vývoj může být zastaven nebo jehož vnitřní komponenty mohou vyžadovat poměrně časté aktualizace a další vývoj.
- Nekompatibilita technologie automatizace testování s technologiemi pro vývoj.
- Výběr nevhodného nástroje, který nesplňuje regulatorní požadavky nebo bezpečnostní normy.
Zdrojem této lekce jsou Učební osnovy – Certifikovaný tester základní úrovně ver. 4.0. Copyright © 2023 autoři verze 4.0: Renzo Cerquozzi, Wim Decoutere, Klaudia Dussa-Zieger, Jean-François Riverin, Arnika Hryszko, Martin Klonk, Michaël Pilaeten, Meile Posthuma, Stuart Reid, Eric Riou du Cosquer (předseda), Adam Roman, Lucjan Stapp, Stephanie Ulrich (místopředseda), Eshraka Zakaria
V následujícím kvízu, Kvíz - Přístupy k testování, management testování a rizik, si vyzkoušíme nabyté zkušenosti z předchozích lekcí.