Stručně shrnujeme klíčové cíle, principy a koncepty našeho přístupu k testování. Pro každé naše angažmá v oblastí testování připravujeme přizpůsobenou testovací strategii, která odráží jedinečnou situaci klienta.
Cíle testování
Primárními cíli testování softwaru jsou validace a verifikace testovaných softwarových systémů. Validace se zaměřuje na zajištění, že byl vytvořen správný systém. Verifikace se zaměřuje na zajištění, že systém byl správně implementován. Kromě těchto dvou základních cílů existují i další cíle testování:
- odhalit důležité chyby,
- posoudit kvalitu softwarového produktu,
- odhalit, do jaké míry software funguje podle poskytnutých požadavků,
- odhalit, do jaké míry požadavky pokrývají potřeby,
- zajistit, že software je vhodný pro zamýšlený účel,
- získat důvěru v kvalitu produktu,
- poskytnout přehled o postupu projektu,
- poskytnout informace pro rozhodnutí o uvolnění nové verze,
- poskytnout informace pro predikci a kontrolu nákladů na provoz a podporu,
- pomoci při zlepšování kvality produktu.
Principy testování
Naše testovací strategie jsou postaveny na následujících principech:
- Pokrytí požadavků: Testy vycházejí z definice požadovaného chování. Granularita reference se může lišit, ale je vhodné odkazovat na co nejkonkrétnější popis požadovaného chování (preferovat požadavky před funkční specifikací).
- Úrovně testování: Testy jsou prováděny na několika úrovních s postupně se zvyšující zralostí integrace. Testy jednotlivých systémů předcházejí testům plně integrovaných systémů ve spolupráci s uživateli.
- Typy testů: Ve dvou širokých kategoriích funkčních a nefunkčních testů existují různé typy testů, z nichž každý se zaměřuje na určitý aspekt systému.
- Řízení procesů: Testy jsou řízeny definovaným procesem řízení testů, defekty jsou řízeny definovaným procesem řízení defektů.
- Data Governance: V projektech s intenzivním využitím dat hraje významnou roli správa dat dotčených projektem (Vlastníci dat, Správci dat).
- Oddělení rolí vývoje a testování: Obsazení vývojových a testovacích rolí je vždy, pokud je to možné, odlišné.
- Testovací nástroje: Řízení testů a řízení defektů jsou podporovány nástroji s metodikami pro jejich použití.
- Testovací případy: Testovací případy jsou dostupné před zahájením testu a výsledky testů pro jednotlivé testovací případy jsou archivovány a dostupné pro další analýzu.
- Testovací data: Pro testovací účely by měla být používána neprodukční data, pokud neexistuje specifická potřeba IT testování, která produkční data nutně vyžaduje.
- Testovací prostředí: Testování se provádí ve vyhrazeném testovacím prostředí, které je odděleno od produkčního prostředí a má ideálně velmi podobnou konfiguraci.
- Automatizace testů: Provádění testů a příprava testovacích dat jsou automatizovány, kdykoli to má smysl (např. z ekonomických důvodů nebo kvůli době trvání).
Aktivity testování
Obecně organizujeme řízení testů prostřednictvím následujících aktivit:
- Řízení testů (Test Management): Řízení testů zahrnuje plánování, organizaci, personální zajištění, řízení, koordinaci a reportování napříč aktivitami Plánování testů, Návrhu testů, Přípravy testů, Provádění testů a Reportování testů. Řízení testů je odpovědností Test manažera a Test leaderů.
- Plánování testů (Test Planning): High-level plán testů rozpracovává testovací strategii do větších detailů. Detailní plány testů se zaměřují na konkrétní systémy nebo některé nefunkční testy.
- Návrh testů (Test Design): Účelem této fáze je naplánovat testy pro konkrétní systém nebo nefunkční test na detailní úrovni. Fáze návrhu testů vytváří detailní plány testů a testovací případy.
- Detailní plány testů rozpracovávají testovací strategii a high-level plán testů; specifikují vstupy, výstupy, detailní aktivity a zdroje, dále specifikují požadavky na testovací prostředí a rozsah a kvalitu testovacích dat.
- Testovací případy jsou mapovány na funkční specifikace nebo požadavky či jakoukoli dokumentaci popisující požadované funkční a nefunkční chování; chování, které bylo požadováno, ale nebylo testováno, by mělo být transparentní.
- Příprava testů (Test Preparation)
- Testovací scénáře: Testovací případy, definované ve fázi návrhu testů, jsou rozpracovány do testovacích scénářů, které popisují testovací kroky a požadované (pozitivní) výsledky. Testovací scénáře mohou být seskupeny do testovacích sad, které seskupují scénáře, jež se preferovaně provádějí společně. Testovací scénáře (testovací sady) jsou vstupy pro operativní testovací plán.
- Operativní testovací plán: Plán rozvrhuje testování na úrovni testovacích scénářů (testovacích sad); znázorňuje, který testovací scénář bude testován kterým testerem a kdy. Plán zohledňuje materiální závislosti mezi scénáři, požadované zdroje (testeři, test analytici) a dostupnost testovacího prostředí a testovacích dat.
- Testovací prostředí: Příprava testovacího prostředí je sladěna s operativním testovacím plánem. Příprava zahrnuje přípravu infrastruktury, včetně požadovaných integrací s jinými systémy, nastavení prostředí (např. přístupová práva) a nasazení testovaného systému.
- Testovací data: Příprava testovacích dat je definována v příslušném podrobném plánu testů.
- Školení: Školení členů týmu v jejich rolích a v metodologii a nástrojích používaných pro testování.
- Provádění testů (Test Execution): Provádění testů se týká realizace testovacích scénářů a postupování dle procesu řízení defektů.
- Testování – provádění kroků v testovacích scénářích podle operativního testovacího plánu, vyhodnocování jejich výsledků vůči požadovaným výsledkům,
- Zaznamenávání defektů – spravované procesem řízení defektů, podporované nástrojem pro řízení defektů,
- Oprava defektů – oprava defektů odpovědným vývojovým týmem (testovaného systému) s odpovídající prioritou,
- Nasazení – nasazení oprav defektů a dalších změn testovaného systému, prováděné týmem pro nasazení (systém se obecně vyvíjí během svého testování),
- Retesty – opakované testování opravených defektů v souladu s procesem řízení defektů, podporované nástrojem pro řízení defektů.
- Reportování testů (Test Reporting): Reportování testů je zajištěno prostřednictvím zpráv o stavu testování – Test Report – a zpráv o nalezených defektech z testování – Defect Report.
Vstupy a výstupy testování
Testování vyžaduje některé externí vstupy, produkuje interně používané vstupy a výstupy a vytváří některé výstupy používané externě. Například Plán řízení projektu je externí vstup používaný testovacím týmem, testovací strategie je interním výstupem testovacího týmu a interním vstupem používaným testovacím týmem pro tvorbu high-level harmonogramu testů, a high-level zpráva o stavu testů je využívána externě sponzorem.
Úrovně testování
Testování na různých úrovních (např. „V-model“, je-li vhodné jej využít) podporuje identifikaci a opravu defektů co nejdříve (např. předchází nalezení defektů v oblasti integrace systémů až během akceptace uživateli). Na projektu mohou být realizovány unit testy, systémové testy, systémové integrační testy a uživatelské akceptační testy.
Typy testů
Každý typ testu se zaměřuje na jiný cíl; některé typy testů se zaměřují na funkční aspekty, jiné typy testů se zaměřují na nefunkční aspekty.
Testovací procesy
Pro náš přístup k řízení testů existují následující dva procesy:
- Proces řízení testů – popisuje principy interní a externí komunikace testovacího týmu, eskalační mechanismy a principy řešení žádostí o změny a charakteristiky nástroje pro řízení testů, který se používá pro sledování provádění testů.
- Proces řízení defektů – definuje proces pro řízení defektů nalezených při testování. Životní cyklus defektu je definován na úrovni jednotlivých aktivit, spolu s principy řízení a komunikace, eskalace a sledovaných metrik.
Organizace testů
Struktura organizace testování definuje role a odpovědnosti při testování. Vedoucí testování je test manažer, který obvykle reportuje přímo projektovému manažerovi. Test Managera často podporuje několik Test leaderů, z nichž každý je zodpovědný za určité aplikace a řídí svůj tým (sdílených) test analytiků a testerů.
Metriky a reportování
Obvykle existují povinné metriky a informace, které je třeba sledovat a reportovat z testování. Informace jsou konzumovány buď interně testovacím týmem, nebo externě řízením projektu nebo na vyšší úrovni, na příklad na úrovni sponzora.
Testovací data
Obecně se pro testování používají anonymizovaná produkční data. Testovací data jsou řízena na základě procesu sběru požadavků z testovacích plánů, při respektování obecných požadavků na konzistenci dat a anonymizaci.
Testovací prostředí
Doporučujeme, aby testování bylo prováděno ve vyhrazeném testovacím prostředí, odděleném od produkčního prostředí, které co nejvíce odpovídá produkčnímu prostředí z hlediska konfigurace.
Testovací nástroje
Efektivní řízení testů by mělo být podporováno sadou nástrojů – nástrojem pro řízení testů, nástrojem pro řízení defektů, nástrojem pro reportování testů a úložištěm výsledků z testů.