čtvrtek 3. prosince 2009

Proč bychom měli testovat?

Tento příspěvek je určen nejen testerům, ale i managerům, které zajímá, co by jim testování softwaru mohlo přinést a možná nepřináší. Proto začnu definicí dvou pojmů, které dále často používám:

Zajišťování kvality (Quality Assurance) – plánované a systematické procesy jejichž cílem je zajištění vhodnosti produktu k jeho zamýšlenému účelu.

Testování - proces sběru a třídění informací získaných skrze zkoumání produktu, součást obecněji pojatého zajištění kvality.

Pokud máme pocit, že testování a zajišťování kvality není věnován dostatek pozornosti a společnosti tuto stránku vývoje softwaru podceňují, možná za to do jisté míry může i to, že se nám nedaří přesvědčit ostatní o důležitosti testování a jeho odborného řízení.

Jaké jsou tedy přínosy testování softwaru a zajišťování kvality? Které body bychom měli zmínit při prezentaci přínosů?

Proces zajišťování kvality ovlivňuje tři manažersky významné oblasti:
- Marketing
- Risk management
- Snižování nákladů

Marketing


To, že kvalitní produkt dodaný zákazníkovi má pozitivní vliv na pověst firmy, zatímco vysoce chybový nespolehlivý software pověst ničí, je jednoduchý logický závěr. Těžší je už odhadnout nebo si jen uvědomit míru tohoto vlivu. Vliv nekvalitního produktu na pověst firmy totiž přichází ve vlnách. Některé z nich jsou okamžité a rychle mizí, některé negativně ovlivňují firmu i po několik let.

První vlnou odezvy je reakce bezprostředního zákazníka, který na základě spokojenosti rozhoduje o následné spolupráci.

Druhou vlnou je reakce konečných zákazníků. Ti v případě nepříznivého přijetí produktu mohou způsobit řadu nepříjemností. Jejich neustálé stížnosti a reportování chyb může způsobit neočekávané prodražení projektu, takže z původně ziskového projektu se stane projekt prodělečný. Dále jejich nepříznivé přijetí produktu může změnit názor managementu zákazníka na dodavatele, nebo se dostat mezi širokou veřejnost prostřednictvím novinového a televizního zpravodajství.

Třetí vlnou je reakce současných zaměstnanců a dalších lidí z oboru výroby IT. Kvůli neustálé fluktuaci zaměstnanců se pověst softwarové firmy šíří dále a po mnoho let přetrvává. Schopní zaměstnanci firmu, která nedokáže dodat kvalitní software, opouštějí, protože nechtějí být spojováni s dalším neúspěchem nebo protože je jednoduše nemotivuje se zlepšovat. Tam, kde chybí objektivní měřítka kvality, tam je vždy nedostatek snahy o zlepšení. Ze stejných důvodů se firmě vyhýbají potencionální schopní zaměstnanci. Slyšeli o ní negativní věci ze strany bývalých či současných zaměstnanců.

Čtvrtou vlnou, která ovlivňuje softwarovou firmu s největším zpožděním, je neochota dalších zákazníků nebo jiných softwarových firem s ní spolupracovat. Před zaměstnanci firmy nelze zatajit nedostatek snahy o zajištění kvality a špatné nastavení procesů. Pokud tito zaměstnanci jsou přesvědčeni o tom, že by si sami svojí firmě nikdy nedali zakázku na vývoj softwaru, pak této firmě nebudou ochotni dát zakázku ani za několik let, kdy budou takováto rozhodnutí dělat z pozice manažerů a ředitelů. Stejně se zachovají i všichni, kteří se o špatně nastavených procesech dověděli od svých nových kolegů či kamarádů.

V těchto čtyřech vlnách působí každý projekt dle své kvality a dopadů v pozitivním či negativním směru na marketing.

Risk management


Testování je nástrojem k získání objektivních informací o stavu vyvíjeného softwaru. Tyto informace jsou pak nejdůležitějším vstupem pro řízení rizik spojených s vývojem softwaru. Testování se prolíná celým procesem vývoje. Už od samého počátku tedy kontroluje soulad vývoje s představami zákazníka, srozumitelnost, jednoznačnost a logiku výstupů. Včasným informováním o nedostatcích a chybách zabraňuje nedorozuměním a zbytečnému plýtvání zdrojů na špatné verze. Řízení kvality pak navíc definuje a hlídá postupy vývoje z hlediska zajištění jednoduchosti, srozumitelnosti, správnosti, přesnosti, rychlosti a dalších kvalitativních měřítek. Díky tomu dochází jak k výraznému snížení pravděpodobnosti vzniku problémů s kvalitou během i po vývoji, tak k omezení dopadů při vzniku problémů.

Testování výrazně předchází problémům s zákeřnými chybami. U softwaru z finančního, lékařského nebo jinak kritického sektoru, mohou ztráty způsobené dopadem jedné jediné zákeřné chyby několikanásobně převyšovat celý rozpočet na vývoj tohoto softwaru.

Bez testování zůstávají firmě jen dvě nepříjemné možnosti, jak s omezit riziko spojené s vývojem softwaru:
- zajistit si subdodavatele, který riziko do jisté míry převezme za ně
- pokud to jde, pojistit se proti některým typům problémů

Snižování nákladů


Přestože jednou z nejčastějších manažerských chyb je při snižování nákladů obětování kvality, právě efektivně nastavené zajišťování kvality přináší největší úspory. Z ekonomického hlediska by testování mělo trvat tak dlouho, dokud předpokládaná průměrná cena nalezení a opravy chyby objevené v příštím cyklu testů je menší než průměrné náklady na chybu objevenou zákazníkem vynásobené pravděpodobností objevu chyby. Zjednodušeně, testovat by se mělo tak dlouho, dokud je to finančně výhodnější než netestovat. Zajišťování kvality se navíc snaží nastavit procesy tak, aby docházelo k co nejmenšímu počtu chyb a ty byly co nejlevněji odstranitelné. Zajištění kvality je investice a je tedy vhodné sledovat její návratnost.

Problém je v tom, že je velmi obtížné zvládat řízení kvality tak, aby bylo maximálně efektivní a aby minimalizovalo náklady. Takový úkol vyžaduje zkušenosti, cit a výborné znalosti zkušeného odborníka. Proto, když už testujeme, je třeba to dělat dobře.

Jak začít?


Nastavit efektivně proces testování není jednorázová věc, ale vzniká neustálým dolaďováním na základě různých rozumně zvolených měřítek, které varují, pokud není vše v pořádku a na kterých lze sledovat zhoršení či zlepšení efektivity.

Pochopení klíčové role řízení kvality při vývoji softwaru, stanovení měřítek, procesu řízení kvality a vyhledání vynikajících odborníků s praxí přímo v testování dává dohromady dobrý základ pro každé oddělení řízení kvality softwaru.

1 komentář:

  1. Je to osviežujúce vidieť záujem o testovanie ktorý máte :-)

    Pár poznámok:

    1) V článku spomínate slovo „kvalita“. Čo si mám pod pojmom kvalita predstaviť?

    2) Aj keď je to v článku naznačené chýba v ňom jasnejšie odlíšenie „testovania“ od „riadenia kvality“. Tieto dva pojmy sa bohužiaľ v praxi dosť často (a veľmi nešťastne) zamieňajú.

    3) V časti o marketingu nespomínate podstatnú vec a to „Time to market“. Produkt dodaný skôr ako stihne zareagovať konkurencia (aj keď s väčším množstvom chýb) môže osloviť oveľa väčšiu skupinu zákazníkov ako „bezchybný“ produkt dodaný v čase keď je už trh nasýtený.

    4) Testovanie ako nástroj znižovania nákladov na podporu je síce možno použiť ale analýza finančnej analýzy na základe „průměrné náklady na chybu objevenou zákazníkem vynásobené pravděpodobností objevu chyby” je pomerne naivná. Táto informácia totiž v dobe kedy sa rozhoduje o zastavení či pokračovaní testovania nedostupná.

    Karol Magda

    OdpovědětVymazat

Oblíbené příspěvky