Tesztelés¶
Miért tesztelünk? A tesztelés célja, hogy a termékben meglévő hibákat időben megtaláljuk, ezzel növeljük a termék minőséget megbízhatóságot.
Érdemes a tesztelést az életciklus minél korábbi szakaszában elkezdeni, hiszen minél hamarabb megvan a hiba, annál jobb.
A tesztelés teljes és átfogó megismerésére a tárgy keretein belül nincs lehetőség, viszont a tesztelés alapjait mindenképpen érdemes tisztázni. Első körben a szoftver használata szerinti tesztelés esetén megkülönböztetünk ún. statikus és dinamikus tesztelést.
-
Statikus: nem kerül sor a szoftver futtatására, manuálisan vizsgáljuk a szoftvert, pl. "fejben futtatjuk a kódot" és hibás részeket keresünk, vagy valamilyen más, külső eszközt alkalmazünk
-
Dinamikus: futásidőben vizsgáljuk a szoftvert
Második körben pedig megkülönböztethetünk a kód ismerete alapján történő tesztelési technikákat:
-
feketedobozos (black-box) tesztelés: a rendszer belső működését nem ismerjük, a felhasználói felületen keresztül teszteljük a szoftvert (külsős tesztelői csoportok ~ specifikáció alapú tesztelés)
-
fehérdobozos (white-box) tesztelés: a forráskód alapján készülnek a tesztesetek (tipikusan a cégen belül végzik el ~ struktúrális tesztelés)
Tesztelés az életciklusban¶
Ha visszatekintünk a folyamatmodellekre, akkor láthatjuk, hogy a tesztelés a legtöbb modellben kulcsfontosságú szerepet játszik.
A vízesésmodell kiterjesztésével létrejött ún. V modell esetében a következő történik:
-
Az egyik szára: vízesés modell (fejlesztési szár)
-
A másik szára a létrejövő termékek tesztjeit tartalmazza (tesztelési szár)
-
Az egy szinten lévő fejlesztési és tesztelési lépések összetartoznak
-
A tesztelési lépés a fejlesztési lépés során létrejött dokumentumokat/projektet használja
Komponens teszt: tipikusan Unit-tesztek, azaz az egyes metódusok adott bemenetre az elvárt eredményt adja.
Alrendszer integrációs teszt: komponensek közötti kölcsönhatásokat vizsgáljuk, mert előfordulhat, hogy egy-egy komponenest más-más csapat fejleszt
Rendszer integrációs teszt: annak ellenőrzése, hogy a specifikációnak megfelel-e a termék
Átvételi teszt: ezt már a végfelhasználók végzik (alfa-teszt, béta-teszt)
Emlékeztető¶
Projektterv: 7.3. Minőségbiztosítás
-
Az elkészült terveket a terveken nem dolgozó csapattársak közül átnézik, hogy megfelel-e a specifikációnak és az egyes diagramtípusok összhangban vannak-e egymással. A meglévő rendszerünk helyes működését a prototípusok bemutatása előtt a tesztelési dokumentumban leírtak végrehajtása alapján ellenőrizzük és összevetjük a specifikációval, hogy az elvárt eredményt kapjuk-e. További tesztelési lehetőségek: unit tesztek írása az egyes modulokhoz vagy a kód közös átnézése (code review) egy, a vizsgált modul programozásában nem résztvevő csapattaggal. Szoftverünk minőségét a végső leadás előtt javítani kell a rendszerünkre lefuttatott kódelemzés során kapott metrikaértékek és szabálysértések figyelembevételével.Az alábbi lehetőségek vannak a szoftver megfelelő minőségének biztosítására:
-
Specifikáció és tervek átnézése (kötelező)
-
Teszttervek végrehajtása (kötelező)
-
Unit tesztek írása (választható)
-
Kód átnézése (választható)
-
Projektterv: 3-4. mérföldkő
-
9.3.4. Tesztelési dokumentum
-
9.4.3. Tesztelési dokumentum az új funkciókhoz
A tesztelés folyamata¶
Egy projekt életciklusa során számtalan, a teszteléshez kapcsolódó dokumentum is létrejön. Ilyen dokumentum például a tesztterv, amely hasonló a projekttervhez csak a tesztelés a témája. Egy ilyen dokumentum tartalmazza többek között a projekt rövid ismertetését, a felhasznált és a leszállítandó dokumentumokat, a tesztelés hatókörét, elfogadási kritériumokat, erőforrásokat, szerepköröket, felelősöket, feladatokat, tesztadatokat, kockázatokat, stb.
A tesztelés a szoftverfejlesztési folyamat nagyon fontos része. Olykor több erőforrást igényel, mint maga a fejlesztés, ezért jól megtervezett és dokumentált tesztelésre van szükség. Magát a teszttervet nem kell elkészíteni, de a leszállítandó dokumentumokat igen, ezek a következők lesznek:
-
Teszteljárás (TestProcedure – TP)
-
Részletes leírás a tesztesetek előkészítéséhez, végrehajtásához, kiértékeléséhez
-
Végrehajtandó lépések sorozata
-
Felsorolhatjuk a hozzá tartozó teszteseteket
-
-
Teszteset (TestCase – TC)
-
Teszteljárás alapján készül
-
Teszt inputok halmaza, végrehajtási feltételek, elvárt eredmények leírása
-
-
Tesztriport (TestRiport – TR)
- Teszteset végrehajtásának eredménye (a teszt helyes/helytelen eredményt adott)
Tesztelési dokumentáció (tesztjegyzőkönyv) sablon: SABLON
Tesztelési aranyszabályok¶
-
Az elvárt eredményt mindig specifikáljuk
-
Programozó ne tesztelje a saját programját
-
Minden teszteredményét ellenőrizni kell
-
Kivételes viselkedést is teszteljük
-
Azt is igazoljuk, hogy egy program nem csinálja azt, amit nem kéne
-
Teszteseteket meg kell tudni ismételni
-
Ne feltételezzük, hogy hibátlan a program, egy programban mindig vannak hibák
-
Hibák sokszor csoportosan jelentkeznek
-
„Nezzünk körül” egy adott hiba esetén
-
Tesztelés célja hibák megtalálása (a jó tesztadat az, amely előhozza)