Szoftvertesztelés

Download Report

Transcript Szoftvertesztelés

Szoftvertesztelés
Nincs tökéletes program, csak még nem találtuk meg a hibát!
A tesztelés a programrendszer működési
helyességének és hatékonyságának
vizsgálati szempontjait, feladatait és a
munkavégzés módját meghatározó
tevékenységek összességgének
szisztematikus végrehajtása.
A szoftvertermékek működését két különböző
vonatkozásban kell vizsgálni:
•verifikáció
•validáció
• A verifikáció az a folyamat, amelyben
igazolást nyer az a tény, hogy a szoftver egy
fejlesztési fázisban teljesíti mindazokat a
követelményeket, amelyeket az előző
fázisban specifikáltak.
• A validáció a szoftvernek olyan irányú
vizsgálata és kiértékelése, amiben eldől,
hogy a termék minden szempontból teljesítie a felhasználói követelményeket.
Egy biztonságkritikus rendszer esetében
például a következőket kell bizonyítani:
•funkcionálisan megfelelő működés
•megfelelő teljesítmény
•a biztonsági követelmények kielégítése.
A verifikáció és validáció együtt kezelendő, teljes összhangban. Ezt
a tényt a széles körben elterjedt „V & V” eljárás elnevezés is kifejezi.
A két fogalmat azonban néha összekeverik, annak ellenére, hogy
lényegesen eltérő tevékenységeket jelölnek.
Tesztelési folyamat
Te s zte lé s i
fela d a to k
in te g rá c ió s é s
re n d s ze rte s zt
fo rrá s k ó d o k
tes zte lé se
-
fu n kcio n a litá si teszt
stru ktú ra te szt
ha tá rérté kte szt
útvo n a lte szt
-
fu n kcio n a litá steszt
te ljesítm é ny te szt
m e g b ízha tó sá g i teszt
stre sszte szt
kon fig u rációs te szt
te le p íté si teszt
b o tto m -up in te g rá ció
felh a s zn á ló
tes zte k
-
alfa te szt
bé ta te szt
pilotte szt
keze lh e tő sé gi te szt
elfo g a d á si te szt
A három csoport feladata:
• A forráskód-teszt a forrásprogramok
verifikációs ellenőrzésére szolgál (modultesztnek is nevezik).
• Az integrációs teszt a modulok, illetve a
magasabb szintű programegységek
egységes működési képességét vizsgálja.
• A felhasználói tesztekkel a termék
alkalmazói vizsgálják a rendszert
A forráskód-teszt folyamán a programozóknak az
alábbi tesztelési feladatokat kell végrehajtaniuk:
•Az interfészteszt vagy blackbox teszt (feketedoboz-teszt) feladata
annak vizsgálata, hogy a program egy adott bemenetre az elvárt
kimenetet szolgáltatja-e. A teszteléshez olyan inputadatokat kell
választani, melyekkel nagy valószínűséggel kiszűrhetők a
programhibák. A tesztelt elem akkor fogadható el, ha a tesztesetekben
specifikált eredményt adja.
•A struktúrateszt vagy whitebox teszt (fehérdoboz teszt) a programstruktúra megvalósításának korrektségét vizsgálja. A tesztelés
leellenőrzi az utasítások végrehajtását. Úgy kell összeállítani a
teszteseteket, hogy minden utasítás legalább egyszer végrehajtódjon.
Azt a mértéket, amely kifejezi, hogy minden utasítás végrehajtásra
kerül-e, a teszt lefedettségi mértékének nevezik.
•Az útvonalteszt szorosan kapcsolódik a struktúrateszthez. Célja olyan
tesztesetek összeállítása és végrehajtása, amellyel a program összes
útvonala bejárható, vagyis a párhuzamos műveletek, elágazások és a
szinkronizáció teljes egységben ellenőrizhető.
•A határesetek tesztje a program viselkedésének vizsgálata
szélsőséges körülmények, szokatlan szituációk, szándékosan generált
hibák környezetében. A teszt alkalmas a hibadiagnosztizálási és –
javítási, valamint a kivétel-kezelési képességek felmérésére.
Integrációs teszt
A tesztet két irányból célszerű elvégezni:
•
A top-down integrációs teszt a funkciók hierarchiájának
legmagasabb szintjéről (főprogram) indul ki, és végighalad az
összes lehetséges ágon, kontrollálva annak működését, célja a
rendszer vezérlési folyamatainak ellenőrzése. Ebben a
szemléletben a
–
a vezérlőmodul teszt-drájverként működik, és ellenőrzi az
összes almodul működését,
–
az egyes almodulok ellenőrzése a már ellenőrzöttek
helyettesítésével történik,
–
a tesztelés folyamata a már beintegrált modulok alapján zajlik,
–
a teszt akkor fejeződik be pozitív eredménnyel, ha az összes
útvonal minden modulja hibátlanul viselkedett.
•
A bottom-up integrációs teszt során a modulok
együttműködésének vizsgálatát alulról felfelé, az elemi
modulokból kiindulva végezzük, és a különböző
hierarchia-útvonalakon keresztül eljutunk a
legmagasabb szintre, a rendszer szintjére. Az
ellenőrzést az alábbi lépések szerint célszerű végezni:
–
–
–
az egymáshoz tartozó legalsó szintű modulokat önálló
alfeladat vezérlésére képes egységekbe (cluster) kell
integrálni,
ellenőrizni kell a modulok I/O információit tesztprogram
alkalmazásával,
a tesztelő program eltávolítása után egy szinttel feljebb meg
kell ismételni az ellenőrzést egészen a legmagasabb szintig.
Az integrációs teszt legmagasabb szintje a rendszerteszt, mely a
fejlesztett alkalmazás integritását teljes egészében vizsgálja. A
legfontosabb feladatok az alábbiak:
•Funkcionális tesztelés
– Installációs teszt
A rendszer telepítésének tesztelése különböző eshetőségek (különböző
hardver-szoftver konfigurációk, feltételek) esetén.
– Általános funkcionális teszt
A rendszer működésének vizsgálata normál működés esetén. A teszt során
ellenőrizzük, hogy a rendszer funkciói az elvártnak megfelelően működnek,
a teszt során a kívánt eredményeket kapjuk.
– Szélsőérték funkcionális teszt
A rendszer működésének vizsgálata szélső bemeneti/kimeneti értékek
esetén. A teszt során ellenőrizzük, hogy a rendszer funkciói az elvártnak
megfelelően működnek, a teszt során az elvárt eredményeket kapjuk.
– Konfigurációs teszt
A rendszer funkcionalitásának tesztelése eltérő hardver/szoftverfeltételek
mellett.
– Mennyiségi teszt
A rendszer funkcionalitásának tesztelése nagy mennyiségű bemenő,
kimenő, ill. adatbázis adat esetén.
-Biztonsági teszt
A szoftver jogosultsági rendszerének tesztelése ellenőrzi, hogy a
rendszer adataihoz csak az elvárt felhasználók férnek-e hozzá
• Teljesítménytesztelés
– Általános teljesítményteszt
A rendszer működésének sebességét összevetjük az elvárt
értékekkel. A teszt segítségével fényt deríthetünk a rendszernek
a sebesség szempontjából kritikus pontjaira, szűk
keresztmetszeteire.
– Referencia teljesítményteszt
A rendszer működésének sebességét egy másik, a tesztelt
rendszerhez hasonló funkcionalitású rendszer sebességével
vetjük össze.
– Terheléses teljesítményteszt
A rendszer sebességének vizsgálata különböző
munkaterhelések esetén. A teszt során rögzítjük a terhelés
mértékét (pl. felhasználók, tranzakciók száma), valamint a
rendszer működési sebességét az adott terhelés alatt.
– Konkurencia teljesítményteszt
A rendszer teljesítményének vizsgálata abban az esetben, ha a
rendszernek többszörösen kell ugyanahhoz az erőforráshoz (pl.
ugyanahhoz az adatrekordhoz) hozzáférnie.
– Sokk teljesítményteszt
A rendszer működésének vizsgálata extrém körülmények között.
Ezek az extrém körülmények lehetnek a tervezettnél nagyobb
terhelések, kevés memória/erőforrások, hardver problémák,
áramszünet, stb.
Felhasználói tesztek
• A fejlesztés alapvető célja a felhasználói
igények kielégítése, ezért fontos, hogy a
felhasználót is bevonjuk a szoftver
minősítésének folyamatába.
• Ha erre mód van, oda kell adni a rendszert
rövid próbaüzemre a leendő
üzemeltetőnek. Az éles próbaüzemben
hamar kiderülhetnek a valós adatokkal
tesztelt rendszer hibái, hiányosságai, és
ezek még időben kijavíthatóak.
A felhasználó által végezhető tesztek lehetséges
típusai:
• Az alfa-, bétatesztek félig, vagy majdnem kész szoftverek
kipróbálását szolgálják. A felhasználók a szoftver kipróbálása
közben/után jelzik a fejlesztőknek a próbaüzem közben
előforduló problémáikat. Az alfateszt esetében az alkalmazás
még nincs teljesen kidolgozva, a bétateszt során már egy
korrigált alfaverzió újrapróbálásáról beszélhetünk.
• A kezelhetőségi/támogatási tesztekben a felhasználók
élesben használják a fejlesztők által már tesztelt
programrendszert, és meg tudják állapítani, hogy mennyiben
könnyen kezelhető, mennyiben támogatja, és könnyíti meg
munkájukat.
• Az elfogadási teszt célja annak megállapítása, hogy a
szoftverrendszer a körülményeknek megfelelően működik-e. A
rendszer működésének ellenőrzése nem szimulált
tesztadatokkal történik, hanem valós környezetben tényleges
adatokkal. Evvel a teszttel feltárhatóak azok a működésbeli
problémák, amelyeket az informatikai szakemberek a
megbízó szakterületének területén való jártatlanságuk hiánya
miatt nem fedeztek fel.