Gyakorlati alapok II.

A szoftverfejlesztés

 

Tesztelés

 

Az alábbi fejezet Sallay András informatikatanár oktatási anyagára támaszkodik (www.szit.hu)

 

Bevezetés
Teszteset

Tesztelési technikák

Tesztelési tevékenység

 

Bevezetés

 

Az elvégzett szellemi vagy anyagi termék tesztelése alapvető fontosságú az ipari termelésben. A tesztelés elsődlegesen a termék előzetes kipróbálását jelenti. Ennek során azt ellenőrizzük le, hogy a termék hozza-e az előírt specifikációt, azaz teljesíti-e az előzetes elvárásokat. Az autók töréstesztje például egy ilyen fajta előtesztelés biztonsági szempontok alapján.

 

Ugyanez a helyzet szoftverek esetében is. A szoftverek minőségének biztosítása érdekében azokat folyamatosan tesztelni szükséges, mielőtt átadjuk az ügyfelünknek végső használatra. A teszteléssel megpróbáljuk a szoftver hibáit felderíteni és megszüntetni.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Minden hiba megtalálása lehetetlen vállalkozás, de mindent meg kell tennünk, hogy a szoftverben minél kevesebb hiba maradjon.

A tesztelés során bemenő adatokkal látjuk el az adott szoftvert, majd figyeljük a visszaadott eredményeket, ezzel detektálva a hibákat. A keresett hibák halmazát nevezzük hibamodellnek.

 

Manapság a tesztelés már oly fontos, meghatározó és bonyolult munkatevékenység, hogy külön elsajátítandó szakmát alkot.

 

Teszteset


www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

A tesztelés során a megadott megfelelő bemenő és kimenő adatokat, amelyek valószínűleg még felfedetlen hibákat mutatnak meg, jó tesztesetnek nevezzük.

Alapelvek

Nézzünk erre egy jellemző példát!


A feladat egy háromszög területének kiszámítása. A képlet a következő:

 

Tháromszög = (alap * magasság) / 2


Lehetséges bemenő adatok:

Ekkor a kimenő adat:


(30 * 35) / 2 = 525

 

Az elvárt végeredmény immanens módon tartalmazza az érvényes és érvénytelen kimeneti adatokat:

Tesztelési technikák

 

Alapvetően kétféle tesztelési technikát különböztetünk meg:

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Statikus tesztelésről beszélünk, amikor nem fordítjuk, nem futtatjuk a programot, csak a forráskódot vizsgáljuk (száraztesztnek nevezik, ha a tesztelés fejben történik). Dinamikus tesztelés esetén a forráskódot és futó programot is vizsgáljuk.

 

www.informatika-programozas.hu

Forrás - Source: www.szit.hu

 

Statikus tesztelés

A statikus tesztelés lehet szimplán a kód ellenőrzése. Készíthetünk kereszthivatkozási táblázatokat vagy tartalmilag ellenőrizzük forráskódot. A forráskódban ellentmondásokat kereshetünk: például felhasználatlan objektumokat vagy felhasználatlan változóértékeket.

 

www.informatika-programozas.hu

Forrás - Source: www.szit.hu

 

A kódellenőrzés alkalmával összehasonlítjuk a megvalósítandó algoritmust a megírt kóddal. Az egyik leghatékonyabb módszer, ha egy avatatlan személynek elmagyarázzuk a kódunk működését sorról sorra.

 

www.informatika-programozas.hu

 

Forrás - Source: www.szit.hu

 

A kódot tartalmilag is ellenőrizhetjük:

 

www.informatika-programozas.hu

 

Forrás - Source: www.szit.hu

 

A tartalmi ellenőrzés során a következő hibalehetőségekre kell figyelnünk:

Dinamikus tesztelés
A dinamikus tesztelés során fordítunk és tesztelünk, valamint a fordítótól eltérő eszközöket is használhatunk.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!
 

Ha a forráskód rendelkezésre áll, akkor fehér-dobozos tesztről, ha nem, fekete-dobozos tesztről beszélünk.

 

Fehér-dobozos tesztelés
A fehér-dobozos tesztet (white box) a forráskód alapján készítjük, ennek során közvetlenül, a forráskód segítségével hozzáférünk a kódstruktúrákhoz és a konkrét megvalósításhoz. Jellemzően a fejlesztők végzik.

 

www.informatika-programozas.hu

Forrás - Source: www.szit.hu

 

A tesztelésnek a következő céljai lehetnek:

A következő struktúrákat teszteljük:

A tesztelés során felmerül a lefedettség kérdése. Ez alatt azt értjük, hogy a struktúrák hány százalékát tudjuk tesztelni a meglévő tesztekkel.

Fekete-dobozos tesztelés
A fekete dobozos teszt esetén (black box) nem férünk hozzá a forráskódhoz, a specifikáció alapján tesztelünk. Az ilyen teszteket jellemzően nem a fejlesztő csapat végzi.

A fekete dobozos módszerek:

Ekvivalencia-osztályok keresése
Keressük a jó teszteseteket, azaz olyan bemenő adatokat, amelyek minél több feltételnek felelnek meg. Keresnünk kell valamilyen szempontot, amely alapján csoportosíthatjuk a bemenő adatokat. Az így kialakított csoportokat nevezzük ekvivalencia-osztálynak. Ilyen módon lényegében olyan tesztesetet keresünk, amely jellemzőek az adott csoportra. Például: egy ilyen csoportból bármely elemet kiválasztva, ha hibát kapunk, a csoport egy másik elemét kiválasztva szintén hibát kell kapnunk. Ennek igaznak kell lennie az ellenkezőjére is: ha a csoport egy elemére megfelelő eredményt kapunk, akkor a valószínűleg a többire is.

Ha bemenő adatok egy értéktartományt alkotnak, kétféle ekvivalencia osztályunk lehet:

Lehetséges, hogy abban az esetben is érvényes ekvivalencia-osztályról beszéljünk, ha a bemenő adatok mennyiségét vizsgáljuk. Például 6 adat még érvényes, de ha 6-nál több vagy kevesebb már érvénytelen ekvivalencia-osztályt alkot.

Lehetséges továbbá az is, hogy érvényes ekvivalencia-osztályt bemenő adatok egy jellemző tulajdonsága alkosson, például 2 hatványai. Ekkor az érvényes ekvivalencia-osztály a 2, 4, 8, 16, 32, 64, stb., érvénytelen a többi szám.


Határeset-elemzés
A határeset-elemzés során az ekvivalencia-osztály határán lévő elemeket vizsgáljuk. Ez a megközelítés tekinthető az ekvivalencia osztály kiegészítésének. Ha az érvényes tartomány 0 és 10 közé esik (0 <= n <= 10), akkor a vizsgálandó érvényes adatok 0, 10, az érvénytelen vizsgálandó adatok -1 és 11.
Adott darabszám esetén, ha pontosan 6 adat a bemenet, akkor érvényes adatként vizsgálunk 6 darab adatot, érvénytelenként 5 és 7 darab adatot.

 

Ekvivalencia-particionálás

Más néven Equivalence partitioning (Equivalence Class Partitioning - ECP). Egy szoftvertesztelési technika, ahol a bemenő adatokat ekvivalencia-osztályokba soroljuk, vagyis csoportosítjuk. Az egy ekvivalencia-osztályba sorolt hibák ugyanazon hibás eredményt kell szolgáltatniuk. 2 típusú ekvivalencia osztályt kell keresnünk:

  • érvényesek,

  • érvénytelenek a bemeneti adatok.

A tesztek szint szerinti csoportosítása

  • komponensteszt,

  • integrációs teszt,

  • rendszerteszt,

  • átvételi teszt.

Összefoglalás

 

www.informatika-programozas.hu

 

Forrás - Source: www.szit.hu

 

Tesztelési tevékenység

 

A tesztelési folyamatot a tervezéstől a végeredményig a következő lépésekben foglalhatjuk össze:

  • tesztterv készítése,

  • végrehajtás,

  • kilépési feltételek vizsgálata - azaz megnevezzük azon feltételeket, ahol befejezhetjük a tesztelést,

  • eredmények értékelése,

  • jelentés készítése.

www.informatika-programozas.hu

 

Forrás - Source: www.szit.hu