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.
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
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.
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.
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ő.
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 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.
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.
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:
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:
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.
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ó | 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? |
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.
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…
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.
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.
:: 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:
Teszteléshez_sablon