Mi az a huroktesztelés? Módszertan, példa
⚡ Okos összefoglaló
A ciklustesztelés validálja a programban lévő ciklusszerkezeteket, ellenőrizve, mi történik, ha egy ciklust kihagyunk, egyszer belépünk, a határán végrehajtunk, és egy menettel túllépjük a maximálisan megengedett ciklusszámot.
Mi az a huroktesztelés?
Hurok tesztelése egy olyan szoftvertesztelési típus, amely teljes mértékben a programban lévő ciklusszerkezetek érvényességére összpontosít. Ez a vezérlési struktúra tesztelésének egyik része, a ... mellett. útvonal tesztelés, adatérvényesítési tesztelés és állapottesztelés.
A huroktesztelés a fehér dobozos tesztelés technika, tehát olyan személy alkalmazza, aki el tudja olvasni a forráskódot, és látja a ciklus feltételét, a számlálót és a kilépési útvonalat. A tesztelő nem a felhasználói felületről találgat a viselkedésre; maga a ciklus a tesztelt objektum.
Az alábbi ábra azt mutatja, hogy a ciklustesztelés hol helyezkedik el a vezérlési struktúra tesztelési családon belül.
A hurok típusai tesztelve
Mielőtt stratégiát választanál, azonosítsd a négy ciklusosztály közül, hogy melyiket vizsgálod. A tesztelt ciklustípusok például a következők:
- Egyszerű hurok — egyetlen hurok egy bejárattal és egy kijárattal, például egy sima mert, míg or csinálni, miközben építeni.
- Beágyazott hurok — egy hurok a másikba kerül, így a belső hurok a külső hurok minden meneténél befejeződik.
- Összefűzött hurok — két vagy több, egymás után, sorrendben futó ciklus.
- Strukturálatlan hurok — beágyazott és összefűzött ciklusok nem tervezett kombinációja, általában egy ciklus törzsébe való be- vagy onnan való kiugrások eredménye.
Az osztály dönti el, mennyi erőfeszítést igényel. Egy egyszerű ciklushoz néhány iteráció szükséges; egy strukturálatlan ciklushoz általában újra kell tervezni a kódot, mielőtt egyáltalán tesztelni lehetne.
Miért végezzünk huroktesztet?
A huroktesztelés a következő okok miatt történik
- A tesztelés javíthatja a hurokismétlési problémákat
- A ciklusok tesztelése feltárhatja a teljesítmény- és kapacitásbeli szűk keresztmetszeteket
- Ciklusok tesztelésével meghatározhatók a ciklusban lévő inicializálatlan változók.
- Segít azonosítani a ciklus inicializálási problémáit.
Van egy kereskedelmi oka is. Egy ciklus, amely eggyel több iterációt futtat le, az összesített eredményt elrontja; egy ciklus, amely soha nem fejeződik be, lefagyasztja a folyamatot. Mindkét hiba olcsón megtalálható, amíg a kód még a fejlesztői gépen van, és drága éles környezetben.
A huroktesztelés módja: teljes módszertan
Egy ciklus tesztelése során három különböző szinten kell ellenőrizni:
- Amikor a ciklusba belépünk
- Végrehajtása során, és
- Amikor a hurok maradt
Mindezen hurkok tesztelési stratégiája a következő.
Egyszerű hurok
Egy egyszerű ciklusnak egyetlen belépése és egyetlen kilépése van, ahogy az alább látható.
Egy egyszerű hurkot a következő módon tesztelünk:
- Kihagyja a teljes kört
- Végezzen 1 áthaladást a hurkon
- Végezzen 2 áthaladást a hurkon
- Az elért eredményeknél hangsúlyozd: a áthalad a hurkon, ahol a < b, ami egy tipikus középtartományú iterációs szám
- Az elért eredményeknél hangsúlyozd: b, b-1 és b+1 áthalad a cikluson, ahol b a hurokon áthaladások megengedett maximális száma.
Az utolsó két eset hordozza a legtöbb értéket. Skipping a ciklus bizonyítja, hogy a kilépési feltétel kiértékelésre kerül a törzs futása előtt, és a bA +1 eset azt bizonyítja, hogy a ciklus a deklarált korláton túlmutató munkát nem hajlandó végrehajtani, ahelyett, hogy egy tömböt túllépne.
Beágyazott hurok
Egy beágyazott ciklus megsokszorozza a lehetséges iterációs kombinációk számát, így belülről kifelé tesztelődik, nem pedig egyszerre.
Egy beágyazott ciklushoz a következő lépéseket kell követnie.
- Állítsd be az összes többi ciklust a minimális értékre, és kezdd a legbelső ciklussal.
- A legbelső hurok esetében végezzen egy egyszerű huroktesztet, és tartsa a külső hurkokat a minimális iterációs paraméterértéken
- Végezd el a tesztet a következő hurokhoz, és haladj kifelé.
- Addig folytassa, amíg a legkülső hurkot meg nem vizsgálta.
Összefűzött hurkok
Az összefűzött ciklusok egymás után helyezkednek el ugyanabban a végrehajtási útvonalban, ahogy az az ábrán is látható.
Összefűzött ciklusokban, ha két ciklus független egymástól, akkor az egyszerű ciklusmegközelítéssel teszteljük őket, egyébként beágyazott ciklusként.
Ha azonban az egyik hurok számlálóját használjuk a másik kezdeti értékeként, akkor a két hurkot nem tekintjük függetlennek.
Strukturálatlan hurkok
A strukturálatlan ciklusok a legnehezebb eset, mivel a vezérlés tetszőleges pontokon ki-be ugrál a ciklus törzsébe.
Strukturálatlan ciklusok esetén a tervet át kell strukturálni, hogy tükrözze a strukturált programozási konstrukciók használatát. Miután a kódot egyszerű, beágyazott vagy összefűzött formákra redukáltuk, a fenti illesztési stratégia érvényesül.
Huroktesztelési példa tesztesetekkel
Egy kidolgozott példa kézzelfoghatóvá teszi az iterációk számát. Tekintsünk egy rutint, amely egy futó eredményt 1-től 1-ig terjedő összes egész számmal megszoroz. n, egy faktoriális számítás. A ciklusszámláló 1-től indul, a kilépési feltétel a következő: ellen > n, és a ciklust úgy deklarálták, hogy maximum 12 menetet fogadjon el, mielőtt az eredmény túlcsordulna a deklarált egész típusú érték felett.
Ha ezt egyszerű ciklusként kezeljük, a fent ajánlott iterációs számok a következőket jelentik: teszt esetek.
| Vizsgálati eset | n értéke | Végrehajtott passzok | Amit bizonyít |
| TC01 | 0 | 0 (ciklus kihagyva) | A kilépési feltétel kiértékelésre kerül a törzs futása előtt, és az eredmény az inicializált 1-es értékén marad. |
| TC02 | 1 | 1 | Egyetlen menet a helyes eredményt adja, és a számláló egyszer növekszik. |
| TC03 | 2 | 2 | Az akkumulátor két egymást követő menet között előreviszi az értéket. |
| TC04 | 5 | 5 | Egy tipikus középtartományú számlálás a várt 120-as értéket adja vissza, ami megerősíti a szokásos viselkedést. |
| TC05 | 11 | 11 | Egy menettel a maximum alatt még mindig normálisan befejeződik (b-1.). |
| TC06 | 12 | 12 | A deklarált maximumot elfogadja a rendszer, és a ciklus véget ér (b). |
| TC07 | 13 | elutasított | Egyszer a maximumon túli áthaladást elutasítanak, ahelyett, hogy csendben túlcsordulnának (b+ 1). |
Figyeljük meg, hogy a TC01 és a TC07 az a két eset, amelyet a fejlesztők leggyakrabban kihagynak, és ez a kettő az, amelyik kihagyott inicializálási és túlcsordulási hibákat okoz. A negatív érték n ugyanabba a készletbe tartozik, ha a specifikáció lehetővé teszi a megadását, ami a huroktesztelést a következőhöz köti negatív teszt.
Huroktesztelés által talált gyakori hibák
A ciklustesztelés ugyanazt a kis hibacsaládot találja, ezért érdemes minden alkalommal lefuttatni a fix iterációs számlálásokat.
- Egyenkénti határok — egy feltétel, amelyet így írnak fel: < ahol <= ez volt a szándékolt, így a ciklus eggyel kevesebb vagy eggyel több menetet fut le.
- Nem inicializált számlálók vagy akkumulátorok — egy összeg, amely egy korábbi hívásból megmaradt értéket tartalmaz.
- Végtelen hurkok — egy kilépési feltétel, amelyet a ciklus törzse soha nem tud teljesíteni, mivel a számláló csak néhány ágon frissül.
- Kihagyott ciklus feltételezései — a ciklus utáni kód, amely beolvassa azt a változót, amelyet a ciklus törzsének be kellett volna állítania, és amely akkor hibás, ha a ciklus nulla alkalommal fut le.
- Kapacitás- és teljesítményhibák — egy ciklus, amely helyes, de minden menetben újraolvassa az adatbázist, így a költség az iterációk számával növekszik.
- Beágyazott hurok interferencia — egy belső ciklus, amely újrafelhasználja a külső ciklusszámlálót, és csendben megváltoztatja a külső iterációs számlálót.
Mivel minden hiba egy adott iterációs számhoz tartozik, az itt felmerült hibák könnyen reprodukálhatók és gyorsan javíthatók a magasabb iterációs számokon talált hibákhoz képest. tesztszintek.
Huroktesztelés vs. más vezérlési struktúra tesztelési technikák
A huroktesztelés a szabályozási struktúrák családjának egyik tagja, és könnyen összetéveszthető a szomszédos technikákkal. Az alábbi táblázat elkülöníti őket.
| Technika | Mit céloz meg? | Tipikus lefedettségi cél |
| Hurok tesztelése | Cikluskonstrukciók: belépés, iterációk száma és kilépés | Nulla, egy, tipikus és határ iterációszám minden ciklushoz |
| Állapotvizsgálat | Logikai kifejezések a döntéseken belül | Minden feltétel igaznak és hamisnak is kiértékelésre került |
| Adatfolyam tesztelése | Az egyes változók definíciója és használata | Minden használható definíciópárt legalább egyszer gyakoroltak |
| Alapút tesztelés | Független útvonalak a vezérlési folyamatgráfon keresztül | Az útvonalak száma megegyezik a ciklomatikus komplexitással |
A gyakorlatban ezek a technikák inkább kiegészítik egymást, mintsem versengenek. Ciklomatikus komplexitás megmondja, hogy hány független útvonal létezik, a bázisútvonal-tesztelés lefedi ezeket, és a ciklustesztelés ezután hozzáadja azokat az iterációs számokat, amelyeket az útvonal-lefedés önmagában nem kényszerítene ki. Mindegyik dinamikus tesztelés tevékenységek, mivel a kódot végre kell hajtani az eredmények megfigyeléséhez.
A huroktesztelés korlátozása
A technikának valódi határai vannak, és ezek ismerete megakadályozza a túlzott befektetést.
- A hurokhibák többnyire alacsony szintű szoftverekben jelennek meg
- A huroktesztelés során azonosított hibák nem túl finomak
- Sok hibát az operációs rendszer észlelhet, mivel memóriahatár-sértéseket, észlelhető mutatóhibákat és hasonló hibákat okozhatnak.
- Minden egyes ciklus osztályának azonosítása és ennek megfelelő tesztelése időigényes, amit nehéz indokolni a kevés kockázattal járó kódutakon.





