Software tesztelés Miskolci Egyetem Általános Informatikai Tanszék 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? 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). 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ő? 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! 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? 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ő. 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. 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 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: Software tesztelés SWTESZT / 10 Tesztelési terv (folyt.) 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 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 A, B A, B, C A, B, C, D A, B, C, D Futatott tesztek T1, T2, T3 T1, T2, T3, T4, T5 T1, T2, T3, T4, T5, T6 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. 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ó 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. 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. 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. 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. 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. 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. 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 Software tesztelés SWTESZT / 22