Zefektívni testovanie softvéru pomocou agilných metód

Hoci je agilná metodika v súčasnosti pomerne bežná, mnohé organizácie – najmä tie v regulovaných odvetviach, ktoré vyžadujú formálnejšiu dokumentáciu a sledovateľnosť – stále používajú Waterfall model tradičného prístupu alebo hybridné vývojové frameworky. A niektoré tímy sú v procese prechodu na Agile.

Bez ohľadu na to, kde sa na svojej ceste k agilnému testovaniu nachádzaš, tento článok ti pomôže lepšie pochopiť základy agilného testovania a ako ľahko prejsť na agilnú metodiku testovania. A ukážeme ti najlepší spôsob, ako vytvoriť a implementovať stratégiu agilného testovania.

Čo je agilná metodika?

Agilná metodika znamená postup, ktorý podporuje nepretržitý kontinuálny vývoj a testovanie počas celého životného cyklu vývoja softvéru. V agilnom modeli pri testovaní softvéru sú činnosti vývoja aj testovania súbežné, na rozdiel od vodopádového modelu.

V minulom článku sme detailnejšie písali o agilnom prístupe pri vývoji softvéru. Agilný vývoj využíva inkrementálny prístup k vývoju. Podobne aj agilné testovanie zahŕňa inkrementálny prístup k testovaniu. Pri tomto type testovania softvéru sa funkcie testujú priebežne. Agilné metódy testovania softvéru ponúkajú niekoľko príležitostí na zefektívnenie procesu testovania.

Čo je agilná metodika testovania?

Tak ako agilná metodika vývoja rozdeľuje väčšie prvky vývoja funkcií na menšie, lepšie zvládnuteľné časti (ako sú user stories, tasky a technické požiadavky), agilná metodika testovania rozdeľuje väčšie prvky testovania na menšie, špecifickejšie testy s užším zameraním na konkrétnu user story, task, technickú požiadavku atď.

Rozdelením testovania do týchto „malých“ blokov umožňuje agilné testovanie uskutočniť testovanie včasnejším a efektívnejším spôsobom.

Aké sú hlavné zásady agilného testovania?

Hlavné zásady agilného testovania sú:

  • Včasné a priebežné testovanie: Testeri by mali začať testovať softvér už na začiatku procesu vývoja. Softvér by mali testovať aj priebežne počas celého vývojového cyklu.
  • Prístup celého tímu: Pri agilnom vývoji sú za zabezpečenie kvality produktu zodpovední všetci členovia tímu. Patria sem vývojári, testeri, obchodní analytici a product owneri.
  • Časté dodávky: Agilné tímy dodávajú funkčný softvér často, zvyčajne každé dva týždne.
  • Úzka spolupráca: V agilnom projekte prebieha úzka spolupráca medzi všetkými členmi tímu. To pomáha zabezpečiť, aby boli všetci na rovnakej vlne a aby nedošlo k žiadnym prekvapeniam.
  • Zapojenie zákazníka: Zákazníci sa zapájajú do celého procesu agilného vývoja. V každej iterácii poskytujú spätnú väzbu, ktorá pomáha tímu neustále sa zlepšovať.
  • Fungujúci softvér: Agilné tímy sa počas každej iterácie zameriavajú na riadenie kvality softvéru. To je dôležitejšie ako dokumentácia alebo iné výstupy.
  • Flexibilný prístup: Agilný vývoj je flexibilný prístup. Tímy môžu kedykoľvek počas procesu vývoja zmeniť požiadavky.

Hlavné zásady agilného testovania

Aké sú hlavné činnosti testovania v agilnom vývoji?

  • Analýza požiadaviek: Testeri spolupracujú s obchodnými analytikmi a product ownermi, aby pochopili požiadavky na novú funkciu.
  • Návrh testov: Testeri navrhujú testovacie prípady pre novú funkciu.
  • Vykonávanie testov: Testeri vykonávajú testovacie prípady a nahlasujú prípadné chyby.
  • Správa chýb: Testeri spolupracujú s vývojármi na odstraňovaní chýb.
  • Správa vydania: Testeri pomáhajú plánovať a realizovať release novej funkcie.

Agilné testovanie podporuje priebežné testovanie

Agilná metodika testovania podporuje DevOps a kontinuálne testovanie. A kontinuálne testovanie je dôležité pre zlepšenie kvality produktov.

  • Pri agilnom vývoji musí testovanie prebiehať včas a často. Namiesto čakania na dokončenie vývoja pred začatím testovania sa teda testuje priebežne, ako sa pridávajú funkcie. Toto sa označuje aj ako testovanie „posunutím doľava“.
  • Testy sú priorizované rovnako ako user stories. Cieľom testerov je prejsť čo najviac testov v jednej iterácii. Pridanie nástrojov na automatizované testovanie môže testerom automatizovaného testovania pomôcť prejsť väčší počet testovacích úloh.

Ako agilné testovanie a kontinuálne testovanie pomáha zlepšiť kvalitu produktu? Po prvé, vďaka testovaniu na začiatku vývojového procesu sa môžu problémy a chyby odhaliť skôr. Neskončíš tak s nákladnými prekvapeniami na poslednú chvíľu, ktoré môžu oddialiť čas uvedenia na trh. A chyby sa ľahšie odstraňujú, keď sú ešte čerstvé v mysliach vývojárov.

Kontinuálne testovanie môže tiež zlepšiť pokrytie testov a lepšie pokrytie testov vedie k vyššej kvalite a bezpečnosti produktu.

Čo robí agilný tester?

Testovanie a zabezpečenie kvality je v agilnom prostredí zodpovednosťou každého z nás. Preto testeri a vývojári pracujúci v agilnom prostredí musia úzko spolupracovať. Komunikácia a spolupráca sú kľúčové.

Agilný vývoj je často riadený testami. Vývojári používajú agilné metódy testovania, ako je vývoj riadený testami (TDD), aby najprv napísali test. Potom napíšu kód, ktorý sa bude testom overovať. A vývojári a agilní testeri by mali spolupracovať ešte pred stanovením user stories, napríklad požiadaviek.

Po začatí vývoja a testovania je naďalej dôležitá úzka komunikácia a spolupráca. Agilní testeri by mali testovať v čase, keď vývojári píšu kód. Navyše, vývojári budú pravdepodobne vykonávať nejaké testovanie. A agilní testeri budú pravdepodobne vykonávať aj nejaké programovanie.

Aké sú najdôležitejšie zručnosti agilných testerov?

  • Testeri musia byť schopní efektívne komunikovať so všetkými členmi tímu. Musia tiež vedieť pochopiť potreby a požiadavky zákazníka.
  • Testeri musia mať silné technické zručnosti. Mali by byť schopní porozumieť kódu.
  • Testeri musia byť schopní rýchlo identifikovať a riešiť problémy. Mali by byť tiež schopní kreatívne myslieť a v prípade potreby navrhovať nové riešenia.
  • Testeri musia byť schopní dobre pracovať v tímovom prostredí. Mali by byť flexibilní a prispôsobiví a mali by vedieť dobre pracovať pod tlakom.

Čo je životný cyklus agilného testovania?

Životný cyklus agilného testovania je proces, ktorý agilné tímy používajú na plánovanie, vykonávanie a sledovanie svojich testovacích činností.

Životný cyklus agilného testovania pozostáva zo štyroch hlavných fáz:

  • Plánovanie: Tím rozhodne, ktoré funkcie je možné testovať a ktoré testy sú potrebné.
  • Vykonávanie: Tím vykonáva testy.
  • Sledovanie: Tím sleduje výsledky testov a hlásenia o chybách.
  • Uzavretie: Tím preskúma výsledky testov a uzavrie všetky zostávajúce chyby.

Aké sú niektoré osvedčené postupy pre agilné testovanie?

Medzi osvedčené postupy agilného testovania patria:

  • Čo najviac automatizovať. To pomáha urýchliť proces testovania a umožňuje vývojárom nájsť viac chýb.
  • Používaj automatizovaný nástroj na sledovanie chýb. To pomáha vývojovým tímom rýchlo a efektívne získavať zdroje a odstraňovať chyby.
  • Používaj kontinuálnu integráciu a kontinuálne dodávanie. Pomôže to zabezpečiť, aby zmeny prebiehali často a aby boli vždy pred finalizáciou otestované.
  • Komunikuj včas a často. Agilné tímy musia neustále komunikovať, aby boli úspešné. Testeri musia byť schopní efektívne komunikovať so všetkými členmi tímu, ako aj so zákazníkom.

Pochopenie definície DONE

V agilnom vývoji je definícia DONE spoločným, štandardizovaným chápaním tímu, že konkrétny používateľský príbeh (user story) bol dokončený. Kritériá akceptácie (acceptance criteria) v používateľskom príbehu sú to, čo pomôže riadiť definíciu done. Ak používateľský príbeh splní akceptačné kritériá, možno ho považovať za hotový. To zahŕňa testovanie alebo overovanie akceptačných kritérií. Test teda overuje, či si používateľský príbeh dokončil.

Je dôležité, aby agilní testeri aj vývojári vedeli, čo bolo otestované a aké chyby je ešte potrebné vyriešiť.

Agilná metodika testovania: 5 príkladov

Pri agilnom vývoji sú testy na prvom mieste. Keď vytvoríš používateľský príbeh, musíš definovať akceptačné kritériá. Tým sa riadi testovanie a validácia používateľských príbehov.

Nezáleží na tom, akú agilnú metodiku testovania používaš – Scrum, XP, Kanban alebo dokonca hybridnú agilnú metodiku. Pri agilnom testovaní sa zvyčajne používajú nasledujúce testovacie metódy:

Testami riadený vývoj (TDD – Test-Driven Development)

Testami riadený vývoj (TDD) sa začína testami. Tento typ vývoja sa začína diskusiou o tom, čo chceš testovať a potom vytvorením používateľského príbehu. Začneš teda písaním unit testu. Potom napíšeš používateľský príbeh. Nakoniec píšeš kód, kým unit test neprejde.

Vývoj riadený testami sa zvyčajne používa na unit testy a testy komponentov, ktoré sa môžu vykonávať pomocou nástrojov na automatizované testovanie. TDD zabezpečuje, aby funkcie fungovali tak, ako majú.

Vývoj riadený akceptačnými testami (ATDD – Acceptance Test-Driven Development)

Vývoj riadený akceptačnými testami (ATDD) je podobný vývoju riadenému testami. Vývoj riadený akceptačnými testami sa však začína vstupnými informáciami od zákazníka o funkčnosti. Tento typ vývoja sa začína diskusiou o tom, ako sa bude produkt používať. Napíšeš teda akceptačný test používateľa (UAT). A potom píšeš kód, kým neprejde testom.

Vývoj riadený akceptačnými testami sa zvyčajne používa na akceptačné testy. Overuje sa ním, či produkt funguje tak, ako by používatelia očakávali.

Vývoj riadený správaním (BDD – Behavior-Driven Development)

Vývoj riadený správaním (BDD) často vychádza z vývoja riadeného testami a vývoja riadeného akceptačnými testami. Pri vývoji riadenom správaním musí byť účel vývoja spojený s obchodným výsledkom. Takže budeš mať používateľský príbeh – ale používateľský príbeh musí odpovedať na to, prečo sa z obchodného hľadiska táto funkcia vyvíja. A v BDD sú testy zahrnuté do používateľských príbehov ako scenáre alebo špecifikácie.

Vývoj riadený správaním sa používa aj na akceptačné testy. Overuje sa ním, či sú funkcie produktu potrebné na dosiahnutie požadovaného obchodného výsledku.

Prieskumné testovanie (Exploratory Testing)

Prieskumné testovanie je štýl testovania, ktorý umožňuje testerom riadiť sa skôr svojou intuíciou než vopred určenou cestou. Zvyčajne je manuálne. Testeri zaznamenávajú, čo robia a ukladajú to ako test. Potom v priebehu testovania zisťujú, čo presne testujú.

Prieskumné testovanie sa zvyčajne používa na hľadanie skrytých rizík v rámci produktu. Išlo by o chyby, ktoré sa prehliadli pri funkčných testoch vykonávaných v rámci vývoja riadeného testovaním.

Testovanie založené na reláciách (Session-Based Testing)

Testovanie založené na reláciách má niektoré podobnosti s prieskumným testovaním. Testovanie založené na reláciách má však o niečo väčšiu štruktúru. Namiesto toho, aby testeri za pochodu zisťovali, čo budú testovať, začínajú s určitým poslaním.

Testovanie založené na reláciách sa používa aj na hľadanie skrytých chýb v rámci projektu.

Stratégia agilného testovania

Testovanie pri tradičnom vývoji zvyčajne zahŕňa plán testovania. Dobre zdokumentovaný plán testovania však nie je bežný pri agilnom vývoji. Namiesto toho musia byť agilní testeri flexibilní a pripravení reagovať na zmeny v požiadavkách.

Preto je potrebná skôr agilná testovacia stratégia než agilný testovací plán.

Existuje mnoho spôsobov, ako načrtnúť stratégiu agilného testovania. Stratégiu môžeš jednoducho načrtnúť v dokumente. Môžeš vytvoriť testovaciu maticu. Alebo môžeš použiť Kanban board.

Bez ohľadu na to, ktorú agilnú metodiku testovania používaš, stratégia by mala obsahovať:

  1. Účel (definovaný používateľským príbehom).
  2. Ciele (testovacie prípady).
  3. Rozsah (čo je potrebné otestovať).
  4. Metódy (ako sa budú testy vykonávať).

Vytvorenie agilnej stratégie testovania môže byť zložité. Je to však jednoduché, ak používaš správne testovacie nástroje.

Výhody agilného testovania

  • Vykonávanie agilného testovania si vyžaduje menej dokumentácie.
  • Agilné testovanie pomáha znižovať počet chýb, zlepšovať kvalitu produktov a zvyšovať produktivitu softvéru.
  • Pri agilnom testovaní softvéru je práca rozdelená na malé časti, takže vývojár sa môže ľahšie sústrediť a najprv dokončiť jednu časť a potom prejsť na ďalšiu. Tento prístup pomáha identifikovať drobné nezrovnalosti a vyššiu efektivitu.
  • Pri agilnom testovaní sa pravidelne získava spätná väzba od používateľov a iných zainteresovaných strán, čo pomáha zvyšovať kvalitu softvérového produktu.

Výhody agilného testovania

Obmedzenia agilného testovania

  • Pri agilnom testovaní, ak jeden alebo viac členov opustí pozíciu, existuje šanca, že projekt zlyhá.
  • Pri agilnom testovaní neexistuje žiadna alebo existuje menej dokumentácie, čo sťažuje predvídanie očakávaných výsledkov, keďže existujú jednoznačné podmienky a požiadavky.
  • Pri agilnom testovaní softvéru dochádza k opakovaným opravám chýb, úpravám a vydaniam, čo môže niekedy viesť k zavedeniu nových chýb do systému.
  • Pri agilnom testovaní tím od prvého dňa presne nepozná konečný výsledok, takže je náročné predvídať faktory, ako sú náklady, čas a potrebné zdroje na začiatku projektu.
  • Agilné testovanie si vyžaduje minimálne plánovanie na začiatku, takže sa ľahko stane, že sa pri dodávaní nového produktu odkloníš na vedľajšiu koľaj. Neexistuje žiadny konečný koniec a neexistuje jasná vízia toho, ako bude vyzerať konečný produkt.

Kľúčové rozdiely medzi tradičnými a agilnými princípmi testovania

  1. Filozofia

Zatiaľ čo tradičné postupy testovania sú založené na filozofii najprv fixných, konkrétnych požiadaviek a riešenia chýb a až potom vydania produktu, agilný prístup k testovaniu sa riadi filozofiou test-first, kde sa chyby odstraňujú v každom šprinte pred vydaním produktu.

Ďalej, v agilných projektoch testovania nie sú požiadavky fixné, teda zmeny sa môžu zdravo zavádzať, čo znamená, že testovací prípad je otvorený skúmaniu ďalších úvah a úprav.

  1. Prístup

Tradičná metóda sa riadi prediktívnym modelom s postupným prístupom. Zahŕňa prístup zhora nadol, pri ktorom sa testovanie vykonáva postupne.

Na druhej strane agilná metóda sleduje viac iteračný a adaptívny model s fázami, ako je plánovanie projektu, riadenie rizík, návrh a vývoj a testovanie.

  1. Funkcia

Primárnou funkciou tradičného prístupu k testovaniu je certifikácia kvality produktov. V porovnaní s tým agilné princípy testovania zabezpečujú kvalitu a rýchle dodanie produktu s minimálnymi funkciami.

  1. Spätná väzba od používateľov

Pri tradičnom testovaní sa až do skončenia testovania neberie spätná väzba od používateľov. Agilný prístup sleduje krátke cykly priebežnej spätnej väzby na konci každého šprintu.

  1. Automatizácia

Pokiaľ ide o prístup k testovaniu, automatizácia sa takmer nepoužíva a je skôr rutinnou praxou vývojárov. Na druhej strane agilné testovanie podporuje proces automatizácie agresívne v testovacom scenári.

  1. Neustále zlepšovanie

V tradičnom prístupe sa požadované úpravy vykonávajú až v ďalšej verzii. Naproti tomu agilný proces sleduje neustále zlepšovanie v testovaní softvéru, kde sa požadované zmeny vykonávajú v ďalšom šprinte testovacieho cyklu. Moderná metóda sa na testovanie softvéru pozerá ako na proces neustáleho zlepšovania.

  1. Komunikácia

Tradičné prístupy k testovaniu sa vo veľkej miere spoliehajú na dokumentáciu so všetkými prípadmi použitia a prípravou testovacích prípadov, ktoré s tým súvisia.

Zatiaľ čo pri agilnom testovaní nie je dokumentácia nevyhnutnou súčasťou QA. QA testeri si v tomto prípade osvojujú fakty, ktoré potrebujú, v akejkoľvek forme, bez veľkého množstva dokumentácie, a pokračujú v procese.

  1. Riadenie rizík

Zatiaľ čo tradičná metodika sa vyhýba rizikám, agilná metodika sa riadi včasným a účinným prístupom k prevencii rizík.

Ak vieš po nemecky a si IT tester, pozri si naše benefity pre zamestnancov a reaguj na najnovšie ponuky práce.

O autorovi

Michaela Kojnoková

Agile Test Engineer

Po štúdiu informatiky na ŽU a TUKE som sa najviac ponorila do oblasti automatizácie testovania. Okrem toho sa venujem tvorbe webov, databázam, dátovej analytike, umelej inteligencii a strojovému učeniu. Mám rada cestovanie, šport a najviac si užívam čas strávený v prírode s mojimi blízkymi. LinkedIn

Daj nám o sebe vedieť