Znáte životní cyklus Agile Testing Life Cycle (ATLC)? Je to proces, který používají týmy vývoje softwaru, aby zajistily, že jejich aplikace budou řádně a efektivně testovány.
Tento příspěvek vás provede vším, co potřebujete vědět o ATLC, včetně jeho výhod, kroků zapojených do procesu, plánování praktické testovací strategie, provádění testů na základě shromažďování požadavků a sledování chyb, testů přijetí uživatelů (UAT) a průběžných testů. integrace a automatizace testů.
Po přečtení této příručky lépe pochopíte, jak používat agilní testování jako součást životního cyklu vývoje softwaru!
Pokud jste agilní vývojář, tester nebo produktový manažer, který hledá lepší způsob, jak dodávat své produkty, pak tento článek vysvětlí jednotlivé fáze spolu s nezbytnými kroky, které je třeba podniknout.
Table of Contents
Přehled životního cyklu agilního testování
Není žádným tajemstvím, že testování je ve světě agilního vývoje nesmírně důležité. Ale i přes to je to často podceňovaná aktivita v rámci agilního doručování. Důvodem jsou samozřejmě peníze v poměru k době dodání do výroby.
Bez podrobného testování by však neexistovala žádná záruka kvality ani spolehlivosti žádného produktu, který váš tým vyvíjí. Proto je klíčové porozumět životnímu cyklu agilního testování – od identifikace pracovních položek až po pochopení toho, jaký typ testu by měl být v každé fázi použit.
Agilní testovací cyklus vyžaduje, aby byli vývojáři a testeři zapojeni do každého jednotlivého sprintu. Pokud to uděláte dobře, umožňuje automatizaci testování v každé fázi, což pomáhá odhalovat chyby dříve a častěji a zkracuje čas na odstraňování problémů později.
Agilní testování také pomáhá při včasné validaci požadavků a jako vedlejší efekt zlepšuje spokojenost zákazníků dodáním kvalitního produktu.
Co je agilní testování a jeho výhody
Agile Testing je inovativní metodika testování softwaru, která využívá automatizaci k vytvoření iterativního testovacího procesu. Tento přístup zaměřený na automatizaci pomáhá týmům rychle analyzovat jakékoli nesrovnalosti nebo problémy v kódu a poté testovat úpravy na základě této zpětné vazby.
Hlavní výhody tohoto procesu se tedy zdají být zřejmé:
- zajistit, aby testování mělo potřebný dopad,
- vede to k efektivnější době vývoje,
- vyvinutý systém má celkově rychlejší rychlost řešení chyb,
- a spokojenost zákazníků se zlepšuje.
Kvalita a rychlost jsou zde rozhodující faktory, protože sprint je definován jako krátké časové období (typicky 2 až 4 týdny). Čím více se tým může spolehnout na kvalitu zahrnutou ve sprintovém testování, tím vyšší sebevědomí a rychlejší vývojový pokrok může tým dosáhnout.
Zaměření na automatizaci by mělo být primárním cílem každého agilního týmu. To týmům umožňuje snížit riziko nákladného selhání a umožňuje více času věnovaného vytváření nového obsahu, než opravování toho, co je již ve výrobě.
Další vedlejší výhodou je lepší odhad nákladů na projekt a časové osy. Vzhledem k tomu, že produkt je mnohem vyspělejší a předvídatelnější, existuje méně situací, kdy se tým musí vypořádat s neočekávanými problémy vznesenými během sprintu, aniž by takové komplikace předem propočítal.
Kroky životního cyklu agilního testování
Životní cyklus agilního testování se skládá ze čtyř odlišných fází.
Jednotkové testy
Toto jsou testy, které provádějí vývojáři, jakmile je kód připraven z vývojového hlediska. Provádí se izolovaně ve vývojovém prostředí bez zapojení dalších částí systému.
Testy jednotek se provádějí za účelem testování kódu a lze je provádět ručně a automaticky.
Pokud je spuštěn ručně, vývojář spustí své testovací případy proti kódu. To se dá rychle zjistit, ale vyžaduje to více času ze sprintu věnovaného vývoji, zejména z dlouhodobého hlediska.
Alternativou k tomu je vytvoření automatizovaného testovacího kódu jednotky, který v podstatě ověří kód funkce pouhým jeho spuštěním. To znamená, že vývojář musí trávit čas nejen vývojem nové funkce, ale také vývojem kódu jednotky, který tuto funkci otestuje.
A i když to z krátkodobého hlediska může vypadat jako větší úsilí, šetří to čas pro projekt jako celek, protože takové jednotkové testy lze snadno znovu použít i v pozdějších fázích testování sprintu. Mohou být dokonce zahrnuty do běžných případů regresního testu, což pak ušetří ještě více času.
A konečně, čím vyšší je pokrytí kódu automatickými jednotkovými testy, tím lepší metriky spolehlivosti kódu lze klientovi předvést.
Funkční testy
Funkční testy jsou navrženy tak, aby určily, jak dobře funkce aplikace funguje. Tento typ testování se používá k zajištění správné funkčnosti kódu spíše než k technickým aspektům (které byly hlavně součástí testování jednotek), stejně jako k posouzení, zda splňuje potřeby a očekávání uživatelů.
Jinými slovy, funkční testy se používají k ověření, že to, co bylo vyvinuto, splňuje požadavky dané podnikovými uživateli.
Je dobrou praxí shromáždit důležité testovací případy předem a od příslušných zúčastněných stran (buď od vlastníka produktu nebo dokonce od koncových uživatelů) a vytvořit seznam všech takových testovacích případů potřebných pro obsah uvnitř sprintu.
Automatizace funkčních testů vyžaduje více úsilí na straně vývoje testů, protože se jedná o složité procesy, které je třeba ověřit, včetně různých částí systému dohromady. Nejlepší strategií je v tomto případě ustavit vyhrazený tým pouze pro vývoj funkčních testů v souladu s tím, jak hlavní vývojový tým vyvíjí nové funkce.
Jistě, pro projekt to znamená zvýšené náklady na údržbu samostatného týmu, ale má také velký potenciál dlouhodobě ušetřit peníze projektu. Je pouze na projektových manažerech, aby vysvětlili a konkrétně spočítali přínosy a úspory, aby před firemními uživateli předložili solidní argument, který povede k takovému zvýšení schvalování nákladů na projekt.
Na druhou stranu, pokud se tato činnost provádí ručně, může tuto činnost provádět velmi malý tým (v některých případech dokonce jeden člověk). Bude však vyžadována neustálá manuální a opakovaná činnost při každém sprintu. Postupem času, jak se sada funkcí systému rozšiřuje, může být obtížnější dohnat solidní funkční testovací sprint po sprintu.
Regresní testy
Účelem regresního testu je zajistit, aby vše, co dosud fungovalo, bude fungovat i po příštím vydání. Je třeba provést regresní testy, aby se zajistilo, že mezi různými moduly nebudou problémy s kompatibilitou.
Testovací případy pro regresní testy jsou nejlepší, pokud jsou pravidelně udržovány a znovu navštěvovány před každým vydáním. Na základě konkrétních specifik projektu je nejlepší, aby byly jednoduché, ale zároveň pokrývaly většinu samotných základních funkcí a důležitých end-to-end toků procházejících celým systémem.
Obvykle má každý systém takové procesy, které se dotýkají mnoha různých oblastí, a ty jsou nejlepšími kandidáty na případy regresního testu.
Pokud existují automatizované jednotkové testy a funkční testy, je vytvoření automatizace do regresního testování velmi snadným úkolem. Jednoduše znovu použijte to, co již máte, pro nejdůležitější část systému (např. pro procesy nejčastěji používané ve výrobě).
Uživatelské akceptační testy (UAT)
V neposlední řadě UAT ověřuje, zda aplikace splňuje potřebné požadavky pro produkční nasazení. Tento přístup funguje nejlépe při častém testování softwaru v krátkých a intenzivních cyklech.
Test UAT by měl být prováděn výhradně lidmi mimo agilní tým, ideálně obchodními uživateli ve vyhrazeném prostředí, které je co nejblíže budoucí produkci. Alternativně zde může vlastník produktu nahradit koncové uživatele.
V každém případě by se mělo jednat o čistý, funkční test z pohledu koncového uživatele, bez jakéhokoli spojení s vývojovým týmem. Výsledky těchto testů jsou zde proto, aby učinily nejdůležitější rozhodnutí o tom, zda jít / nespustit pro produkční vydání.
Plánování efektivní testovací strategie
Plánování je důležitou součástí agilního testování, protože propojuje celou strategii. Musí také stanovit jasná očekávání v časové ose v souvislosti se sprinty.
Efektivním řízením agilního plánování testování mohou týmy vytvořit jasný směr, který povede k efektivnímu využití zdrojů v rámci sprintu. Je zřejmé, že se očekává větší spolupráce mezi testery a vývojáři.
Měl by být také vytvořen komplexní plán, který by zmapoval, kdy v rámci každého vývojového sprintu dojde k testování jednotek, funkčnímu testování nebo testování přijetí uživatelem. Každý tedy přesně ví, kdy je jeho účast nutná pro úspěšné agilní spuštění.
Jak plán nastavit, může být po další diskusi a dohodě. Nejdůležitější však je udělat z toho proces a držet se ho. Vytvořte periodicitu, která bude spolehlivá a předvídatelná.
Neodcházejte od procesu. Jinak bude realitou pravý opak – chaos a nepředvídatelné uvolnění do výroby.
Provádění testů na základě shromažďování požadavků
Testy musí být provedeny podle požadavků každé fáze. Vstupenky se poté otevřou, když je nalezena chyba nebo problém, a přidělí se vývojovému týmu, který pak bude schopen zjistit, co je potřeba opravit nebo změnit pro kód. Jakmile budou všechny chyby opraveny, může agilní testování pokračovat, dokud neprojdou všechny testy.
Kontrola výsledků a sledování chyb
Efektivní kontrola výsledků a solidní proces sledování chyb jsou zásadní. Proces by měl zahrnovat všechny relevantní zainteresované strany, od projektových manažerů a testerů po vývojáře a případně podpůrné týmy, ale také zákazníky pro získávání zpětné vazby.
Mělo by se jednat o dostatečně komplexní činnost, aby bylo možné rychle identifikovat problémy a odstranit je dříve, než bude ohroženo již naplánované datum vydání.
Volba nástroje je opět na týmu. Jakmile je však jednou zvolena, jakákoli testovací aktivita musí zahrnovat spolehlivé procesy sledování chyb pro monitorování problémů, jejich upřednostňování podle závislostí, hlášení o aktualizacích stavu od vývojářů při řešení nebo přenosu pro další vyšetřování a poté, co jsou vyřešeny, zavřít vstupenky.
Kontrola pomáhá agilním testerům porozumět chování jejich systému a identifikovat chyby v každém kroku, nikoli později v procesu. Pravidelné kontroly také umožňují agilním týmům identifikovat trendy a oblasti, které potřebují zlepšení, což jim umožňuje průběžně aktualizovat jejich testovací rámec a rychleji vytvářet kvalitnější produkty.
Dokončení uvolnění produktu pomocí testu produkčního kouře
Chcete-li maximalizovat úspěšnost vydání, je jedním ze způsobů, jak získat více důvěry, spuštění testu kouře proti produkci (těsně po vydání).
Tento test se skládá ze sady aktivit pouze pro čtení uvnitř produkčního systému, které nebudou vytvářet žádná nová náhodná data, ale přesto ověří základní funkčnost systému z pohledu koncových uživatelů.
Zapojení správných zúčastněných stran do procesu pomáhá zajistit soulad a odpovědnost a zároveň posílit důvěru, že cíle byly splněny. Nakonec tyto testy zaručují úspěšné vydání.
Nepřetržitá integrace a automatizace testů pro zvýšení efektivity
Společnosti stále častěji přijímají nepřetržitou integraci a automatizaci testů, aby posunuly agilní procesy na další úroveň.
Pokud tým dokáže implementovat automatizaci do několika fází, jak je popsáno výše, pak je lze kombinovat a propojit do vyhrazeného testovacího potrubí, což je v podstatě plně automatizovaný dávkový proces, který většinu testovacích činností provádí nezávisle a bez zapojení jakéhokoli jiného týmu. člen.
Postupem času takový komplexní testovací kanál zkrátí celkový čas potřebný pro všechny testovací fáze. Nakonec to může vést k opravdu rychlému inkrementálnímu uvolnění produkce po skončení každého sprintu. Ačkoli se jedná o ideální případový scénář, ve skutečnosti je těžké toho dosáhnout se všemi testovacími kroky. Automatizace je jediný způsob, jak se tam dostat.
Rozdíl mezi agilním testováním a vodopádovým testováním
Agilní testovací strategie se liší od tradičních vodopádových testovacích strategií v několika ohledech, jako je periodicita, paralelismus nebo vyhrazený čas pro každou aktivitu.
Ale nejpozoruhodnějším rozdílem je zaměření každého přístupu:
- Agilní testování se zaměřuje na neustálé, rychlé opakování vývoje a zpětnovazební smyčky k identifikaci problémů a rychlému vylepšení produktu. Iterativní proces zaměřený na spolupráci se zákazníky, nepřetržitou integraci a adaptivní plánování.
- Na druhou stranu tradiční vodopádové testování klade důraz na lineární proces, ve kterém je každá fáze řešena samostatně a v sekvenčním pořadí, přičemž zpětnou vazbu celého řešení ponechává pouze na úplně poslední fázi projektu a velmi blízko konečnému datu uvedení do výroby.
Je zřejmé, že čím dříve hlavní zainteresované strany problémy identifikují, tím lepší je situace pro projekt. V tomto ohledu má rozhodně větší šanci na úspěch agilní metodika.
Závěr
Ačkoli se životní cyklus agilního testování může zdát kratší než u vodopádu, ve skutečnosti tomu tak není. Celý proces je nepřetržitý a pokračuje až do data vydání produktu. V závislosti na rozpočtu a čase, který je k dispozici pro každý sprint, budete muset upřednostnit, které testy se provádějí během daného sprintu.
Dobře naplánovaná testovací strategie vám pomůže vybrat, které funkce nebo moduly vyžadují více pozornosti než jiné. Automatizace umožní zahrnutí několika testovacích fází do stejného sprintu, čímž se zvýší celková spolehlivost systému od sprintu ke sprintu.
Nyní se můžete podívat na některé osvědčené postupy ve scrum testování.