11. óra · Szoftvertesztelés alapjai

Tesztelési szintek: komponens és integráció

Egyetlen rész viselkedése és a részek közötti kapcsolat

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

  • Megkülönbözteted a komponenst és a komponensek kapcsolatát vizsgáló tesztet.
  • Példát adsz helyettesítő komponens vagy próbaválasz használatára.
  • Azonosítod a határfelületek jellegzetes hibáit.

Az óra témái

  • Komponensteszt
  • Integrációs teszt
01 / TANANYAG

Mit jelent a tesztelési szint?

A tesztelési szint együtt kezelt teszttevékenységek csoportja, amelyet a vizsgált rendszer mérete és célja is jellemez. Más bizonyítékot várunk egyetlen árazási függvény ellenőrzésétől, mint a fizetési folyamat összekötött részeinek vizsgálatától. A szintek nem a fontosság szerinti rangsort jelentik: egy apró komponens hibája is kritikus lehet, és a teljes rendszerben is lehet egyszerű probléma.

Minden szinten kérdezzük meg: mi a teszt tárgya, mi szolgál elvárásként, mi a környezet, és milyen hiba megjelenését várjuk? A tesztszintek időben fedhetik egymást, különösen rövid fejlesztési ciklusokban. Nem kell megvárni, hogy az egész alkalmazás készen álljon egy új komponens ellenőrzéséhez.

Tanári tipp

A 'szint' az ellenőrzés fókuszát jelöli; a 'típus' azt, milyen minőségi jellemzőt vagy változást vizsgálsz. A 15. órán ezt külön rendszerezzük.

02 / TANANYAG

Komponensteszt: kis egység, pontos elvárás

Komponenstesztben egy vizsgálható részt – például egy függvényt, osztályt vagy modult – ellenőrzünk a viselkedési szabályai alapján. Egy kedvezményszámoló függvénynél megadhatunk összeget és kedvezménymértéket, majd ellenőrizhetjük a számított eredményt, a nullát, a hibás bemenetet és a kerekítést. A kis egység miatt a hiba helye gyakran könnyebben behatárolható.

A vizsgált rész függhet adatbázistól vagy külső szolgáltatástól. Ilyenkor a környezetet célszerű lehet kontrollált próbahelyettesítéssel egyszerűsíteni: például a fizetési szolgáltató helyett előre beállított sikeres és sikertelen választ adunk. Ez meggyorsíthatja az elkülönített tesztet, de a valódi szolgáltatással való kapcsolatot később külön vizsgálni kell.

Példa: Árfüggvény

Bemenet: 1000 Ft és 20% kedvezmény; elvárt eredmény: 800 Ft. Új eset: 0 Ft vagy a megengedettnél nagyobb kedvezmény – a helyes viselkedést előbb rögzíteni kell.

03 / TANANYAG

Integrációs teszt: az együttműködés kockázatai

Integrációs tesztben a részek közötti kapcsolatot vizsgáljuk. Helyesen számolhat a kedvezményfüggvény, és helyesen menthet az adatbázis, de összekapcsolva rossz mezőt vagy mértékegységet adhatnak át. Fontos hibaforrás az eltérő dátumformátum, a hibás hívási sorrend, az időtúllépés és a duplán feldolgozott üzenet. A tesztnek ezért a közös eredményt és a kommunikáció állapotát is meg kell néznie.

A kapcsolat lehet két komponens között vagy külön rendszerek között. Egy komponensek közötti tesztnél a rendszer belső részeit kötjük össze; rendszerek közötti integrációnál például egy iskolai portál és egy e-mail szolgáltató együttműködését ellenőrizzük. Az elkülönített komponensteszt fontos előfeltétel lehet, de nem bizonyítja, hogy az elemek együtt is megfelelően működnek.

Példa: Eltérő formátum

A kosár 0,2 értékkel jelöli a 20%-ot, a pénztár 20-at vár. Külön-külön helyesnek tűnhetnek; a két rész összekapcsolásakor hibás végösszeg keletkezik.

A fókusz változása
  1. 1KedvezményfüggvényA rész külön számít megfelelően
  2. 2Kosár → pénztárAz összeg és a mértékegység átadása
  3. 3Pénztár → mentésA rendelés állapotának átadása
  4. 4Értesítő szolgáltatásA külső rendszer kapcsolata is vizsgálható

A komponens izolált ellenőrzése után a nyilak jelzik az integráció során vizsgált adatkapcsolatokat.

04 / TANANYAG

Miért nem elég a komponens eredménye?

A kedvezményfüggvény helyes lehet minden kipróbált bemeneten, de ha a kosár hibás mértékegységgel hívja, a felhasználó rossz árat kap. A komponens izolált vizsgálata elkerülheti a külső szolgáltatások ingadozását; éppen ez a korlátja is: nem mond semmit az igazi kapcsolódásról. Integrációban már a mezőket, hívásokat és hibakezelést is ellenőrizni kell.

Ha az API egyik válasza sikertelen, az ügyféloldalnak tudnia kell kezelni. Lehetséges, hogy az adatbázis már mentette a foglalást, de az értesítő hibázik. A két komponens összehangolt állapota ilyenkor a kérdés: újrapróbáljuk-e az értesítést, és hogyan akadályozzuk meg a dupla foglalást? Az elvárást a rendszer szabályai alapján kell megfogalmazni.

Példa: Téves biztonságérzet

Az izolált tesztben az értesítő mindig sikeres próbaválaszt ad. A tényleges integrációs tesztben egy késő válasz miatt a foglalás kétszer fut le. A helyettesítés korlátja így válik láthatóvá.

05 / TANANYAG

Értelmes tesztadat a határfelületeken

Az integrációs esetet ne csak egy szokásos adattal próbáld. Ellenőrizd a hiányzó mezőt, a nagyobb adatmennyiséget, a lejárt jogosultságot és a külső szolgáltatás hibaüzenetét is, ha ezek fontos kockázatok. A jó teszt megmutatja, hol figyelhető meg a váratlan adat: az API válaszában, a tárolt rekordban vagy a felhasználói állapotban.

A próbaválaszt adó helyettesítő eszköz jól jöhet egy elkülönített tesztben, de az integrációs körben legalább az érintett valódi interfészt is vizsgáld. Ha az összekapcsolás során eltérés jelentkezik, jegyezd fel a két részegység verzióját, az átadott adatot és a hívás eredményét. Ezek nélkül az eredmény másnak nehezen reprodukálható.

Tanári tipp

A kapcsolat tesztjénél mindkét oldalt nézd: mit küldtünk, és mit értett belőle a fogadó?

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

Komponens- és integrációs tesztelés

A komponens teszt egy elkülönített egység viselkedését ellenőrzi, gyakran fejlesztői környezetben. A teszt fókusza lehet egy függvény, osztály, modul vagy szolgáltatás. Az egység izolálásához helyettesítő objektumok segíthetnek, különösen külső szolgáltatások és nehezen előállítható állapotok esetén.

Az integrációs teszt azt vizsgálja, helyesen működnek-e együtt a komponensek. Nemcsak az adatátadás, hanem a hívási sorrend, hibakezelés, protokoll, konfiguráció és időzítés is problémát okozhat. Az integrációt fokozatosan építve könnyebb megállapítani, mely kapcsolat hibásodott meg.

Új, iskolai példa

A tanulói felület komponensének tesztje ellenőrzi a megadott jegy megjelenítését. Az integrációs teszt azt vizsgálja, hogy a felület a jogosultsági szolgáltatásból a megfelelő tanuló adatait kapja-e.

Gondolkodtató gyakorlófeladat

Készíts egy komponens- és egy integrációs tesztötletet az iskolai értesítési rendszerhez.

PRÓBÁLD KI

Órai feladat

Egy kuponmodul a megadott összegből helyesen számítja a kedvezményt, de a pénztárban rossz végösszeg jelenik meg. Adj egy komponenstesztet és két integrációs tesztet; mindegyiknél írd le az elvárt eredményt!

ELLENŐRIZD MAGAD

A kedvezményszámító függvény önmagában helyes, de a pénztárba rossz összeg jut. Melyik vizsgálat célozza közvetlenül ezt az eltérést?

Amit érdemes megjegyezni

  • A komponensteszt egy körülhatárolt rész viselkedését vizsgálja.
  • Az integrációs teszt a kapcsolódó részek együttműködését és adatátadását ellenőrzi.
  • A külön-külön helyes összetevők együtt is okozhatnak hibát.