Přejít k hlavnímu obsahu
Jak na efektivní testování
Jak by se vám líbila představa snížení nákladů na testování o polovinu, zatímco urychlíte uvedení produktu na trh a zlepšíte jeho kvalitu? Představte si, že byste mohli svému týmu poskytnout prostředky k úspornému a efektivnímu testování, což by vedlo nejen k úspoře času a financí, ale také lepší reputaci vašeho produktu a zvýšení důvěry zákazníků. Také se zvýší motivovanost vašich pracovníků a vytvoří silnější odpovědnost za výslednou kvalitu napříč týmy. Pokud vás zajímá, jak toho dosáhnout, pokračujte ve čtení a připravte se na revoluci ve vašem přístupu k testování softwaru!
Testing

Pozice současného testingu

Software hraje důležitou roli v našem každodenním životě, proto je nezbytné, aby byl spolehlivý a bezchybný. Chyby mohou mít vážné důsledky. Testování je nedílnou součástí softwarového životního cyklu (SDLC) a je klíčové pro zajištění kvality a bezpečnosti softwaru. Je integrované do celého procesu vývoje, od počátečního návrhu až po finální realizaci.

Moderní přístupy, jako jsou agilní a DevOps metody, podporují spolupráci mezi týmy a automatizaci, což umožňuje rychlejší a efektivnější vývoj softwaru. Důraz je kladen na detekci chyb v různých fázích vývoje a v různých prostředích. Moderní testování vyžaduje technické znalosti včetně programování. Neustále se vyvíjí, aby vyhovovalo dynamice a rychlému pokroku v softwarovém průmyslu.

Problémy implementace testingu do životního cyklu softwaru

Mnoho týmů bohužel nedokázalo plně zareagovat na změny ve vývoji testingu. Výsledkem je v lepším případě nízká efektivita testů, v tom horším vyšší chybovost produktu na produkci. Každý tým má dnes alokovaného testera, který připravuje automatizované regresní testy, hlásí chyby, píše scénáře a vyplňuje reporty. Výsledky testů jsou PASSED, chyby retestovány a grafy zelené. Jak je ale možné, že i přesto nacházíme množství chyb až na produkci? Podíváme se detailněji na nejčastější chyby v implementaci testingu do SDLC.

Pokud se zaměříme primárně na vývoj a dodání produktu, může dojít ke zkracování času a prostředků vyhrazených pro testování, což může snížit kvalitu softwaru a zvýšit riziko chyb. Je proto velmi důležité dát testování vysokou prioritu v rámci SDLC.

Automatizace

Automatizované testování je výhodnější než manuální. Manuální testování je pomalejší, náročnější, náchylné k lidským chybám a obtížně opakovatelné. Nedostatek automatizace zvyšuje také náklady a snižuje efektivitu testování. Opačným extrémem může být automatizace celé aplikace – zejména front-endu.

Testovací strategie a prostředí

Testovací strategie musí být dobře srozumitelná a sdílená všemi členy týmu. Chybějící nebo nedostatečně definovaná strategie může představovat problém. Pokud nemáme jasně definované cíle, pokrytí, plán a metodiky testování a nezaměříme testování na kritické části, bude proces nekoordinovaný a neúčinný.

Komplikace mohou nastat, pokud testujeme v nekonzistentním prostředí. Testování ve více prostředích je důležité, ale pokud testovací prostředí není správně nastaveno nebo je nekonzistentní s produkčním prostředím, může to vést k nepřesným výsledkům a neodhalení problémů. Je důležité zajistit, aby testovací prostředí bylo správně konfigurováno a co nejvíce připomínalo podmínky, ve kterých bude software provozován.

Bez dokumentace to nejde

Také nedostatečná dokumentace testování může být problematická. Jestliže nezaznamenáme, které testy byly provedeny, jaké byly jejich výsledky a jaké nedostatky byly nalezeny a opraveny, může to způsobit chyby při pozdějším sledování, opravách a udržování softwaru.

Role testerů je klíčová

Z každého proběhlého testování je důležité získat správný feedback a poučení. Jen díky tomu je možné zlepšovat testovací proces a kvalitu softwaru. Při nedostatečném sběru dat a analýze feedbacku se mohou opakovat stejné chyby a zanedbávat možnosti zlepšení. Je důležité aktivně naslouchat zpětné vazbě testerů a uživatelů a na základě získaných poznatků přizpůsobovat testovací strategii.

Velmi důležitá je také role testerů, která v posledních letech prošla velkým vývojem.  Dnešní tester musí získat mnoho dovedností od developerů, aby byl dostatečně kompetentní a dokázal efektivně spravovat proces testů.

Jak tedy na efektivní testing?

Testování softwaru je zásadní aktivitou, která má za cíl minimalizovat riziko vzniku chyb v produkčním softwaru. Náklady na testování jsou investicí do kvality a spolehlivosti produktu. Nedostatečné testování může způsobit značná rizika v podobě chyb v produkci, které mohou být ve výsledku mnohem dražší a škodlivější než samotné náklady na testování.

Je proto důležité nalézt správnou rovnováhu mezi náklady a riziky spojenými s nedostatečným testováním. Nalezení této ideální hranice je složitý úkol, který závisí na mnoha faktorech, včetně typu projektu, jeho složitosti, finančních prostředků, časového plánu a očekávání zákazníka.

Pokud se rozhodneme zvýšit efektivitu testů, musíme nejprve identifikovat „úzké hrdlo“ nebo místa, kde dochází k největšímu plýtvání úsilí testerů.

Na co se zaměřit při cestě k efektivnímu testování?

Nejprve musíme definovat testovací strategii (testing approach). Testy zaměříme zejména na oblasti s vysokým výskytem chyb. Obecně lze říci, že 80 procent chyb se nachází ve 20 procentech kódu. Vyplatí se nám tedy zacílit právě na tyto oblasti i na úkor ostatních. Je také důležité začít testovat včas, protože čím dříve chybu odhalíme, tím menší prostředky musíme vynaložit na opravu. Proto se vyplatí testovat již v době přípravy analýzy.

Testy probíhají systémem pyramidy – nejvyšší pokrytí testy musí být už v unite testech, které jsou v porovnání s ostatními levné a rychlé. Dále provádíme testy API (automatizace) a nakonec, jako doplněk ostatních, tvoříme testy front-endu, které jsou oproti předešlým dražší a jejich exekuce trvá nejdéle.

Při testování se neustále učíme z vlastních chyb, zejména těch, které „probublaly“ až na produkční prostředí. U každé takové chyby bychom měli udělat detailní root cause analýzu a následně přijmout opatření nebo upravit procesy tak, aby se příště tato chyba a jí podobné odhalily již dříve v testech.

V ideálním případě při testingu vycházíme ze zadání pro vývoj (např. user story), abychom nemuseli připravovat další dokumentaci. Výstupem z testování je pak jen report o stavu exekuce a seznam nalezených chyb.

Většinu testovacích aktivit lze realizovat s volně dostupnými nástroji. Opravdu je nutné platit drahé licence na nástroje, které ani nepotřebujeme? Není lepší se jich zbavit a místo toho raději zajistit kvalitní testery? Protože se testing stále vyvíjí, je potřeba testery neustále školit v nových trendech a tím zvyšovat jejich kvalitu. To je lepší investice do budoucna než platit nepotřebné licence.

V průběhu procesu neustále sbíráme zpětnou vazbu testerů, developerů a dalších členů týmu. Právě v týmu vznikají nejlepší myšlenky a je vhodné s nimi kontinuálně pracovat. Nesmíme zapomenout také na podrobnou revizi všech činností testingu. Opravdu musíme dělat všechny aktivity? Nedublují se některé testovací procesy? Máme aktualizovanou knihovnu testů? Zaměřujeme testy především na kritické oblasti?

Jak nejlépe začít?

Abychom mohli efektivně testovat, musíme nejprve analyzovat současný stav. Provedeme audit všech činností, zjistíme, kolik vás testing reálně stojí, revidujeme scope a pokrytí manuálních a automatizovaných testů.

Následně navrhneme a implementujeme kroky pro povýšení vašeho testingu. Doporučíme vhodné nástroje ve vztahu k vašim potřebám, poradíme, jak efektivně zapojit testing do SDLC, navrhneme vhodnou testovací strategii a cíle přesně pro váš projekt. Zaškolíme testery v konkrétních oblastech tak, aby byl váš testing co nejefektivnější.

Pokud si na celý proces netroufáte sami, je vhodné najít zkušeného partnera, který se softwaru a jeho testování dlouhodobě věnuje.

Autor: Tomáš Hlava

Tomáš Hlava

Tomáš Hlava má za sebou rozsáhlou kariéru v oblasti testování softwaru ve společnosti Unicorn, kde pracuje od roku 2012. Zastává role jako Test Lead, Test Manager a Test Architekt. Během svého působení v Unicornu se podílel na různých projektech, včetně implementace CRM do KB, a práci na projektech pro Českou spořitelnu a Equa bank. Dále se věnuje vedení týmů testerů, koordinaci testů a podpoře UAT. Je předsedou expertního týmu pro metodiku a vzdělávací programy v oblasti testování softwaru a školí pro Top Gun Academy a Unicorn College.

Datum vytvoření: 25/01/2024

linkedin

Komentáře komentáře
Státní dluh překonal hranici 3,2 bilionů korun V poměru k HDP situace vypadá mnohem příznivěji, protože se dluh pohybuje jen ok... Petr Dufek, hlavní ekonom Banky Creditas
Profile picture for user Petr Dufek
Geopolitika opět v centru pozornosti Trhy jinými slovy věří, že další eskalace do podoby širšího regionálního konflik... Dominik Rusinko, analytik ČSOB
Profile picture for user Dominik Rusinko
Inflace v březnu zůstává na cíli, v létě uvidíme další pokles Příběhy uvnitř spotřebitelského koše jsou však nadále velmi rozdílné.  Za poměrn... Jan Bureš, hlavní ekonom Patria Finance
Profile picture for user Jan bureš