Nedávno jsem potkal na webu Zdroják (český web pro vývojáře webů) článek o testování. Konkrétní obsah článku nebudu příliš přibližovat, ale narazil na klíčovou otázku týkající se testování. Testování pochopitelně schvalují všichni (jak jinak by vývojář věděl, jestli vůbec vyrábí, co chce vyrobit), ale v praxi existuje vícero názorů ohledně toho jak testovat (metodika) a jak moc testovat (kolik tomu dát času, nebo chcete-li, kolik za to zaplatit peněz).
Zatímco mezi programátory diskuze probíhá vcelku živě, na jiných úrovních ve firmách až takovým tématem není. Nepříjemným důsledkem je, že dobře známé, prozkoumané a používané postupy často tedy výborně pomáhají programátorům, ale už ne tak třeba projektovým manažerům nebo obchodníkům. Například je zde velký důraz na automatizaci a cílem je testování naprogramovat. Naneštěstí to eliminuje z diskuze ty způsoby testování, které naprogramovat nelze.
Jak testovat?
Je dobré si uvědomit, že testování nezačalo se softwarem. Například lékařství je dobrým příkladem, kde testy zná každý, jsou pro obor kriticky důležité, ale spíše se testy cílí a šetří. Když stejně jako dalších X milionů lidí v ČR letos chytíte nachlazení, tak Vás nepošlou na testy všech nemocí, které mají podobné příznaky, ale domů, ať pijete teplý čaj. A i když jsou testy na kdeco, tak test na *(doplňte si vlastní nemoc počátečními symptomy podobnými nachlazení)* se plošně neprovádí, protože je nákladný a má nějaké procento případů, kdy nepravdivě ukáže přítomnost nemoci u zdravého člověka. Z tohoto důvodu se test používá tehdy, pokud je známo důvodné podezření, že by někdo danou nemoc měl.
Podobně je dle mého názoru dobré testovat v softwaru zejména ty věci, u kterých je známo důvodné podezření, že v nich může být chyba. V praxi se vyloženě v tomto směru nabízí tzv. regresní testy, jejichž cílem je zkontrolovat, zda se dřívější problém nevrátil. Analogicky v medicíně, pacient, co se uzdraví z rakoviny, je častěji testován na její další výskyt než průměrný člověk.
Akceptační testy
Čím se dostávám k hlavnímu tématu a totiž otázce, kde se vlastně ty problémy vyskytují. Praxe mi ukázala, že pro naši cílovou skupinu klientů tou nejvíce podceněnou skupinou testů jsou akceptační testy, tedy skupina kritérií, které popisují, jaký výsledný produkt bude zákazník akceptovat. Lidsky pak můžeme říct, že je to popis jak poznáme, že je výsledný produkt užitečný. Tyto testy jsou pak vlastně větší kus zadání projektu. Je-li některá úroveň testování ta kritická, tak je tato úroveň, protože chyby, které jsou tímto způsobem odchyceny, bývají ty nejdražší. Potřebuji-li totiž vykopat kilometr dlouhou díru a přitom závazně objednám cenově velmi výhodné SUV za 300 000 Kč, tak jsem vyhodil 300 000 Kč.
Co by tedy takový dobrý akceptační test měl splňovat? Je zřejmé, že v tomto příkladu “má čtyři kola” a “má červenou barvu” jsou nedostatečná kritéria pro hledaný nástroj. Mnohem smysluplnější by bylo zkontrolovat, že “umí vykopat kilometr dlouhou díru” a to nejlépe “za méně než měsíc”. V takto podaném příkladu je samozřejmě triviální odhalit hledaná kritéria, ale v praxi více o svém byznyse mnohem více informací a jen minimum z nich je skutečně důležitých.
Požadavky “má čtyři kola” a “má červenou barvu” mohou být také smysluplné. Musíte se ale zeptat – skutečně byste neakceptovali, když by někdo nabídl nástroj, který umí vykopat kilometr dlouhou díru, ale neměl červenou barvu? Tedy vlastností dobrého akceptačního testu je, že je relevantní a nezabývá se podružnostmi, na kterých Vám vlastně nezáleží. Nejen, že to bude dražší, ale navíc to ještě bude to akceptační testování déle trvat.
Prohlédněte si následující obrázek auta. Řekli byste, že “má červenou barvu”? Jistě se najdou takoví, co řeknou ano, a takoví, co řeknou ne. Je zjevné, že další vlastnost je dostatečná konkrétnost. Pokud Vám auto na obrázku vyhovuje, není co řešit, ale pokud ne, tak si musíte hlavně uvědomit, co to pro Vás znamená “má červenou barvu”. Stačí třeba, že “většina povrchu při pohledu zvenku má červenou barvu”? To už je na Vás.
Na tyto dvě vlastnosti pak navazuje důležité poznání, že pokud nemáte rádi překvapení a zároveň nechcete celý proces výroby dozorovat osobně, tak test musí být proveditelný nezávisle na Vás. A protože máte určitě lepší věci na práci než vysedávat celý den, každý den mezi programátory, tak pro dobrý akceptační test toto není volitelná možnost, ale nutnost. Tím spíše, že každá změna je práce a dodatečné změny jsou placené vícepráce.
Když už budete mít takový akceptační test hotový, zkuste konzultaci s profesionálním analytikem. Měl by Vám pomoct odhalit, kde se na výsledném softwaru bude nacházet nejvíce nákladů. Ideálně Vám pomůže projekt zjednodušit a snížit náklady.
A pokud se Vám ten nápad líbí, tak si k nám pro takovou konzultaci skočte. Třeba Vám pomůžeme ušetřit tak, že zbude i na to SUV.
Přídavek: Po přečtení samotného článku by Vám mělo být nyní zřejmé, co mě zajímalo na zakázce na dálniční známky. Nebylo mi zřejmé, jak chtějí dobrovolníci za víkend naprogramovat projekt, který byl zadán neveřejně a tedy k němu pochopitelně není k dispozici zadání. Co jsme věděli, je schéma, v němž je vidět, že e-shopová část je jen malé a nepříliš náročné kolečko v podstatně složitějším soukolí.
Reakce internetových médií na výsledek víkendového programovány byly dosti různorodé. Od mírně děsivého slibu, že bude výtvor skutečně použit v Zdarma a za 48 hodin. Programátoři to dokázali, eshop na dálniční známky je hotov, stát jej použije přes poněkud realističtější pohled Za víkend stvořený e-shop na dálniční známky měl vážné chyby, který reflektuje, že za víkend se dá těžko zvládnout a zkoordinovat bezchybná individuální implementace až po neutrální Dobrovolníci za víkend naprogramovali e-shop pro elektronické dálniční známky.
A právě ten poslední článek je zajímavý tím, že obsahuje sekci “Technické specifikace e-shopu podle organizátorů hackathonu“. Zdá se tedy, že zadání existovalo, jenže není zřejmé kde. Hned z kraje se například dozvíme, že byly z neuvedeného důvodu vytvořeny e-shopy vlastně dva. Výrazně zajímavější jsou ovšem komentáře pod článkem, kde se můžete dozvědět spíše skeptické až kritické názory, ze kterých bych hlavně vyzvedl to, že jaksi bylo pozapomenuto mezi požadavky v zadání ochránit skutečné osobní údaje skutečných lidí, kteří víkendový e-shop následně vyzkouší.
Analytik, vývojář
Analytik, důsledný, neuteče mu sebemenší detail. Jakub ctí řád, všechno má svá pravidla. Pokud něco nevíte, zeptejte se Jakuba.