Boundary Value Analysis – A Black Box Testing Technique
Azt már tudjuk, hogy a fekete dobozos tesztelés a rendszer validálását jelenti a belső felépítés ismerete nélkül. Beszéltünk az ekvivalencia partícionálás buktatóiról is, és arról, hogy hogyan vallhatnak kudarcot a partíció határainál. Ha még nem olvasta az ekvivalencia partícionálásról szóló cikkünket, nagyon ajánlom, hogy olvassa el, mielőtt ezt a cikket elolvassa. Ebben a cikkben egy másik fekete dobozos tesztelési technikát, a határérték-elemzést fogjuk tárgyalni. Azt is megnézzük, hogyan egészíti ki ez a technika az ekvivalenciapartícionálást.
- Mi az a határérték-elemzés?
- Hogyan kell határérték-elemzést végezni?
- Határérték-elemzés ekvivalenciapartícionálással
- A határérték-elemzés buktatói
Mi a határérték-elemzés?
A határérték-elemzés (BVA) alapja a határok vizsgálata a partíciókban (Emlékezzünk az ekvivalenciapartícionálásra !). A BVA az ekvivalencia partícionálás kiterjesztése. Ez azonban csak akkor használható, ha a partíció rendezett, numerikus vagy szekvenciális adatokból áll. A partíció minimális és maximális értékei a partíció határértékei.
Láttuk, hogy a partíció határainál nagy az esélye a hibák megtalálásának (pl. Egy fejlesztő >10 helyett >= 10-et használ egy feltételhez). Az ekvivalenciapartícionálás önmagában nem volt elegendő az ilyen hibák felderítéséhez. Ezért felmerült az igény egy olyan új technika meghatározására, amely képes a partíció határainál lévő anomáliák észlelésére. Így került a képbe a határérték-elemzés.
A határérték-elemzés minden vizsgálati szinten elvégezhető, és elsősorban számok, dátumok és időpontok tartományára alkalmazható.
Hogyan kell határérték-elemzést végezni?
Most, hogy már van némi elképzelésünk a határérték-elemzésről, értsük meg, hogyan lehet tesztfeltételeket levezetni ezzel a technikával. Ugyanarra a tornatermi formájú példára fogunk hivatkozni (lásd az ekvivalencia partícionálásról szóló cikkünket), ahol be kell adnunk az Age-t.
A határérték-elemzés első lépése az ekvivalencia partícionálás létrehozása, amely az alábbiak szerint nézne ki.
Most koncentráljunk az érvényes partícióra, amely 16-60 között mozog. A határok azonosításához 3 lépésből álló megközelítést alkalmazunk:
- Ez a partíciós osztály pontos határértékének azonosítása – ami 16 és 60.
- Meghatározzuk azt a határértéket, amely eggyel kisebb a pontos határértéknél – ami 15 és 59.
- Megkapjuk azt a Határértéket, amely eggyel több, mint a pontos Határérték – ami 17 és 61.
Ha mindegyiket kombináljuk, akkor az alábbi kombinációkat kapjuk az Életkori kritériumok Határértékéhez.
Érvényes határfeltételek : Kor = 16, 17, 59, 60
Érvénytelen peremfeltételek : Age = 15, 61
Egyszerűen látható, hogy az érvényes peremfeltételek az érvényes partíciós osztályba, az érvénytelen peremfeltételek pedig az érvénytelen partíciós osztályba tartoznak.
Kitalálná, hogy miért nem a 16,1, 15,9, 59,9 és 60,1 értékeket használtuk a határértékek növelési és csökkentési értékeiként? Ez egy olyan fogalom, amelynek a legtöbb cikkben nincs elegendő magyarázata. Ezért vegyünk egy másik példát a magyarázathoz. Tegyük fel, hogy Ön beírja a súlyát egy weboldalon. A súlya és magassága alapján a webhely megmondja a testtömegindexet (BMI). A súlybeviteli mezőbe 30 és 150 kg közötti értékeket adhat meg. A súlybeviteli mező csak természetes számokat, azaz pozitív egész számokat enged meg!
Ebben az esetben, ha ugyanezzel a módszerrel hozza létre a határokat – a végeredmény:
Érvényes peremfeltételek : Age = 30, 31, 149, 150
Invalid Boundary Conditions : Age = 29, 151
Most tekintsük ugyanazt a forgatókönyvet, de a súlybeviteli mezőben legfeljebb 1 tizedesjegyig terjedő tizedes számok szerepelhetnek. Ebben az esetben a peremfeltételek a következők lesznek:
Érvénytelen peremfeltételek : Age = 30, 30.1, 149.9, 150
Invalid Boundary Conditions : Age = 29.9, 150.1
Láttad a különbséget? A minimálisan elfogadható értéket vesszük a határ mindkét oldalán. Ha 30,01-nek vesszük az értéket, akkor a végén két tizedesjegyre teszteljük a szoftvert, holott a követelmény egy tizedesjegy. Ez egy külön tesztfeltétel, és nem szabad összekeverni a Határértékkel.
A Határérték-lefedettség mérése egy partíció esetében úgy történhet, hogy a tesztelt határértékek számát elosztjuk az azonosított határértékek teljes számával.
Határérték-elemzés egyenértékűségpartícionálással
Most már elég jól megértettük a Határérték-elemzést. Lássuk tehát, hogyan kombinálhatjuk azt az ekvivalenciapartícionálással, hogy megkapjuk a tesztfeltételek teljes halmazát.
Visszatérve korábbi példánkhoz, nézzük át újra a diagramot.
A tartomány 16-tól 60-ig terjed, és a Határérték-elemzés a következő tesztfeltételeket adja: 15, 16, 17, 59, 60, 61. Ha jól megnézzük, nem gondoljuk, hogy az érvényes ekvivalencia partíciót már lefedtük a 17, 59, és az érvénytelen ekvivalencia partíciót a 15 és 61 lefedésével? Végül is az ekvivalencia partícionálás azt mondja, hogy 16-60 közötti számot kell választanunk az érvényes partícióhoz, és 16-nál kisebb vagy 60-nál nagyobb számot az érvénytelen partícióhoz. Tehát, ha a határérték már lefedte az ekvivalencia partícionálást, miért van szükségünk a partícionálásra, mint külön technikára? Ez egy olyan fogalom, amely a legtöbb ember számára nem világos, és nem sok cikk magyarázta el világosan.
A határérték elméletileg valóban lefedte az ekvivalencia partícionálást, de még mindig szükségünk van partícionálásra. Ha csak a Határértéket alkalmazzuk, és az megbukik, akkor soha nem fogjuk tudni, hogy az élfeltétel bukott meg, vagy az egész partíció bukott meg. Értelmezzük ezt egy példa segítségével. Folytatva a tornatermi űrlapunkat, tegyük fel, hogy a fejlesztő az alábbi logikát írta :
If (age < = 17 ) Then Don’t allow Gym Membership
If (age > 60) Then Don’t allow Gym Membership
Ha megnézzük a logikát, rájövünk, hogy a logikának If (age <17) kellett volna lennie, de a fejlesztő rossz = jelet tett hozzá. Azt is észrevetted, hogy a teljes érvényes partíció logikája hiányzik? If (age>=16 and age <= 60 ) Then allow Gym membership !
Ha csak a 17-es határfeltétel értékét használjuk, akkor a teszt végrehajtása sikertelen lesz. Azt azonban nem fogja megmondani, hogy a peremfeltétel bukott-e meg, vagy az egész partíció bukott meg. Ezért fontos, hogy egyenértékű partícióértéket használjunk, ami nem határérték. Ebben az esetben, ha a 20-as értéket használjuk, a végrehajtás sikertelen lesz. Ez egyértelműen jelzi, hogy a fejlesztő elmulasztotta a teljes partíció végrehajtását.
Ha tehát kombináljuk a határértéket és az ekvivalencia partíciót, akkor a tesztfeltételeink a következők lesznek :
Érvényes határfeltételek : Age = 16, 17, 59, 60
Invalid Boundary Conditions : Age = 15, 61
Valid Equivalence Partition : Age = 25
Invalid Equivalence Partition : Age = 5 , 65
Pitfalls of BVA
A határérték és az Equivalence partícionálás alkalmazása után bátran állíthatjuk, hogy megkaptuk az összes szükséges lefedettséget? Sajnos ez nem ilyen egyszerű! A határérték- és az ekvivalenciapartícionálás feltételezi, hogy az alkalmazás nem engedi meg, hogy más karaktereket vagy értékeket adjunk meg. Ilyen karakterek, mint például a @ vagy negatív értékek, vagy akár betűjelek, nem lesznek megadhatók. Ez a feltételezés azonban nem minden alkalmazásra érvényes, és ezeket mindenképpen ki kell próbálni, mielőtt azt mondhatnánk, hogy a mező értéke teljes mértékben működik.
Ezeken kívül lehetnek olyan helyzetek, amikor a beviteli érték egy másik érték döntésétől függ. Pl. ha a tornatermi űrlapon van egy másik mező Férfi és Nő, és a korhatár ettől a választástól függően változik. A határérték önmagában nem képes kezelni az ilyen változásokat, és ez elvezet minket egy másik fekete doboz technikához, a döntési táblázat teszteléséhez. Ezt a következő cikkünkben részletesen tárgyaljuk. Maradjanak velünk!