5.dia Szoftvertesztelés Flashcards
(25 cards)
Mi a szoftvertestelés?
Az a folyamat amikor a szoftver minőségét megállapítjuk és a működés közbeni meghibásodások kockázatát minimalizáljuk. A program azt csinálja-e amit kell?
Ilyen tevékenység a hibák felderítése és a minőség értékelése.
Tévedés/tévesztés (Hibát leíró szakkifejezések)
Rossz eredményt adó emberi tevékenység. Ez hibáát vezethet be a szoftver kódjába vagy valamely más kapcsolódó munkatermékbe.
Hiba (Hibát leíró szakkifejezések)
Tökéletlenség vagy hiányosság egy munkatermékben, amelynél nem teljesülnek a követelmények vagy előírások.
Meghibásodás (Hibát leíró szakkifejezések)
Olyan esemény, amelynél egy komponens vagy rendszer nem lát egy megkövetelt funkciót a megszabott határok között.
Tesztelési alapelvek
6 alapelv:
1. A tesztelés a hibák jelenlétét mutatja meg, nem a hiányukat.
2. Lehetetlen a kimerítő tesztelés. A hibamentesség egy tévhit.
3. A korai tesztelés időt és pénzt takarít meg.
4. A hibák csoportosulnak.
5. A tesztek elkopnak (Kártevőírtó paradox)
6. A tesztelés környezet függő.
Teszteset fogalma
Teszt feltétel : egy komponens vagy rendszer tesztelhető vonatkozásban
Teszt bemenetek, végrehajtási feltételek és elvárt eredmények halmaza.
Vagy egy feltételnek megfelelést vagy egy végrehajtást tesztelünk.
Magas szintű teszteset:
Absztrakt előfeltételek, bemenet, elvárt eredmények és utófeltételekkel és lépésekkel.
Alacsony szintű teszteset:
Konkrét előfeltételek, bemenet, elvárt eredémnyek ls utófeltételekkel és lépésekkel.
Tesztadat fogalma
A tesztvégrehajtáshoz szükséges adatok.
Konkrét értékek és a hozzájuk tartozó használati útmutató alacsonyszintűvé teszik a tesztesetet.
Magas szintű azonban az a testeset aminél több különféle tesztadatot használunk.
Egységtesztelés (Tesztelési szintek)
Független tesztelhető komponensekre összpontosít.
Általában az a fejlesztő végzi aki azt a bizonyos kódot írta, de legalább is a tesztelt kódhoz való hozzáférés szükséges.
Gyakran egy kódrész megírása után írnak egységtesztet a fejlesztők, viszont történhet fordítótt sorrendben is. (TDD)
Komponens integrációs tesztelés (Tesztelési szintek)
Az integrált komponensek közötti kommunikációra és interfészekre összpontosít. Tehát nem a komponensek működése érdekes, hanem az integráció.
Általában automatizált módon az egységtesztek után végzik.
Gyakran a fejlesztők felelőssége.
Rendszertesztelés (Tesztelési szintek)
A rendszer egészének viselkedésére összpontosít.
Ezt független tesztelők végzik, és specifikációkra támaszkodnak.
Rendszerintegrációs tesztelés (Tesztelési szintek)
A rendszerek közötti komunikációra és interfészekre összpontosít.
Történhet a rendszerteszteléssel párhuzamosan vagy utána is.
Környezetnek olyannak kell lennie mintha élesben menne.
Elfogadási tesztelés(Tesztelési szintek)
Azt vizsgálják, hogy a szoftver készen áll-e a telepítésre és a felhasználó általi alkalmazásra.
Gyakran az ügyfél és a rendszerüzemeltetők felelőssége.
Alfa és Béta tesztelés (Tesztelési szintek)
Elfogadási teszteléshoz kapcsolódóan :
alfa:
Felhasználók és fejlesztők közös munkája, általában a telephelyen.
béta:
Korai hozzáférést nyújtanak egy akár még befejezetlen termékhez felhasználók és ügyfelek egy nagyobb csoportjának.
A marketing egy formája.
Főleg olyan alkalmazásoknál használják, ahol sok különböző környezetben helyét kell állnia.
Változással kapcsolatos tesztelés
Amikor a rendszer módosul egy új funkció vagy hiba kijavítása miatt, azt tesztekkel kell végezni.
2 fajtája:
Megerősítő tesztelés:
Cél, hogy vizsgáljuk, hogy a hiba tényleg ki lett-e javítva.
Regressziós tesztelés:
Lehet, hogy a módosítás a szoftver más részét is befolyásolja, ezt le kell ellenőrízni.
A jó egységtesztek ismertetőjegyei: FIRST
Fast (Gyors) : A teszteknek gyorsan le kell futniuk.
Független (Independent) : A teszteknek egymástól függetlennek kell lenniük.
Megismételhető (Repeatable) : A tesztek bármely környezetben megismételhetőnek kell lenniük.
Önérvényesítő (Self-Validating) : A teszteknek logikai kimenete kell, hogy legyen. (Fail/Success)
Jól időzíthető (Timely) : A teszteket kellő időben kell megírni.
Egységtesztek szervezése: az AAA minta
3 részből állnak a tesztek:
Elrendez (Arrange) : A tesztelt rendszer és a függőségeit tesztelhető állapotba hozza.
Cselekszik (Act) : A tesztelt rendszer metódusait meghívja, előkészíti a függőségeket átadásra és ha van kimenet azt elkapja.
Kijelent (Assert) : ellenőrzi a kimenetet.
Tesztosztályok (JUnit)
Bármely felsőszintű osztály, statikus tagosztály vahy @Nested osztály, amely legalább egy tesztmetódust tartalmaz.
(Nem lehet absztrakt és csak egy konstruktora lehet.)
Nem lehet privát.
Konstruktorának és metódusainak lehetnek paraméterei a függőség befecskendezés miatt.
Tesztmetódusok (JUnit)
Bármely példánymetódus amely el van látva:
@Test
@RepeatedTest
@ParameterizedTest
@TestFactory
@TestTemplate
annotációval.
Nem lehet privát.
Deklarálhatók magában a tesztosztályban de örököltethetőek is.
Nem lehetnek absztraktak és nincs return.
Életciklus metódus (JUnit)
@BeforeAll - Statikus kell, hogy legyen
@AfterAll - Statikus kell, hogy legyen
@BeforeEach
@AftherEach
annotációval megjelölt metódusok.
Nem lehet privát.
Deklarálhatók magában a tesztosztályban de örököltethetőek is.
Nem lehetnek absztraktak és nincs return.
Teszt végrehajtási életciklus (JUnit)
Mindig új példányt hoz létre a JUnit a tesztosztályból a tesztmetódus lefuttatása előtt. Így izolál.
Ha nem így akarjuk, akkor a tesztosztályon @TestInstace(Lifecycle.PER_CLASS) annotációt kell elhelyezni.
Teszteredmények (JUnit)
3 esete:
Siker (success) :
Minden tényleges eredmény megegyezik a várt eredménnyel. A teszt átment.
Bukás (failure) :
A tényleges és a várt eredmények nem egyeznek meg. A teszt megbukik.
Hiba (error) :
A teszt végrehajtásakor egy hiba következett be, így nem tudott befejeződni.
Utasítás lefedettség és Sor lefedettség (Kódlefedettségi metrikák)
A leggyakrabban használt lefedettségi metrikák.
Utasítás lefedettség = Végrehajtott utasítások
Sor lefedettség = Végrehajtott kódsorok
Minden végrehajtott utasítás/sor egyszer számolandó.
A sor lefedettségnél csak a végrehajtható kódot tartalmazó sorok számítanak, így a forráskód formázása számít.
Ág lefedettség (Kódlefedettségi metrikák)
Olyan lefedettségi mérték, amely az if. switch és más hasonló vezérlési szerkezeten alapul.
A végrehajtott ág számához viszonyítva nézi a tesztkészlet lefutásakkor.
Ág lefedettség = Végrehajtott ágak / Összes ág száma
Mi az ésszerű lefedettségi szám? (Kódlefedettségi metrikák)
Ököl szabály:
Jó, ha a fő részei le vannak fedve, de ha a lefedettség követelménye magas ez válhat a fő céllá. Nem a tesztek minősége.