Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:teszteles

< Programozás

Tesztelés

  • Szerző: Sallai András
  • Copyright © Sallai András, 2014, 2015, 2017
  • Licenc: GNU Free Documentation License 1.3

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 bemenő adatokkal látjuk el az adott szoftvert, majd figyeljük a visszaadott eredményeket, ezzel detektálva a hibákat.

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
  • Lehetséges bemenőadatok:
    • alap: 30
    • magasság: 35
  • Ekkor a kimenő adat:
    • (30*35)/2 = 525

Alapelvek

  • A tesztelés felderíti a hibákat, de az sosem derül ki, hogy nincs több hiba.
  • Általában csak a magas kockázatú részeket teszteljük.
  • A tesztjeinket folyamatosan fejleszteni kell.
  • A magas kockázatú részeket teszteljük.
  • A megfelelő teszteset kiválasztása: a bemenő és kimenő adatokat együtt adjuk meg.
  • Ha egy teszteset nem ismételhető, akkor az kerülendő.
  • Érvényes és érvénytelen adatokra is tesztelünk.
  • Megfelelő tesztelőt kell választani:
    • Ez általában a program írójától különböző ember.

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:

  • statikus
  • dinamikus

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

É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:

y := f(x) + f(x) és 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
  • fekete-dobozos

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:

  • funkció
  • képesség (feature)
  • minőség
  • tranzakció
  • strukturális elem

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

  • kódsorok
  • szelekciók
  • iterációk
  • metódusok
  • osztályok
  • funkciók
  • modulok

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:

  • ekvivalenciaosztályok keresése
  • határeset-elemzés

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:

  • érvényes – azok az adatok, amelyek megengedettek
  • érvénytelen – azok az adatok, amelyek a tartomány alatt és felett állnak

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:

  • 2, 4, 8, 16, 32, 64, stb.

Érvénytelen:

  • a több szám

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:

  • 0, 10

Érvénytelen vizsgálandó adatok:

  • -1 és 11

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:

  • tesztterv készítés
  • végrehajtás
  • kilépési feltételek vizsgálata
  • eredmények értékelése
  • jelentést készítünk

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?

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

  • komponensteszt
  • integrációs teszt
  • rendszerteszt
  • átvételi teszt

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:

Linkek és források

Linkek

Forrás

oktatas/programozas/teszteles.txt · Utolsó módosítás: 2019/08/22 11:56 szerkesztette: admin