5.Szoftvertesztelés Flashcards
(13 cards)
Mi a szoftvertesztelés?
A szoftvertesztelés annak dinamikus verifikálását jelenti, hogy
egy program várt módon viselkedik tesztesetek egy véges halmazán.
Hibát leíró szakkifejezések:
Tévedés/tévesztés (error/mistake): rossz eredményt adó emberi tevékenység.
Hiba (defect/fault/bug): tökéletlenség vagy hiányosság egy munkatermékben, melynél nem teljesülnek a követelmények vagy előírások
Meghibásodás (failure): esemény, melynél egy komponens vagy rendszer nem látja el egy funkcióját a határok között
Tesztelési alapelvek 7db
1 A tesztelés a hibák jelenlétét mutatja meg, nem a hiányukat
2 Lehetetlen a kimerítő tesztelés
3 A korai tesztelés időt és pénzt takarít meg
4 A hibák csoportosulnak
5 A tesztek elkopnak
6 A tesztelés környezetfüggő
7 A hibamentesség egy tévhit
Teszteset és tesztadat
Eset:
Tesztfeltételek alapján meghatározott:
előfeltételek,
bemenetek,
tevékenységek
, elvárt eredmények és
utófeltételek halmaza.
Adat: A tesztadatok a tesztvégrehajtáshoz szükséges adatokat jelentik.
Tesztelési szintek:
egységtesztelés, komponens integrácós tesztelés, rendszertesztelés, rendszerintegrációs tesztelés, elfogadási tesztelés (alfa és béta tesztelés)
1 Egységtesztelés/komponens tesztelés
A függetlenül tesztelhető komponensekre összpontosít.
2 Komponensintegrációs tesztelés
Az integrált komponensek közötti kommunikációra és interfészekre
összpontosít.
3 Rendszertesztelés
A rendszer egészének (funkcionális és nem funkcionális) viselkedésére
összpontosít
4 Rendszerintegrációs tesztelés
A rendszerek közötti kommunikációra és interfészekre összpontosí
5 Elfogadási tesztelés
A rendszer kész-e a
telepítésre és az végfelhasználó általi használatra.
Alfa: Felhasználók és fejlesztők együtt dolgoznak egy rendszer tesztelésén a
fejlesztés közben
Béta: Akkor történik, amikor egy szoftverrendszer egy korai, néha befejezetlen
kiadását elérhetővé teszik kipróbálásra ügyfelek és felhasználók egy
nagyobb csoportjának.
Változással kapcsolatos tesztelés
Megerősítő tesztelés: célja annak megerősítése, hogy az eredeti hiba sikeresen kijavításra került.
Regressziós tesztelés: A regressziós tesztelés célja a változások által okozott akartalan mellékhatások érzékelése.
FIRST
Gyors (Fast): A tesztek gyorsak kell, hogy legyenek.
Független (Independent): A tesztek nem függhetnek egymástól
Önérvényesítő (Self-Validating): A teszeknek logikai kimenete kell, hogy legyen.
Jól időzített (Timely): A teszteket kellő időben kell megírni, közvetlenül a tesztelendő kód előtt
AAA minta
Elrendez (Arrange): tesztelt rendszer és függőségei egy kívánt állapotba állításáért.
Cselekszik (Act): tesztelt rendszer metódusainak meghívására, az előkészített függőségek átadására és a kimeneti érték elkapására (ha van).
Kijelent (Assert): a kimenetel ellenőrzésére. A kimenetel ábrázolható a visszatérési értékkel vagy a tesztelt rendszer végső állapotával.
Junit
Alapértelmezésben a JUnit egy új példányt hoz létre minden egyes
tesztosztályból az egyes tesztmetódusok végrehajtás előtt, mely
lehetővé teszi a tesztmetódusok izoláltan történő végrehajtását.
Tesztosztály: bármely felsőszintű osztály, statikus osztály vagy nested osztály, mely legalább egy tesztmetódust tartalmaz.
Nem lehet absztrakt és egyetlen konstruktora kell, hogy legyen.
Tesztmetódus: a @Test, @RepeatedTest, @ParameterizedTest,
@TestFactory vagy @TestTemplate annotációval megjelölt bármely
példánymetódus.
Életciklus metódus: a @BeforeAll, @AfterAll, @BeforeEach vagy
@AfterEach annotációval megjelölt bármely metódus.
Végrehajtási életciklus:
Alapértelmezésben a tesztmetódusok rendezése egy determinisztikus, de szándékosan nem nyilvánvaló algoritmussal történik. Ez biztosítja azt, hogy egy tesztkészlet egymást követő futtatásaikor a tesztmetódusok ugyanabban a sorrendben kerülnek végrehajtásra.
Teszt eredmények:
Siker (success): amikor a teszt végrehajtásakor minden tényleges eredmény megegyezik a várt végeredménnyekkel.
Bukás (failure): amikor a teszt végrehajtásakor a tényleges eredmény
nem egyezik meg a várt végeredménnyel.
Hiba (error): amikor a teszt végrehajtásakor egy hiba következik be,
mely megakadályozza a befejeződést.
Kódlefedettségi metrikák (sor lefedettség)
A leggyakrabban használt lefedettségi metrikák az utasítás lefedettség
(statement coverage) és a sor lefedettség (line coverage):
Utasítás lefedettség = Végrehajtott utasítások / Összes utasítás száma
Sor lefedettség = Végrehajtott kódsorok / Összes sor száma
Minden egyes végrehajtott utasítást/sort egyszer számolunk
függ a formázástól
TDD:
Szoftverfejlesztési folyamat mely a kód írás elé teszi a tesztek megírását.
Iteratív megközelítés:
-Irj egy tesztet
-fusson le
-Írd át jó-ra
Kódlefedettségi metrikák (ág lefedettség)
Az ág lefedettség (branch coverage) egy lefedettségi mérték, mely
az olyan vezérlési szerkezeteken alapul, mint az if és a switch.
A végrehajtott ágak arányát méri egy tesztkészlet futtatásakor az
összes ág számához viszonyítva.
Ág lefedettség = Végrehajtott ágak / Összes ág száma
Ésszerű lefedettségi szám:
Veszélyes egy bizonyos érték elérésének megcélzása egy lefedettségi
metrikánál, mivel könnyen ez válhat a fő céllá.
Egy alacsony kódlefedettségi metrika érték azt jelzi, hogy problémák
vannak a tesztekkel, azonban egy magas érték nem jelenti azt, hogy a
tesztek jó minőségűek.