15. óra · Szoftvertesztelés alapjai

Teszttípusok

Funkcionális, nem funkcionális, strukturális és változáshoz kapcsolódó tesztek

Az óra végére képes leszel

  • Példából felismered a négy teszttípus vizsgálati célját.
  • Elkülöníted a megerősítő és a regressziós ellenőrzést.
  • Azonos funkcióhoz többféle tesztet tervezel.

Az óra témái

  • Funkcionális tesztelés
  • Nem funkcionális tesztelés
  • Strukturális tesztelés
  • Változásokhoz kapcsolódó tesztelés: megerősítő és regressziós teszt
01 / TANANYAG

Funkcionális: mit tesz a rendszer?

A funkcionális tesztelés a meghatározott viselkedést vizsgálja. Például a jelentkezés csak addig fogad el új diákot, amíg van hely, azután a megadott szabály szerint várólistára teszi. A teszthez szükséges a kiinduló állapot, a bemenet és a megfigyelhető elvárt eredmény. Nem elég a gomb működését látni: az adatoknak és a visszajelzésnek is a szabályt kell követniük.

Funkcionális tesztet több szinten is végezhetünk. A várólista rendezési szabálya vizsgálható egy függvényen, a várólista és értesítő együttműködése integrációban, a jelentkezés teljes menete pedig rendszerszinten. A teszt típusa ugyanaz, mert a kérdés mindenhol a helyes működésre irányul.

Példa: Funkcionális kérdés

Ha a kurzus megtelt, a következő jogosult jelentkező pontosan egyszer kerül a várólistára, és ezt egyértelmű üzenet jelzi.

02 / TANANYAG

Nem funkcionális: hogyan teljesít?

A nem funkcionális tesztelés minőségi jellemzőket vizsgál: például teljesítményt, használhatóságot, megbízhatóságot, biztonságot, kompatibilitást vagy hozzáférhetőséget. Nem általános „jó érzést” mérünk; a vizsgálathoz meghatározzuk az értékelés módját. Például hány egyidejű felhasználónál, mekkora adathalmaz mellett és milyen környezetben várunk egy másodpercen belüli választ.

Egy rendszer funkcionálisan helyes lehet, mégis használhatatlan, ha a keresés a szokásos terhelés alatt percekig tart. A biztonsági vizsgálatnál nemcsak a helyes bejelentkezést ellenőrizzük, hanem például azt is, hogy az egyik diák nem fér-e hozzá a másik jelentkezéséhez. A teljesítményvizsgálat és a jogosultsági próbák eltérő módszert és eszközt igényelhetnek.

Tanári tipp

A nem funkcionális elvárást is fogalmazd mérhetőre: milyen körülmények között, milyen küszöböt és milyen megfigyeléssel ellenőrzöl?

03 / TANANYAG

Strukturális: hogyan épül fel a megvalósítás?

A strukturális, más néven fehérdoboz jellegű vizsgálat a megvalósítás belső felépítéséből indul ki. Megnézhetjük, hogy a feltételek ágait és a fontos kódutakat lefedik-e a tesztek. Ha a jelentkezési függvény külön ágat tartalmaz betelt kurzusra és érvénytelen jogosultságra, a teszttervben mindkét ághoz kell példa. Egy lefedettségi mérőszám megmutathat hiányokat, de a magas százalék nem bizonyítja a szabályok helyességét.

A strukturális megközelítés és a funkcionális megközelítés kiegészíti egymást. Előfordulhat, hogy minden kódág végrehajtódik, de a követelményből hiányzik egy fontos üzleti eset. Fordítva: több sikeres üzleti eset sem garantálja, hogy egy ritka hibakezelő ágat kipróbáltunk. A választott cél szerint mindkét kérdést érdemes feltenni.

Példa: Három ág

Ha a kód kezeli a szabad helyet, a betelt kurzust és a tiltott jelentkezést, mindhárom ágra külön tesztet tervezhetsz. Ez még nem mondja meg, helyes-e maga az üzleti szabály.

04 / TANANYAG

Változásokhoz kötődő tesztek

Hibajavítás után a megerősítő teszt újból kipróbálja azt az esetet, amely korábban eltérést mutatott: most megszűnt-e a probléma? A regressziós teszt azt vizsgálja, hogy a változtatás nem rontott-e el más, korábban működő viselkedést. A kettő nem azonos: ha a 18 éves jelentkezők hibáját javítják, az eredeti 18 éves eset megerősítő teszt; a 17 és 19 évesek, valamint más jogosultsági csoportok ellenőrzése lehet regresszió.

A regresszió lehet kézi vagy automatizált, kicsi vagy nagy, a változás és a kockázat alapján. Nem kell minden javítás után minden tesztet feltétlenül futtatni, de meg kell indokolni, milyen közeli vagy közös függőségű részek érintettek. A jó változásvizsgálatnál a hibajegy és a módosított terület segít kiválasztani a megfelelő eseteket.

Tanári tipp

Tedd fel külön: az eredeti hiba megszűnt? A változás környezetében mi romolhatott el?

Négy kérdés egy módosított keresőhöz
  1. 1FunkcióHelyes találatokat ad?
  2. 2MinőségMegfelelő válaszidőt tart?
  3. 3SzerkezetA fontos kódágak kipróbáltak?
  4. 4VáltozásAz eredeti hiba megszűnt, és más út nem romlott?

Egy teszt több szempontból is leírható; a típus a vizsgálat célját, nem a helyét jelöli.

05 / TANANYAG

Ugyanaz a művelet négyféle elvárással

A kurzuskereső új szűrőjét funkcionálisan akkor vizsgálod, ha azt nézed, valóban csak a megadott tantárgyhoz tartozó kurzusok jelennek-e meg. Nem funkcionális a vizsgálat, ha sok találat mellett mérhető válaszidőt vagy mobil használhatóságot ellenőrzöl. Strukturális szemléletben azt nézed, melyik belső ág kezeli a hiányzó szűrőt és az érvénytelen értéket.

A változás szempontjából az eredeti hibát újrafuttatod megerősítésre, majd a közeli régi keresési módokat regresszióra. Egyetlen jól megtervezett próbával több kérdésre is kaphatsz választ, de ezt nevezd meg pontosan. Attól, hogy egy eredménylistát helyesnek látsz, még nincs bizonyítékod a nagy terhelés alatti válaszidőre.

Példa: Két független mérce

A helyes 8 találat 20 másodperc alatt érkezik. A funkcionális eredmény sikeres lehet, miközben egy előre megadott 2 másodperces teljesítménykövetelmény sérül.

06 / TANANYAG

A lefedettség értelmezésének határa

Tegyük fel, hogy minden kódágat legalább egyszer végrehajtottak. Ez a strukturális lefedettség egy fontos hiányjelzője lehet, de nem bizonyítja, hogy minden ág helyes eredményt ad. Ha a teszt csak azt nézi, hogy nem omlik össze a program, a rossz számítás is átcsúszhat. A teszthez megfelelő elvárt eredmény kell.

Ugyanakkor egy jól sikerült felhasználói próbából sem következik, hogy a ritkán előforduló hibakezelő ág működik. A funkcionális, nem funkcionális és strukturális kérdések együtt adhatnak jobb képet. A megerősítő és regressziós teszt időzítése pedig az új változatból származó kockázathoz igazodik.

Tanári tipp

A lefedettség száma mellé írd oda: milyen elvárást ellenőriztek a futás során?

RÉSZLETES ELMÉLETI KIEGÉSZÍTÉS

Funkcionális és nem funkcionális tesztelés

A funkcionális teszt azt ellenőrzi, hogy mit tesz a rendszer: milyen műveletet enged, milyen eredményt ad, hogyan kezeli a szabályokat. A nem funkcionális teszt azt vizsgálja, hogyan működik: például mennyire gyors, biztonságos, könnyen használható vagy más környezetekkel kompatibilis.

A tesztek lehetnek változtatásokat vizsgálók vagy regressziósak. A megerősítő teszt ellenőrzi, hogy egy konkrét hiba javítása sikerült-e; a regressziós teszt azt keresi, hogy a módosítás nem rontott-e el más, korábban működő területet. A funkciók és minőségi jellemzők kombinációja átfogóbb képet ad.

Új, iskolai példa

A tanuló jelszó-visszaállítása funkcionális teszt: megérkezik-e a helyreállító link. A nem funkcionális ellenőrzés azt méri, hogy a kérés biztonságosan, elfogadható időn belül történik-e.

Gondolkodtató gyakorlófeladat

Válassz egy iskolai szolgáltatást, és tervezz hozzá két funkcionális, két nem funkcionális és egy regressziós tesztet.

PRÓBÁLD KI

Órai feladat

Egy tanulmányi portálon kijavítják a betelt kurzusra jelentkezés hibáját. Tervezz egy funkcionális, egy nem funkcionális, egy strukturális, egy megerősítő és egy regressziós ellenőrzést!

ELLENŐRIZD MAGAD

A javított hiba eredeti reprodukciós esetének újbóli lefuttatása minek számít elsősorban?

Amit érdemes megjegyezni

  • Funkcionális: mit tesz; nem funkcionális: milyen minőségben; strukturális: milyen belső elemeket járunk be.
  • Megerősítő: megszűnt-e a javított hiba; regressziós: sérült-e más működés.
  • Egy teszt több szempont szerint is leírható, a típus és a szint eltérő fogalom.