Tartalomjegyzék

< Programozás

Tesztelés

Bevezetés

A szoftverek minőségének biztosítása érdekében azokat tesztelni szoktuk. Tesztelünk mielőtt átadjuk az ügyfelünknek használatra. Ezzel megpróbáljuk a szoftver hibáit megszüntetni. Teljesen lehetetlen, de mindent meg kell tennünk, hogy minél kevesebb hiba maradjon benne.

A tesztelés során átnézzük a forráskódot, vagy elindítjuk a programot és használjuk, vagy automatizált teszteket futtatnunk.

A keresett hibák halmazát nevezzük hibamodellnek.

Teszteset

A tesztelés során megadott megfelelő bemenő és kimenő adatok, amelyek valószínűleg még felfedetlen hibákat mutatnak meg, jó tesztesetnek nevezzük.

Teszteset példa:

A feladat egy háromszög területének kiszámítása. A képlet a következő:

Δ terület = (alap * magasság)/2

Alapelvek

Tesztelési technikák

A tesztelési technikákról

Alapvetően kétféle tesztelési technikát különböztetünk meg:

A tesztelés lehet statikus és dinamikus. Statikus tesztelésről beszélünk, amikor nem fordítjuk, nem futtatjuk a programot, csak a forráskódot vizsgáljuk. Dinamikus tesztelés esetén a forráskódot és futó programot is vizsgáljuk.

Statikus tesztelés

A statikus tesztelésről

A statikus tesztelés lehet szimplán a kód ellenőrzése. Készíthetünk kereszthivatkozási táblázatokat, vagy tartalmilag ellenőrizzük forráskódot.

A forráskódban ellentmondásokat kereshetünk. Például felhasználatlan objektumokat vagy felhasználatlan változóértékeket kereshetünk.

A kódellenőrzés alkalmával összehasonlítjuk a megvalósítandó algoritmust a megírt kóddal. Leghatékonyabb módszer, ha egy avatatlan személynek elmagyarázzuk a kódunk működését sorról sorra.

Kódellenőrzés

Kereszthivatkozás tábla

Tartalmi ellenőrzés

Ellentmondáskeresés

Felhasználatlan változóérték:

i := 1
ciklus i:= 1-től 5-ig
    ...
ciklus vége

Ha a ciklus előkészíti az i változó értékét, akkor felesleges volt 1 érték beállítása.

Érték nélküli változó:

ha f akkor i := 1
különben j := 1
k := i

Nem változó értékadás:

i := 1 * i - 0

Azonos igaz/hamis logikai formulák:

i<1 és i>= 100, i < i + 1

Az i nem lehet egyszerre 1-nél kisebb és 100-nál nagyobb.

Konstans értékű kifejezés:

x := a^2 - b^2 - (a + b) * (a - b)

Eredménye mindig 0.

Másik konstans értékű kifejezés:

y := cos(x) / sin(x) * tan(x)

Az eredménye mindig 1.

Végtelen ciklus:

ciklus i := 1-től -- n-ig
    i := 1
ciklus vége

Érték nélküli függvény, operátor:

függvény absz(x): egész
    ha x < 0 akkor absz := -x
függvény vége

Mellékhatással járó függvény:

a1 := f(x) + f(x) 
a2 := 2 * f(x) 

Előfordulhat, hogy a két kifejezés értéke különböző.

Dinamikus tesztelés

A dinamikus tesztelés során fordítunk és tesztelünk, és a fordítótól eltérő eszközöket is használhatunk.

A dinamikus tesztelés felosztása

A dinamikus tesztelés esetén futtatunk. Futtatjuk a programot, megpróbáljuk végrehajtani. Ha a forráskód rendelkezésre áll, akkor fehér-dobozos tesztről beszélünk, ha nem fekete-dobozos tesztről.

Fehér-dobozos tesztelés

A fehér-dobozos tesztet vagy angolosan white-box a forráskód alapján készítjük. Hozzáférünk a struktúrákhoz, a megvalósításhoz. Jellemzően a fejlesztők végzik.

A tesztelésnek a következő céljai lehetnek:

A következő struktúrákat teszteljük:

Felmerül a lefedettség kérdése. Ez alatt értjük, hogy a a struktúrák hány százalékát tudjuk tesztelni a meglévő tesztekkel.

Fekete-dobozos tesztelés

A fekete dobozos teszt esetén, ahol nem férünk hozzá a forráskódhoz, a specifikáció alapján tesztelünk. Az ilyen teszteket jellemzően nem a fejlesztő csapat végzi.

A fekete dobozos módszerek:

Ekvivalencia osztályok keresése

Keressük a jó teszteseteket, ahol olyan bemenőadatokat keresünk, amelyek minél több feltételnek felelnek meg. Keresnünk kell valamilyen szempontot, amelyek alapján csoportosíthatjuk a bemenő adatokat. Az így kialakított csoportokat nevezzük osztálynak.

Olyan tesztesetet keresünk, amely jellemző az adott csoportra. Egy csoportból bármely elemet kiválasztva, ha hibát kapunk, a csoport egy másik elemét kiválasztva valószínűleg hibát kell kapnunk.

Ha a csoport egy elemére megfelelő eredményt kapunk, akkor a valószínűleg a többire is ezt kell kapjuk.

Ha bemenő adatok egy értéktartományt alkotnak, kétféle ekvivalencia osztályunk lehet:

Ha például a lehetséges értékek 0 és 10 között vannak, beleértve a 0 és 10-es számot is, akkor a ezt így írhatjuk fel:

Érvényes ekvivalencia osztály:

0<= n <= 10

Érvénytelen ekvivalencia osztály:

n<0 és n>10

Lehetséges, hogy akkor beszélhetünk érvényes ekvivalencia osztályról, ha bemenő adatok száma megadott számú. Például 6 adat érvénytelen. Ha 6-nál több adat, vagy kevesebb, alkotja az érvénytelen ekvivalenciaosztályt.

Lehetséges, érvényes bemenő adatokra valamilyen jellemző. Például 2 hatványai. Ekkor érvényes ekvivalencia osztály:

Érvénytelen:

Határeset-elemzés

Az ekvivalencia osztály határon lévő elemeit vizsgáljuk. Ez tekinthető az ekvivalencia osztály kiegészítésének.

Ha az érvényes tartomány, nem szigorúan véve 0 és 10 közé esik, akkor a vizsgálandó érvényes adatok:

Érvénytelen vizsgálandó adatok:

Adott darabszám esetén, ha pontosan 6 adat a bemenet, akkor érvényes adatként vizsgálunk 6 darab adatot, érvénytelenként 5 és 7 darab adatot.

Összefoglalva

Tesztelési tevékenység

A tesztelési folyamatot a tervezéstől a végeredményig a következőkben foglalhatjuk össze:

Kilépési feltételek: Megnevezzük azokat a feltételeket, amikor befejezhetjük a tesztelést.

Verifikáció és validáció

Verifikáció Validáció
Jól terveztem meg?
A tervezésre és a
kivitelezésre vonatkozik.
Ami elkészült az jó?
Az ügyfélnek megfelel a termék?

Tesztek osztályozása

A tesztelés szintjei

Függelék

Feketedobozos teszt egyik formájára példa

A program

Adott egy egyszerű program, amelyben szavakat tárolunk egy listában. A listához felvehetők újabb elemek, a meglévő szerkeszthetők, törölhetők.

Legfelül látjuk a szavak listáját, alul egy szerkesztőmező. A szerkesztőmező alapértelmezésként üres. Ha szerkesztőmezőbe egy újabb szót írok, a „Hozzáadás” gombra kattintva az új elem a listába kerül.

A „Szerkesztésre” gombra kattintva a program a listában kijelölt elemet a szerkesztőmezőbe másolja.

Illegális karakter

A szerkesztőmezőben illegális karakter a magyar ábécétől eltérő karakter. Ha beírok például egy „+” karaktert, a program a következő módon reagál…

Üres elem felvitele

A szerkesztő mező üres, és kattintok a „Hozzáadás” gombra, hibás ha listában egy üres elem jelenik meg. A programban a hiba javítva van, ilyenkor egy üzenet ablakot is feldob, amelyben tájékoztat, hogy üres adatot próbáltunk meg bevinni.

Ekvivalencia partíconálás

Equivalence partitioning, amelyet Equivalence Class Partitioning néven is említünk vagy csak röviden ECP.

Egy szoftvertesztelési technika, ahol a bemenő adatokat ekvivalencia osztályokba soroljuk, vagyis csoportosítjuk.

Az egy ekvivalencia osztályba sorolt hibák előfordulása, ugyanazt a hibást eredményt adják.

Két típusú ekvivalencia osztályt kell keresnünk. Az egyik amikor érvényesek a bemeneti adatok, a másik amikor érvénytelenek.

Teljesítményteszt

A tesztek szintekre osztása

Futási idő tesztelése

timecmd.bat
:: Szerző: @ScottStafford
:: Forrás: http://stackoverflow.com/questions/673523/how-to-measure-execution-time-of-command-in-windows-command-line (2015)
:: Kicsit átírta: Sallai András
:: Használat: c:\>timecmd [parancs]
 
@echo off
@setlocal 
 
 
 
set start=%time%

:: runs your command
cmd /c %*
 
set end=%time%
set options="tokens=1-4 delims=:."
for /f %options% %%a in ("%start%") do set start_h=%%a&set /a start_m=100%%b %% 100&set /a start_s=100%%c %% 100&set /a start_ms=100%%d %% 100
for /f %options% %%a in ("%end%") do set end_h=%%a&set /a end_m=100%%b %% 100&set /a end_s=100%%c %% 100&set /a end_ms=100%%d %% 100
 
set /a hours=%end_h%-%start_h%
set /a mins=%end_m%-%start_m%
set /a secs=%end_s%-%start_s%
set /a ms=%end_ms%-%start_ms%
if %hours% lss 0 set /a hours = 24%hours%
if %mins% lss 0 set /a hours = %hours% - 1 & set /a mins = 60%mins%
if %secs% lss 0 set /a mins = %mins% - 1 & set /a secs = 60%secs%
if %ms% lss 0 set /a secs = %secs% - 1 & set /a ms = 100%ms%
if 1%ms% lss 100 set ms=0%ms%

:: mission accomplished
set /a totalsecs = %hours%*3600 + %mins%*60 + %secs% 
echo Felhasznalt: %hours%:%mins%:%secs%.%ms% (%totalsecs%.%ms%s total)

Egyéb program:

Kézi tesztelés

Teszteléshez_sablon

Linkek és források

Linkek

Forrás

Snyk