Inkrementální testování v testování softwaru je metodika, která umožňuje týmům rozdělit jednotlivé moduly, testovat je izolovaně a postupně je integrovat. Pomáhá včas odhalit chyby, snižuje složitost a zvyšuje pokrytí testů.
V tomto článku se ponoříme do problematiky inkrementálního testování, vysvětlíme, co to je, a prozkoumáme různé typy, procesy, přístupy, nástroje a další prvky, které jsou s touto užitečnou metodikou spojeny.
Co je to inkrementální testování?
Testování je jednou z nejdůležitějších fází životního cyklu vývoje softwaru (SDLC). Stejně jako SDLC je i testování rozděleno do různých logických kroků. Jednou z těchto fází je inkrementální testování, které obvykle probíhá v průběhu.
integrační testování
a hned po
testování jednotek
.
Inkrementální testování je pragmatický přístup k testování softwaru, který rozděluje velké nebo složité programy na zvládnutelné kousky. Namísto integrace a testování celého softwarového systému najednou se při inkrementálním testování zkoumají moduly a provádí se postupné ověřování.
Softwarové moduly jsou obvykle samostatné jednotky kódu, které provádějí konkrétní úkoly nebo funkce. Rozsah těchto modulů závisí na různých faktorech, například na způsobu kódování, metodice vývoje nebo dokonce na použitém programovacím jazyce.
Moduly jsou testovány nezávisle na sobě během testování jednotek. Při integračním testování se pak jednotlivé moduly integrují po částech – nebo postupně. Tento proces zajišťuje, že jednotlivé moduly spolu dobře spolupracují. Pro úplné ověření každého modulu však musí testeři simulovat komponenty, které ještě nebyly implementovány, nebo externí systémy. K tomu potřebují pomoc odboček a ovladačů.
Co jsou stuby a ovladače v inkrementálním testování?
Zásuvné moduly a ovladače jsou důležitými nástroji pro testování softwaru. Tyto dočasné části kódu se používají při integračním testování, protože umožňují týmům napodobit chování a rozhraní různých modulů nebo komponent.
1. Zbytky:
Zásuvné moduly napodobují moduly, které ještě nebyly vyvinuty, a proto je nelze testovat. Umožňují testovanému modulu (MUT) volat neúplné moduly. Výsledkem je, že MUT lze testovat izolovaně, i když nejsou k dispozici související moduly.
2. Řidiči:
Ovladače naproti tomu simulují chování modulů, které volají MUT. V rámci testovacího prostředí mohou tyto ovladače odesílat testovací data MUT. To opět usnadňuje izolované testování modulů bez potřeby externích závislostí.
Používání podřízených modulů nebo ovladačů zkracuje dobu vývoje, zlepšuje kvalitu kódu a zvyšuje produktivitu týmu. Rozhodnutí, kterou z nich použít, však závisí na tom, která metodika testování je nejvhodnější. Tuto problematiku rozvedeme níže v části věnované různým typům inkrementálního integračního testování.
Různé typy přírůstků
integrační testování
Typy inkrementálního testování lze obecně rozdělit do tří kategorií. Prozkoumejme každou z nich.
1. Přírůstková integrace shora dolů
Přírůstková integrace shora dolů začíná testováním modulů nejvyššího řádu v rámci systému. Odtud postupně integruje a testuje moduly nižšího řádu.Existují dva hlavní scénáře, kdy se používá přírůstková integrace shora dolů. Jsou to:
- Pokud je systém velmi rozsáhlý nebo velmi složitý
- Když vývojový tým pracuje na mnoha modulech současně.
Kroky pro postupnou integraci shora dolů
- Identifikace kritických modulů
- Vytvoření modulů nižších řádů, které napodobují moduly nižšího řádu
- Vývoj ovladačů pro interakci s moduly vyššího řádu, které jim posílají data a interpretují výstupy modulu.
- Unit testování kritických modulů pomocí ovladačů a záložek
- Integrovat moduly nižšího řádu a postupně nahrazovat stuby skutečnými implementacemi.
- Přepracování ovladačů tak, aby vyhovovaly novým modulům
- Postup opakujte, dokud nebudou integrovány a otestovány všechny moduly nižšího řádu.
2. Přírůstková integrace zdola nahoru
Opačným směrem jdou přírůstkové integrace zdola nahoru. Při tomto přístupu se testují moduly nižšího řádu (nebo nejméně kritické moduly) systému a postupně se přidávají moduly vyššího řádu. Tento přístup je vhodný pro různé scénáře, jako jsou:
- Při práci s menšími systémy
- Pokud je systém modulární
- Pokud máte určité obavy o přesnost nebo úplnost dílčích údajů.
Kroky pro postupné integrace zdola nahoru
- Identifikace modulů nižšího řádu
- Unit testování modulů nižšího řádu pro ověření jejich jednotlivých funkcí.
- Vývoj ovladačů, které fungují jako prostředníci s moduly nižšího řádu.
- Vytvoření záložek pro simulaci chování modulů vyššího řádu
- Integrace dalších modulů od nižšího k vyššímu řádu a postupné nahrazování stubů skutečnými implementacemi.
- Přepracování ovladačů tak, aby vyhovovaly novým modulům
- Postup opakujte, dokud nebudou integrovány a otestovány všechny moduly vyššího řádu.
3. Funkční přírůstková integrace
Dalším běžným typem inkrementálního testování při testování softwaru je funkční inkrementální integrační testování. Zatímco předchozí dva druhy se zaměřovaly na moduly vyššího a nižšího řádu, funkční inkrementální testování je založeno na funkčnosti konkrétního modulu.
Funkční přírůstková integrace se používá v
Agilní/DevOps metodologie
, a je vynikající volbou pro aplikace se složitými závislostmi mezi moduly nebo komponentami.
Kroky pro funkční přírůstkovou integraci
- Identifikovat jednotlivé moduly a komponenty s přesně definovanými rozhraními.
- Ověření funkčnosti každého modulu pomocí jednotkového testování.
- Integrace nejnutnějších základních modulů systému a zajištění jeho funkčnosti.
- Postupné přidávání jednotlivých modulů a testování funkčnosti v každém kroku.
- Přepracování kódu při přidávání jednotlivých modulů
- Po přidání všech modulů otestujte funkčnost a výkonnost.
Výhody a nevýhody přírůstkového testování
Nyní byste již měli mít představu, proč je inkrementální testování oblíbeným přístupem. Stejně jako všechny metodiky testování softwaru má však své výhody i nevýhody. Prozkoumejme některé z těchto výhod a nevýhod.
Výhody přírůstkového testování
1. Flexibilita
Jak všichni vývojáři a testeři softwaru dobře vědí, požadavky se mohou v průběhu SDLC měnit a vyvíjet, někdy dosti dramaticky. Inkrementální testování je dostatečně dynamické, aby se týmy mohly během procesu testování přizpůsobit a začlenit nové plány a směry.
2. Včasná detekce chyb
Chybu nebo závadu je nejlepší odhalit co nejdříve. Pokud vývojáři ověřují jednotlivé moduly po částech, je identifikace a oprava problémů mnohem snazší. Navíc pomáhá snižovat pravděpodobnost výskytu velkých problémů na konci vývoje.
3. Jednoduchost
Testování softwaru může být velmi složitý proces. Jeden z nejpřesvědčivějších aspektů inkrementálního testování spočívá v tom, že rozděluje testovací město na proveditelné části. Místo toho, aby se testeři potýkali s ohromující složitostí, mohou se zaměřit na konkrétní moduly a dokonce jim určit priority. Tato výhoda je darem z nebes pro velké a složité aplikace.
4. Nižší riziko regrese
Regrese je při vývoji softwaru časově náročná a složitá záležitost. Inkrementální testování může zmírnit četnost a rizika způsobená regresí, protože umožňuje týmům testovat moduly jednotlivě a řešit problémy, jakmile se objeví. Při použití s pevnými
regresní testování
, mohou týmy ušetřit spoustu času a trápení.
5. Možnosti zpětné vazby
Často přehlíženou výhodou inkrementálního testování je, že týmům umožňuje volně sestavovat prototypy a MVP. Odtud mohou zainteresované strany a investoři posoudit základní funkčnost procesu a poskytnout neocenitelnou zpětnou vazbu. Tato situace může ušetřit spoustu času a peněz a vést k robustnějším produktům.
Nevýhody přírůstkového testování
1. Problémy s integrací
Samostatné testování modulů je žádoucí, protože rozděluje složitou aplikaci na zvládnutelné části. Integrace těchto modulů však může vést k novým a neočekávaným chybám. Proto je třeba pečlivě a promyšleně naplánovat postupné testování.
2. Složitost sady testů
S více testovacími případy pro každý modul a jejich vzájemnou interakcí může být složité sledovat a spravovat testovací sady. U rozsáhlých a složitých aplikací je proto důkladná dokumentace nebo nástroje pro správu testů nutností.
3. Více práce
Monolitické testování je sice složitější, ale vyžaduje méně testování. Při samostatném testování mnoha modulů vyžaduje inkrementální testování více práce. Výhody inkrementálního testování, jako je včasné odhalení chyb, však znamenají, že dodatečné úsilí je investicí, která šetří čas. Samozřejmě,
automatizace testování softwaru
může pomoci snížit toto úsilí.
4. Zvýšené nároky na řízení
Inkrementální testování vyžaduje spolupráci více týmů. Například týmy vývoje, testování a DevOps budou muset pracovat ve vzájemné shodě. Tato situace vytváří další nároky na řízení a vyžaduje dobrou komunikaci mezi těmito týmy, aby bylo zajištěno, že se soustředí a směřují ke stejným cílům.
Příklad inkrementálního testování
Přístup k inkrementálnímu testování asi nejsnáze pochopíte na příkladu. Zde je jednoduchá situace, která vám pomůže si tento proces představit.
1. Příklad inkrementálního testování aplikace mobilního bankovnictví
Scénář: Tým vytváří mobilní bankovní aplikaci. Aplikace se skládá z několika různých modulů, které umožňují:
- 2FA a biometrické ověření uživatele
- Zpracování transakcí
- Přístrojový panel pro správu finančních údajů
Cíl: Tým chce otestovat integraci jednotlivých modulů a zjistit, zda spolu dobře fungují. Výsledkem je sestavení tří testovacích případů.
Testovací případ 1
V prvním testovacím případě chce tým zajistit, aby uživatel po zadání biometrických údajů nebo hesla získal přístup ke zpracování transakcí i k ovládacímu panelu pro správu finančních údajů.
Aplikace projde testem, pokud uživatel může zadat své údaje a získat přístup k transakcím.
Testovací případ 2
Další testovací případ má zjistit, jak aplikace zvládá neautorizované transakce.
Aplikace projde testem, pokud je pokus o neoprávněnou transakci zablokován a aplikace zobrazí chybovou zprávu.
Testovací případ 3
Poslední integrační test zahrnuje ověření, zda aplikace může provádět transakce současně.
Aplikace projde testem, pokud uživatel může zahájit transakci a zároveň přistupovat ke svým finančním informacím bez jakýchkoli nesrovnalostí nebo problémů.
Je přístup inkrementálního testování
stejné jako inkrementální testování?
Ne. Testování inkrementality se týká statistické marketingové metody, která je asi nejznámější jako atribuční modelování. Stručně řečeno, pomáhá marketingovým týmům pochopit dopad reklamních kampaní, marketingových kanálů nebo konkrétních strategií.
Zájem o tento druh modelování sice v posledních letech vzrostl díky “smrti” souborů cookie a dat třetích stran, ale s inkrementálním testováním ho pojí pouze společné slovo.
3 nejlepší nástroje pro inkrementální testování
#1. ZAPTEST
Kromě poskytování prvotřídních
RPA
ZAPTEST nabízí řadu nástrojů pro automatizaci testování softwaru, které jsou ideální pro inkrementální testování. Některé z funkcí zahrnují:
Správa testovacích dat
: Snížení množství času a úsilí spojeného s inkrementálním testováním tím, že týmům umožní opakované použití testovacích dat.- Nahrávání a přehrávání skriptů: Tento nekódovaný nástroj umožňuje týmům nahrávat a spouštět skripty a ušetřit spoustu času při inkrementálním testování.
- Opakovaně použitelné testovací moduly: ZAPTEST je vysoce modulární a umožňuje týmům vytvářet a opakovaně používat testovací moduly a ušetřit tak značné množství času při testování.
Celkově ZAPTEST nabízí výkonnou a rozmanitou sadu pro automatizaci testování, která je vhodná pro jakýkoli typ testování, včetně inkrementálního testování.
#2. Selen
Selenium je open-source platforma pro automatizaci testování, která je vytvořena pro usnadnění testování mobilních aplikací. Nástroje podporují několik mobilních platforem (Android, iOS, Windows) a k simulaci modulů využívají záložky a ovladače.
#3. Testsigma
Testsigma je cloudová platforma pro automatizaci testování. Lze jej použít k testování webových a mobilních aplikací a je vhodný pro inkrementální testování díky bezkódovému vytváření testů a integraci s CI/CD pipeline.
Závěrečné myšlenky
Inkrementální testování v testování softwaru je důležitou součástí integračního testování. Umožňuje týmům rozdělit moduly na snadno testovatelné části před jejich pozvolnou integrací. Výhody spočívají v tom, že každý modul lze ověřit z hlediska chyb a následně z hlediska jeho integrace s připojenými částmi.
Vedle našich nejlepších produktů ve své třídě
RPA
ZAPTEST nabízí automatizaci testování softwaru bez použití kódu, a to napříč platformami i aplikacemi. Kromě toho je náš testovací balíček vybaven funkcemi, jako je integrace CI/CD, robustní reporting a analytika a prvotřídní podpora a zákaznický servis.