Rozdělení ekvivalence v testování softwaru je technika testování černé skříňky, která pomáhá vytvářet efektivní testovací případy bez kompromisů v pokrytí testů.
V tomto článku se podíváme na to, co je to rozdělování tříd ekvivalence, proč je užitečné, a prozkoumáme některé postupy a přístupy, které můžete použít k využití výhod této techniky.
Co je rozdělení třídy ekvivalence
v testování softwaru?
Veškerý software má určité vstupní podmínky. V kontextu testování softwaru tyto vstupní podmínky popisují hodnoty nebo data, která musí tester použít k ověření kvality a funkčnosti svého softwaru. Těmito vstupy mohou být jak jednoduché údaje jako kliknutí myší, tak i text a čísla.
Ekvivalentní rozdělení při testování softwaru zkoumá různé vstupy potřebné pro používání softwaru a seskupuje je do tříd ekvivalence, tj. množin vstupů, které budou mít ekvivalentní vliv na chování softwaru.
Pokud víte, jak se budou chovat jednotlivé skupiny vstupů, nemusíte testovat každého zástupce skupiny. Rozdělení na třídy ekvivalence je proto skvělým způsobem, jak pomoci testerům snížit četnost nadbytečných testů. V hyperkonkurenčním světě vývoje softwaru se stále těsnějšími termíny je úspora času a úsilí v životním cyklu testování softwaru (STLC) klíčová.
Nakonec je třeba poznamenat, že testování ekvivalence je technika testování černé skříňky. Stručně řečeno to znamená, že testeři nemusí znát vnitřní kód programu ani jeho vnitřní fungování. Testy jsou založeny na vstupech, výstupech a vnějším chování. Tyto testy jsou proto vysoce zaměřeny na chování uživatelů při používání programu.
1. Rozdělení ekvivalence testování softwaru v kostce
Rozdělení podle ekvivalence rozděluje vstupní data pro testování softwaru na dva tábory: platné a neplatné vstupy. Hodnoty v jednotlivých oddílech musí způsobit, že se software bude chovat stejně. Například:
- Pokud platí podmínka jedné hodnoty v oddílu A, musí platit i pro ostatní hodnoty v oddílu A.
- Stejně tak, pokud jsou podmínky jedné hodnoty v oddílu A nepravdivé, musí být nepravdivé i ostatní hodnoty v oddílu A.
V kontextu testování musí být každý oddíl pokryt alespoň jednou. Logicky to znamená, že pokud selže jedna položka v oddílu A, selžou i všechny ostatní vstupy. Tento postup by měl ušetřit čas, protože místo testování každého vstupu, který se nachází v oddílu A, mohou testeři otestovat pouze jeden a výsledek extrapolovat na základě jeho společných rysů.
2. Proč je testování tříd ekvivalence při testování softwaru důležité?
Než se dostaneme k přímým výhodám testování tříd ekvivalence při testování softwaru, musíme definovat, proč je tento přístup důležitý.
Všichni testeři chápou, že testování softwaru vyžaduje kompromisy. Čas a rozpočty jsou omezené, což znamená, že testeři musí co nejlépe využít své zdroje. Rozdělení ekvivalence testování softwaru pomáhá týmům najít rovnováhu mezi efektivitou a spolehlivostí testování tím, že snižuje počet vstupů.
Výhody rozdělení ekvivalencí
v testování softwaru
Ekvivalentní rozdělení v testování softwaru je testovacími týmy upřednostňováno z řady důvodů. Zde jsou některé z nejpřesvědčivějších.
1. Efektivita
Velká výhoda testování rozdělení ekvivalence spočívá v jeho efektivitě. Pokud testeři použijí rozdělení ekvivalencí, mohou snížit počet testovacích případů, které potřebují, aniž by to bylo na úkor pokrytí testů. Výběrem vstupního případu z každé třídy ekvivalence si testeři mohou být jisti, že rozumí tomu, jak jejich software funguje s různými vstupy.
2. Jednoduchost
Další velkou výhodou rozdělení ekvivalence testování softwaru je jednoduchost. Rozdělení různorodého souboru vstupů na platné a neplatné údaje znamená, že plánování testů je mnohem jednodušší. Testování každého vstupu zvlášť vyžaduje mnoho dokumentace a koordinace. Zkrácení na jeden reprezentativní příklad zefektivňuje proces testování.
Rozšířené pokrytí
Používání tříd ekvivalence při testování také umožňuje efektivněji využít čas potřebný k testování. Redukce testovacích vstupů do tříd znamená, že můžete důkladněji otestovat každou třídu. Tento komplexní přístup by byl upřímně řečeno nemožný, kdybyste testovali každý vstup zvlášť. Rozdělení ekvivalence umožňuje týmům důkladně otestovat platná a neplatná data, okrajové případy, hraniční hodnoty a další.
3. Znovupoužitelnost
Počáteční čas, který investujete do vytvoření každé třídy ekvivalence při testování softwaru, se vám vyplatí, pokud tyto třídy znovu použijete pro budoucí vstupní testy. I když ne všechny oddíly budou relevantní pro budoucí testy, ty, které jsou, vám ušetří spoustu času při budoucích projektech nebo dokonce při regresním testování.
Nevýhody rozdělení ekvivalencí
v testování softwaru
Ačkoli rozdělení ekvivalencí nabízí některé významné výhody, není ideálním řešením pro každý scénář. Prozkoumejme některá jeho omezení.
1. Vstupní objednávka
V určitých situacích je pořadí vstupů důležitou součástí testování funkčnosti aplikace. To není něco, co byste mohli omezit pomocí rozdělení ekvivalencí. Testeři musí mít tyto situace na paměti a používat alternativní techniky k zajištění dobrého pokrytí.
2. Komplexní vstupní závislosti
Komplexní software se složitými vstupními závislostmi je další oblastí, kde se projevují omezení dělení ekvivalencí. Například software, který na základě různých vstupů provádí výpočty. V takovém případě by testeři museli používat různé techniky, aby omezili kombinatorickou explozi a zvýšili pravděpodobnost izolace závad.
Alternativní přístupy k doplnění
omezení zkoušek ekvivalence
Zatímco testování rozdělením ekvivalence je vhodné pro mnoho testovacích scénářů, vysoce komplexní software se složitými závislostmi mezi vstupními hodnotami může vyžadovat další doplňkové přístupy.
Pokud jde o psaní testovacích případů pro složitý software, je vhodné použít kombinaci těchto přístupů.
1. Párové testování
Párové testování je technika testování softwaru, která testuje všechny možné kombinace každé dvojice vstupních parametrů. Tento přístup zajišťuje, že každá dvojice parametrů je testována společně alespoň jednou.
2. Testování rozhodovací tabulky
Rozhodovací tabulka pomáhá testerům metodicky mapovat různé kombinace vstupů. Je to dobrý způsob, jak zajistit systematické pokrytí, pokud existují složité závislosti.
3. Testování přechodů mezi stavy
Tento typ testování měří, jak software přechází mezi různými stavy v reakci na různé kombinace vstupů.
4. Testování na základě modelu
Tento přístup vyžaduje vytvoření modelu založeného na vnitřní logice softwaru a použití automatizačního nástroje k vytvoření testovacích případů na základě tohoto modelu. Tato technika si umí poradit se složitostí a zajistit dostatečné pokrytí.
Příklady testování rozdělení tříd ekvivalence
Nejlepším způsobem, jak porozumět rozdělení ekvivalence, je podívat se na to, jak a kde můžete použít třídu ekvivalence při testování softwaru. Zde je několik příkladů, které vám pomohou si tento koncept lépe představit.
1. Příklad testování rozdělení tříd ekvivalence č. 1
Dobrým příkladem třídy ekvivalence v testování softwaru je online objednávkový formulář.
Řekněme, že vytváříte aplikaci pro online prodejce stacionárního vybavení. K dispozici je typický objednávkový formulář pro balíky papíru A4. Zde je uvedeno, jak lze tento formulář testovat pomocí tříd ekvivalence.
Třídy ekvivalence:
Množství papíru A4 se pohybuje v určitém rozmezí, například od 1 do 100. Jedná se tedy o tyto tři třídy:
- 1 až 100
- Čísla pod 1
- Čísla nad 100.
Testovací případy:
Měly by být provedeny tři testovací případy s těmito očekávanými výsledky
- Jakékoli číslo od 1 do 100 = zpracovaná objednávka
- Čísla pod 1 = chybové hlášení
- Čísla nad 100 = chybová zpráva
2. Příklad testování rozdělení ekvivalence č. 2
Třída ekvivalence v testování softwaru se může zabývat nejen čísly. V tomto příkladu prozkoumáme, jak lze stejný princip použít k ověření portálu pro odesílání souborů. Řekněme, že potřebujete otestovat web, který vyžaduje, aby uživatelé nahrávali doklady totožnosti, ale můžete přijímat pouze určité formáty.
Třídy ekvivalence:
- Podporovány jsou dokumenty PDF a JPEG.
- Nepodporované dokumenty jsou všechny ostatní formáty dokumentů.
- Žádný dokument
Testovací případy:
- Testování nahráním PDF nebo JPEG = úspěšné nahrání
- Test nahráváním nepodporovaného formátu = chybová zpráva
- Test bez nahrávání souborů = chybová zpráva
Jak implementovat rozdělení ekvivalencí
přístup k testování softwaru
Pokud chcete při testování používat třídy ekvivalence, musíte zaujmout strategický přístup. Zde je užitečný průvodce krok za krokem, jak implementovat rozdělení ekvivalence při testování softwaru.
Krok č. 1: Identifikace vstupních proměnných
Každý software reaguje na různé vstupní proměnné. U složitého softwaru mohou být tyto proměnné obrovské. Projděte si tedy požadavky a specifikace softwaru a určete všechny proměnné, které mají vliv na chování softwaru.
Mezi nejzřetelnější vstupy patří formuláře pro zadávání údajů uživateli. Pro svůj seznam však musíte zvážit širší škálu vstupů. Můžete také zohlednit proměnné prostředí, volání API, interní výpočty atd.
Dále byste měli znát různé typy proměnných dat. Tyto proměnné můžete kategorizovat jako celočíselné, logické, řetězcové atd. a definovat tak příslušné oddíly.
Nakonec je třeba prozkoumat vstupní omezení. Jedná se například o povolené znaky, definované formáty a minimální/maximální hodnoty.
Krok č. 2. Určení platných a neplatných oddílů
Podívejte se na jednotlivé vstupní proměnné a začněte je rozdělovat podle platných a neplatných výsledků. Tyto třídy budou při testování ekvivalentní.
1. Platné oddíly
Platné oddíly lze rozdělit do dvou tříd.
Pozitivní třídy ekvivalence:
Hodnoty, které by měl váš software úspěšně zpracovat. Například u softwaru, který zaznamenává procentuální známky, je platná hodnota od 0 do 100.
Záporné třídy ekvivalence:
Tato kategorie bude určena pro hodnoty, které jsou mimo hranice očekávaného vstupu, ale software by je měl zpracovat pomocí chybové zprávy. Například vstupní hodnota je 110 pro procentuální známku, což vede k tomu, že software vrátí chybovou zprávu: “Všechny hodnoty musí být 0 až 100”.
2. Neplatné oddíly
Tyto třídy ekvivalence budou obsahovat vstupy, které způsobí chyby nebo neočekávané chování. V našem příkladu výše by to mohlo zahrnovat pokusy o zadání A+ nebo B nebo podobných vstupů do procentuální známky. Tyto vstupy by sice mohly být technicky správné, ale jsou mimo číselná očekávání.
#3. Psaní efektivních testovacích případů
Dále je třeba navrhnout testovací případy, které pokryjí každý oddíl ekvivalence alespoň jednou. Jak již bylo zmíněno dříve v článku, zajišťuje to odpovídající pokrytí testů.
Nejprve je třeba vybrat reprezentativní hodnoty v rámci každého oddílu ekvivalence, které mohou zahrnovat jak platná, tak neplatná data.
Tipy pro psaní spolehlivých testovacích případů
- Přemýšlejte o hraničních hodnotách: Ujistěte se, že jste otestovali hranice oddílů. Minimální, maximální, inkluzivní, exkluzivní atd., protože tyto oblasti jsou silnými kandidáty na chyby. Například pokud jsou vaše vstupní očekávání v rozmezí 0 až 100, testujte záporné hodnoty a čísla jako 101.
- Zvažte pozitivní a negativní testovací scénáře pro platné i neplatné testovací případy.
- Kombinované testování je dobrý nápad. Použijte několik různých přístupů, jak je uvedeno v našich alternativních přístupech, abyste doplnili omezení výše uvedené části o testování ekvivalence.
- zdokumentujte důvody, proč byly vstupní hodnoty rozděleny do určitých oddílů, a jasně popište očekávané chování každého testu.
- Pokud je to možné, používejte vizuální nástroje, abyste do svých testovacích případů vnesli pocit přehlednosti a objektivity pomocí diagramů nebo tabulek, které mapují vaše rozdělení.
#4. Naplánujte a proveďte testovací případy
Stanovte si priority úkolů na základě těchto faktorů:
- Které oblasti jsou nejčastěji postiženy vadami
- Které scénáře s největší pravděpodobností způsobí závažné scénáře, jako jsou pády nebo zamrznutí.
Poté proveďte testy a zaznamenejte jejich výstupy a případné chyby. U složitých programů s velkým množstvím vstupů můžete použít nástroje RPA, které napodobují činnosti uživatele.
#5. Analýza výsledků
Shromážděte shromážděná data z testů a analyzujte výsledky. Některé metody, které je třeba použít, jsou:
- Podívejte se na každý testovací případ a porovnejte skutečné výstupy s očekávanými výstupy.
- Zjistěte případné nesrovnalosti, prozkoumejte a nahlaste chyby a závady.
#6 Další tipy
Tyto tipy se sice neuplatní ve všech případech, ale pro komplexní testování softwaru budou užitečné.
- Rozhodovací tabulky jsou vynikajícím způsobem, jak vizualizovat rozdělení ekvivalence a různé kombinace vstupů, které byste mohli chtít použít.
- Pokud vykazují téměř identické chování, můžete sloučit rovnocenné třídy, čímž se dále optimalizuje proces testování.
- Použití testování hraničních hodnot ke zlepšení detekce závad
- Pokud je to možné, automatizujte testovací případy rozdělení ekvivalence.
Rozdělení ekvivalencí a analýza hraničních hodnot
Ekvivalenční rozdělení vychází z předpokladu, že každý test v rámci rozdělení bude mít stejný výsledek. To je sice v mnoha situacích pravda, ale ne vždy to funguje. Například vstupy, které byly do oddílu přidány omylem, mohou zůstat nezkontrolovány, což může vést ke snížení pokrytí a potenciální nestabilitě softwaru.
Řešením tohoto problému je testování hraničních hodnot. Umožňuje týmům testujícím software zaměřit se na oblasti, které s největší pravděpodobností obsahují rizika, a na základě toho testovat software. Stručně řečeno, navrhuje, že rizika se s největší pravděpodobností vyskytují na okrajích nebo hranicích vašich vstupních oddílů. Proto mohou testeři kromě ostatních testovacích případů třídy ekvivalence psát i testovací případy na horní a dolní hranici vstupů.
Rozdělení ekvivalence a automatizace pomocí ZAPTESTu
Nástroje pro automatizaci testování softwaru, jako je ZAPTEST, mohou týmům pomoci automatizovat rozdělování ekvivalence jak při vytváření testů, tak při jejich provádění.
Pojďme se podívat, jak vám ZAPTEST může pomoci odhalit výhody tohoto užitečného přístupu k testování černé skříňky.
1. Výběr nástrojů
Důležitý je výběr správného nástroje pro danou práci. Většina nástrojů pro automatizaci testování se specializuje na testování webu, mobilních zařízení nebo desktopů. ZAPTEST zvládá testování napříč různými platformami a aplikacemi, což z něj činí spolehlivou volbu.
2. Napsat a provést testovací případy
ZAPTEST 1Script umožňuje skenovat uživatelské rozhraní a vytvářet automatizaci testů. Kromě toho můžete skenovat také makety aplikací, pokud jste v rané fázi vývoje. Pomocí funkce Skenovat grafické uživatelské rozhraní ZAPTEST prohledá všechny testovací objekty a přidá je do seznamu objektů.
Odtud můžete do diagramu přidávat objekty a sestavovat kroky testu.
ZAPTEST umožňuje automatizovat psaní případů pomocí jednoduchého rozhraní drag-and-drop. K sestavení testovacích případů pomocí nástroje ZAPTEST nepotřebujete žádné znalosti kódování. Odtud můžete vybrat příslušnou operaci z rozbalovací metody a sestavit testovací případ na základě vstupních hodnot potřebných pro vaše rozhraní. Poté můžete sestavit testovací případy pro každou ekvivalenci a spustit je. Můžete dokonce opakovaně používat testovací případy a upravovat je v editoru Step, čímž ušetříte spoustu času.
3. Reportování a správa testovacích případů
ZAPTEST umožňuje spouštět testovací případy paralelně, což šetří značný čas. To vám může pomoci spustit najednou velké množství různých oddílů ekvivalence nebo spustit určité skupiny testů.
Výsledky lze snadno shromáždit díky podrobným zprávám o neúspěšných/prospěšných testech, snímkům obrazovky, protokolům o provedení a výkonnostním metrikám souvisejícím s každým testovacím případem.
4. Údržba testovacích případů
Díky kvalitním možnostem správy verzí můžete také jednoduše sledovat a udržovat své testovací případy. Navíc mohou uživatelé ZAPTESTu klonovat a opakovaně používat testy, čímž dosáhnou nové úrovně efektivity.
Kromě automatizace testovacích případů nabízí ZAPTEST mnohem více funkcí. Díky sadě nástrojů RPA nabízí ZAPTEST funkce 2 v 1 a překlenuje tak propast mezi DevOps a BizOps v budoucnosti, která se vyznačuje hyperautomatizací, kdy vše, co lze automatizovat, bude automatizováno.
Závěrečné myšlenky
Rozdělení ekvivalencí je elegantním řešením pro situace, kdy testeři musí najít rovnováhu mezi efektivitou a přesností. Vzhledem k tomu, že některé softwary umožňují téměř nekonečnou škálu vstupů, pomáhá rozdělení tříd ekvivalence týmům rozdělit testovací data na zvládnutelné kousky, z nichž každý lze důkladně otestovat.