Co je testování smyčky? Metodika, příklad
⚡ Chytré shrnutí
Testování smyčky ověřuje konstrukce smyčky uvnitř programu a kontroluje, co se stane, když je smyčka přeskočena, jednou spuštěna, provedena na své hranici a posunuta o jeden průchod za maximální povolený počet.
Co je Loop Testing?
Testování smyčky je typ testování softwaru, který se zaměřuje výhradně na platnost konstrukcí smyček v programu. Je to jedna ze součástí testování řídicích struktur, spolu s testování cesty, testování validace dat a testování podmínek.
Testování smyčky je a testování bílé skříňky technika, takže ji aplikuje někdo, kdo dokáže přečíst zdrojový kód a vidět podmínku smyčky, čítač a cestu ukončení. Tester neodhaduje chování z uživatelského rozhraní; samotná smyčka je testovaný objekt.
Níže uvedený diagram ukazuje, kde se testování smyček nachází v rámci rodiny testů řídicích struktur.
Typy smyček Testováno
Před výběrem strategie určete, kterou ze čtyř tříd smyček máte v úmyslu prozkoumat. Příklady testovaných typů smyček jsou:
- Jednoduchá smyčka — jedna smyčka s jedním vstupem a jedním výstupem, například rovina for, zatímco or dělat, zatímco postavit.
- Vnořená smyčka — jedna smyčka umístěná uvnitř druhé, takže vnitřní smyčka se dokončí při každém průchodu vnější smyčkou.
- Zřetězená smyčka — dvě nebo více smyček probíhajících jedna po druhé v pořadí.
- Nestrukturovaná smyčka — neplánovaná kombinace vnořených a zřetězených cyklů, obvykle výsledkem skoků do těla cykly nebo z něj.
Třída určuje úsilí. Jednoduchá smyčka potřebuje několik iterací; nestrukturovaná smyčka obvykle potřebuje přepracovat kód, než ji lze vůbec otestovat.
Proč provádět smyčkové testování?
Testování smyčky se provádí z následujících důvodů
- Testování může vyřešit problémy s opakováním smyčky
- Testování smyček může odhalit úzká hrdla výkonu a kapacity
- Testováním smyček lze určit neinicializované proměnné ve smyčce.
- Pomáhá identifikovat problémy s inicializací smyčky.
Existuje i komerční důvod. Smyčka, která provede o jednu iteraci příliš mnohokrát, poškodí celkový počet; smyčka, která se nikdy neukončí, zablokuje proces. Obě vady se snadno odhalují, dokud je kód stále na vývojářském počítači, a draho se odhalují v produkčním prostředí.
Jak provádět smyčkové testování: Kompletní metodika
Při testování smyčky je nutné ji kontrolovat na třech různých úrovních:
- Když se vstoupí do smyčky
- Během jeho provádění a
- Když smyčka zůstane
Testovací strategie pro všechny tyto smyčky je následující.
Jednoduchá smyčka
Jednoduchá smyčka má jeden vstup a jeden výstup, jak je znázorněno níže.
Jednoduchá smyčka se testuje následujícím způsobem:
- Přeskočte celou smyčku
- Proveďte 1 průchod smyčkou
- Proveďte 2 průchod smyčkou
- Značka a prochází smyčkou, kde a < b, což je typický počet iterací středního rozsahu
- Značka b, b-1 a b+1 prochází smyčkou, kde b je maximální počet povolených průchodů smyčkou.
Poslední dva případy nesou největší hodnotu. Přeskočitping smyčka dokazuje, že podmínka ukončení je vyhodnocena před spuštěním těla smyčky a b+1 případ dokazuje, že smyčka odmítá pracovat za hranicí deklarovaného limitu, místo aby přeplnila pole.
Vnořená smyčka
Vnořená smyčka násobí počet možných iteračních kombinací, takže se testuje zevnitř ven, nikoli najednou.
Pro vnořenou smyčku je třeba postupovat podle následujících kroků.
- Nastavte všechny ostatní smyčky na jejich minimální hodnotu a začněte od nejvnitřnější smyčky.
- U nejvnitřnější smyčky proveďte jednoduchý test smyčky a podržte vnější smyčky na jejich minimální hodnotě iteračního parametru
- Proveďte test pro další smyčku a postupujte směrem ven.
- Pokračujte, dokud nebude testována vnější smyčka.
Zřetězené smyčky
Zřetězené smyčky se nacházejí jedna za druhou ve stejné prováděcí cestě, jak ukazuje diagram.
V zřetězených smyčkách, pokud jsou dvě smyčky na sobě nezávislé, testují se pomocí přístupu jednoduché smyčky, jinak se testují jako vnořené smyčky.
Pokud se však čítač smyček jedné smyčky použije jako počáteční hodnota pro druhou smyčku, tyto dvě smyčky se nepovažují za nezávislé.
Nestrukturované smyčky
Nestrukturované smyčky jsou nejtěžším případem, protože řízení se v libovolných bodech přeskakuje do těla smyčky a zpět.
U nestrukturovaných smyček je nutné návrh restrukturalizovat tak, aby odrážel použití strukturovaných programovacích konstrukcí. Jakmile je kód redukován na jednoduché, vnořené nebo zřetězené formy, použije se výše uvedená strategie porovnávání.
Příklad testování smyčky s testovacími případy
Pracovaný příklad konkretizuje počet iterací. Uvažujme rutinu, která násobí průběžný výsledek každým celým číslem od 1 do n, faktoriální výpočet. Čítač smyčky začíná na 1, výstupní podmínka je proti > na smyčka je deklarována tak, aby akceptovala maximálně 12 průchodů, než výsledek přeteče deklarovaný celočíselný typ.
Pokud to považujeme za jednoduchou smyčku, doporučený počet iterací výše se promítá do následujícího testovací případy.
| Modelový případ | Hodnota n | Přihrávky provedené | Co to dokazuje |
| TC01 | 0 | 0 (smyčka přeskočena) | Ukončovací podmínka je vyhodnocena před spuštěním těla programu a výsledek zůstává na inicializované hodnotě 1. |
| TC02 | 1 | 1 | Jeden průchod vygeneruje správný výsledek a čítač se jednou zvýší. |
| TC03 | 2 | 2 | Akumulátor přenáší hodnotu dopředu mezi dvěma po sobě jdoucími průchody. |
| TC04 | 5 | 5 | Typický průměrný počet vrací očekávaných 120, což potvrzuje běžné chování. |
| TC05 | 11 | 11 | Jeden průchod pod maximem se stále dokončí normálně (b-1.). |
| TC06 | 12 | 12 | Deklarované maximum je přijato a smyčka se ukončí (b). |
| TC07 | 13 | odmítl | Jeden průchod nad maximum je odmítnut, místo aby tiše přetékal (b+1). |
Všimněte si, že TC01 a TC07 jsou dva případy, které vývojáři nejčastěji opomíjejí, a právě tyto dva případy odhalují chyby způsobené přeskočenou inicializací a přetečením. Záporná hodnota n patří do stejné sady, pokud specifikace umožňuje jeho poskytnutí, což spojuje testování smyčky s negativní testování.
Běžné závady zjištěné testováním smyčky
Testování smyček neustále nachází stejnou malou skupinu chyb, což je důvod, proč se vyplatí pokaždé spustit test s pevným počtem iterací.
- Hranice mimo jednu — podmínka zapsaná jako < kde <= bylo zamýšleno, takže smyčka proběhne o jeden průchod méně nebo o jeden příliš mnoho.
- Neinicializované čítače nebo akumulátory — součet, který obsahuje hodnotu zbývající z předchozího volání.
- Nekonečné smyčky — podmínka ukončení, kterou tělo smyčky nikdy nemůže splnit, protože čítač se aktualizuje pouze na některých větvích.
- Předpoklady přeskočené smyčky — kód za smyčkou, který čte proměnnou, kterou mělo tělo smyčky nastavit, a který selže, pokud smyčka proběhne nulakrát.
- Chyby kapacity a výkonu — smyčka, která je správná, ale při každém průchodu znovu načítá databázi, takže náklady rostou s počtem iterací.
- Interference vnořené smyčky — vnitřní smyčka, která znovu používá čítač vnější smyčky a tiše mění počet vnějších iterací.
Protože každá chyba se mapuje na specifický počet iterací, zde objevené vady se snadno reprodukují a rychle opravují ve srovnání s vadami zjištěnými při vyšších úrovně testů.
Testování smyček vs. jiné techniky testování řídicích struktur
Testování smyček je jedním z členů rodiny řídicích struktur a je snadné si ho zaměnit se sousedními technikami. Níže uvedená tabulka je odděluje.
| Technika | Na co se zaměřuje | Typický cíl pokrytí |
| Testování smyčky | Konstrukce smyček: vstup, počet iterací a ukončení | Nulový, jedničkový, typický a hraniční počet iterací pro každou smyčku |
| Testování stavu | Booleovské výrazy uvnitř rozhodnutí | Každá podmínka byla vyhodnocena jako pravdivá i nepravdivá. |
| Testování toku dat | Definice a použití každé proměnné | Každý pár definice-použití aplikovaný alespoň jednou |
| Testování základní cesty | Nezávislé cesty grafem toku řízení | Počet cest rovný cyklomatické složitosti |
V praxi se tyto techniky spíše doplňují než si konkurují. Cyklomatická složitost vám řekne, kolik nezávislých cest existuje, testování bázových cest je pokryje a testování smyček poté přičte počty iterací, které by samotné pokrytí cesty nevynutilo. Všechny jsou dynamické testování činnosti, protože kód musí být spuštěn, aby bylo možné pozorovat výsledky.
Omezení v testování smyčky
Tato technika má skutečné hranice a jejich znalost zabraňuje nadměrným investicím.
- Chyby smyček se objevují většinou v softwaru nízké úrovně
- Chyby zjištěné během testování smyčky nejsou příliš jemné
- Mnoho chyb může být detekováno operačním systémem, protože způsobují narušení hranic paměti, detekovatelné chyby ukazatelů a podobné chyby.
- Identifikace třídy každé smyčky a její odpovídající testování stojí čas, což je těžké ospravedlnit u kódových cest, které nesou malé riziko.





