Software tesztelés Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék Ficsor Lajos
Software tesztelés
SWTESZT /
1
A tesztelés feladata Két alapvető cél • rendszerben található hibák felderítése • annak ellenőrzése, hogy a rendszer a felhasználó céljainak megfelelően működik Boehm vezette be az alábbi kifejezéseket: • Verifikáció: jól építettük-e fel a rendszert? • Validáció: a jó rendszert építettük-e fel? Ficsor Lajos
Software tesztelés
SWTESZT /
2
Verifikáció • a rendszer implementációs hibáinak felderítése • a rendszer a specifikációjának megfelelően működik-e A verifikáció során helyesnek bizonyult software még nem biztos, hogy a felhasználó számára megfelelő (bár technikai értelemben tökéletes).
Ficsor Lajos
Software tesztelés
SWTESZT /
3
Validáció A rendszer használhatósága a felhasználó szempontjából. Ennek legfontosabb összetevői: • Valamennyi szükséges funkciót megvalósítottunk? • A funkciók a felhasználó céljai szerint működnek? • A rendszer teljesítménye a valós körülmények között megfelelő? Ficsor Lajos
Software tesztelés
SWTESZT /
4
A tesztelés fajtái hibakeresõ tesztelés (defect testing) • a rendszerben fellelhető hibák megtalálása és kijavítása statisztikai tesztelés (statistical testing) • A működés megbízhatóságának ellenőrzése • Olyan tesztadatok, amelyeknek gyakorisága megfelel a rendszer gyakorlati használata közben keletkező adatoknak. • Hibás adatokat és hibás kezelés ellenőrzése! Ficsor Lajos
Software tesztelés
SWTESZT /
5
A tesztelési folyamat Részegység teszt (unit test) • Egy implementációs egység (pl. függvény) önmagában megfelelően működik-e. Modul teszt • Egymástól függő modulok együttműködése megfelelő-e?
Ficsor Lajos
Software tesztelés
SWTESZT /
6
A tesztelési folyamat (folyt.) Alrendszer teszt • Másoktól függetlenül implementálható részrendszerek. • Egy részrendszeren belül az azt alkotó modulok közötti együttműködés tesztelhető.
Ficsor Lajos
Software tesztelés
SWTESZT /
7
A tesztelési folyamat (folyt.) Elfogadási teszt (acceptance testing) • Célja a rendszer elfogadtatása • Annak bizonyítása, hogy a rendszer a felhasználó igényeinek megfelel. • Lehetőleg valós adatok, valós környezet és valós felhasználó • Kimutathatja, hogy – a követelmény analízis hiányos volt – A rendszer nem felel meg minden hatékonysági követelménynek. Ficsor Lajos
Software tesztelés
SWTESZT /
8
A tesztelési folyamat (folyt.) Szokásos kifejezések: • komponens teszt: az első két fázis • integrációs teszt: a következő két fázis Kereskedelmi termék esetén: • alfa teszt: elfogadási teszt, de a fejlesztő cégen belül végrehajtva • béta teszt: a leendõ felhasználók egy korlátozott csoportja teszteli a rendszert, és a hiányosságokat jelenteni a fejlesztőknek Ficsor Lajos
Software tesztelés
SWTESZT /
9
Tesztelési terv • A tesztelés költséges része a software fejlesztésnek, ezért kellő tervezést igényel. • A teszteléshez szükséges emberi és hardwaresoftware erőforrásokat a idõben biztosítani kell. • Nagyobb rendszerek esetén legalább az integrációs teszthez független tesztelõ csoport kell • A tesztelési fázisok terveinek és a fejlesztési fázisok kapcsolata: Ficsor Lajos
Software tesztelés
SWTESZT /
10
Tesztelési terv (folyt.)
Ficsor Lajos
Software tesztelés
SWTESZT /
11
Tesztelési stratégiák Inkrementális megközelítés ajánlott. • Néhány elemet (modult vagy részrendszert) kombinálunk • Olyan teszteket-futtatunk, amelyek csak az összeépített elemeket igénylik • Ha minden teszt sikeres, újabb elemeket teszünk hozzá a rendszerhez. • További teszteket futatunk, amelyek az új elemek meglétét is igénylik Ficsor Lajos
Software tesztelés
SWTESZT /
12
Tesztelési stratégiák (folyt.) • A fenti iterációt addig folytatjuk, amíg a teljes rendszert összeépítettük, és azon valamennyi teszt sikeresen lefutott. Példa: A (rész)rendszer elemei
Futatott tesztek
A, B
T1, T2, T3
A, B, C
T1, T2, T3, T4, T5
A, B, C, D
T1, T2, T3, T4, T5, T6
Ficsor Lajos
Software tesztelés
SWTESZT /
13
Top-down tesztelési stratégia • A hierarchia legfelső szintjén álló elem teszteléséhez az eggyel lejjebb álló elemek viselkedését és iterface-ét szimuláló ideiglenes elemek (stub) szükségesek. • Ha a teszt sikeres, az ideiglenes elemeket a valódiakkal helyettesítjük, az általuk használtakat pedig újabb ideiglenes elemekkel szimuláljuk. Ficsor Lajos
Software tesztelés
SWTESZT /
14
Top-down tesztelési stratégia (folyt.) Előnyei: • Jól illeszkedik a top-down programfejlesztési módszerekhez. • Egy modul a megírása után rögtön tesztelhető. • Az esetleges tervezési hibák korán kiderülnek, és idejében orvosolhatók. • Viszonylag korán rendelkezésre áll egy korlátozott képességű rendszer : validáció Ficsor Lajos
Software tesztelés
SWTESZT /
15
Top-down tesztelési stratégia (folyt.) Hátrányai: • Bonyolult lehet a szimulációt végző ideiglenes rutinok megírása. • A hierachia felsõ szintjein álló modulok sokszor nem szolgáltatnak outputot. A teszteléshez külön eredmény-generáló "betétek" szükségesek.
Ficsor Lajos
Software tesztelés
SWTESZT /
16
Bottom-up tesztelési stratégia • Először a legalsó szinten levő modulokat teszteljük, majd a hierarchiában felfelé haladunk. • Ehhez a felső szinteket szimuláló tesztelési környezetet (test driver) kell írni.
Ficsor Lajos
Software tesztelés
SWTESZT /
17
Fonal tesztelés (thread testing) • Ha a rendszer együttműködő processzekből épül fel. • Egy külső esemény bekövetkezése okozhatja, hogy egy processztől átkerüljön a vezérlés egy másikhoz. • Az események időbeli lefolyása is befolyásolja a vezérlés átadást. • Az ilyen rendszerek tesztelése nehéz és hosszadalmas. Ficsor Lajos
Software tesztelés
SWTESZT /
18
Fonal tesztelés (folyt.) • Elõször az egyes processzeket önmagukban kell tesztelni. • Ezután kiválasztunk a rendszerbõl egy processz-sorozatot. – A sorozat kezdetén álló processz egyenként megkap minden olyan eseményt, amelyre reagálnia kell. – Ha már egyenként minden eseményre jól viselkedett a processz sorozat, egyidőben több lehetséges eseményt tesztelünk. Ficsor Lajos
Software tesztelés
SWTESZT /
19
Fonal tesztelés (folyt.) • A fenti eljárást meg kell(ene) ismételni minden lehetséges processz-sorozatra, ami irreális vállalkozás ezek nagy száma miatt. • A tesztelés általában a legfontosabb lehetséges fonalakra kell korlátozódjon.
Ficsor Lajos
Software tesztelés
SWTESZT /
20
Terhelési teszt (Stress testing) • A rendszerekre olyan tesztet kell kidolgozni, amely az előírás szerinti terhelést képes produkálni. • Ezután a terhelést emelik, amíg a rendszerben hiba keletkezik. – Fontos a keletkezett hiba jellege: az esetek többségében ez semmiképpen sem lehet adatvesztés, inkább a "normális" munkamenet felfüggesztése. Ficsor Lajos
Software tesztelés
SWTESZT /
21
Terhelési teszt (folyt.) • Lényeges, hogy a tesztadatok a lehetséges tranzakciók áltagos és szélsőséges eseteit is tartalmazzák. • Fontos szerepet játszik a terheléses vizsgálat az osztott rendszerek tesztelésében
Ficsor Lajos
Software tesztelés
SWTESZT /
22