9. óra · Szoftvertesztelés alapjai

Szoftverfejlesztési modellek

V-modell és iteratív életciklusok: hol kapcsolódik be a tesztelés?

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

  • Összekapcsolod a V-modell fejlesztési és tesztelési tevékenységeit.
  • Példával bemutatod az iteráció és az inkrementum közti különbséget.
  • Megtervezed, mikor milyen visszajelzést érdemes kérni egy új funkcióról.

Az óra témái

  • V-modell
  • Iteratív életciklusok
01 / TANANYAG

Az életciklus a munka szervezésének térképe

A szoftverfejlesztési életciklus azt írja le, milyen tevékenységekkel jutunk el az igény felismerésétől a működő termékig, majd a módosításokig. Követelményeket tisztázunk, megtervezzük a részeket, megvalósítjuk őket, ellenőrizzük az eredményt és visszajelzést gyűjtünk. A modell segít egyeztetni, kinek mikor milyen információra van szüksége; önmagában nem ír elő minden projektre egyetlen helyes munkarendet.

A tesztelést már az első tervekhez érdemes kapcsolni. Ha a követelmény csak annyit mond, hogy „gyorsan megjelenik az eredmény”, a tesztelő már a fejlesztés előtt rákérdezhet a mérés módjára. A később futtatott próba így előre tisztázott elvárást ellenőriz, és a csapat a követelmény félreértését is hamarabb észlelheti.

Példa: Tanfolyami jelentkezés

Igény: a betelt tanfolyamra várólista kell. Már a követelmény elemzésekor kérdés, hogyan kezeljük az egyszerre érkező jelentkezéseket; ebből később integrációs és rendszertesztek is születhetnek.

02 / TANANYAG

A V-modell párosításainak értelme

A V-modell bal oldala a pontosítást és a részletezést mutatja a követelménytől a komponens megtervezéséig; az alsó pont körül van a megvalósítás. A jobb oldalon az elkészült részek ellenőrzése egyre nagyobb egységekben történik. Az ábra gyakori olvasata: a komponens terve a komponensteszt tervezéséhez, a kapcsolat terve az integrációs teszthez, a rendszerkövetelmények a rendszerteszthez, a felhasználói igények az elfogadási teszt tervezéséhez adnak alapot.

A két oldal kapcsolata nem azt jelenti, hogy csak a kódolás után szabad a tesztre gondolni. Az elvárt eredményt és az ellenőrizhetőséget már a bal oldalon vizsgáljuk. A tényleges végrehajtás sokszor később következik, amikor az adott rész elkészült. Ha a jobb oldalon eltérést találunk, a bal oldali terv vagy követelmény helyességét is újra meg kell vizsgálni.

Tanári tipp

A V ábrán minden ellenőrzéshez nevezd meg a teszt alapját: melyik dokumentum vagy igény alapján mondod, hogy a viselkedés helyes?

03 / TANANYAG

Iteráció, inkrementum és folyamatos visszajelzés

Iteratív munkában egy megoldást többször átgondolunk és finomítunk a kapott visszajelzés alapján. Inkrementális fejlesztéskor használható részekkel bővül a termék; egy inkrementum lehet például a keresés vagy az értesítés új változata. A két megközelítés együtt is jelen lehet. Egyetlen cikluson belül is történhet tervezés, kódolás, felülvizsgálat és tesztelés; minden új változatnál ellenőrizzük a friss funkciót és a már működő részeket is.

Egy iteratív modell nem mentesít a később összeálló teljes rendszer vizsgálata alól. A külön elkészült elemek együtt másként viselkedhetnek. Az újabb körökben változó követelményekhez a tesztadatokat és az elvárt eredményeket is frissíteni kell. A választott életciklustól függően eltérhet, hogy a tesztszintek mikor kezdődnek és időben mennyire fednek át.

Példa: Három kör

Első kör: jelentkezés mentése. Második: várólista. Harmadik: e-mail értesítés. Minden körben az új részt teszteljük, majd ellenőrizzük, hogy az előző körök jelentkezései továbbra is helyesen működnek.

A V-modell kapcsolódó nézőpontjai
  1. 1Felhasználói igény ↔ elfogadásA valódi használati cél teljesül?
  2. 2Rendszerkövetelmény ↔ rendszertesztA teljes rendszer megfelel az előírásnak?
  3. 3Kapcsolatok terve ↔ integrációA részek jól működnek együtt?
  4. 4Komponens terve ↔ komponenstesztHelyes a különálló rész?

A két oldal kapcsolatot ábrázol. A tesztek tervezése már a megfelelő követelmény vagy terv készítésekor elkezdhető.

04 / TANANYAG

A V ábra értelmezése egy konkrét döntésnél

Amikor az iskolai kurzusportálról még csak az igény ismert, az elfogadáshoz szükséges kérdések már feltehetők: mit akar elvégezni a diák és az ügyintéző? A rendszerterv részletezésekor meghatározható, hogyan bizonyítjuk majd a teljes folyamat megfelelését. A kapcsolatok tervéből adatátadási próbák, a komponens tervéből a kis egységekhez tartozó próbák származhatnak. Az ábra ezért nem csak időrendet, hanem ellenőrizhető kapcsolatok sorát mutatja.

Ha a jelentkezés rendszertesztje megbukik, az eltérés forrása lehet a felhasználói igény rossz értelmezése, egy ellentmondó rendszerkövetelmény vagy egy hibás komponens is. A V-modell nem garantálja, hogy minden eltérés helye azonnal látható; arra emlékeztet, milyen munkatermékekhez érdemes visszatérni. A tesztelés és a hibakeresés így más, egymást segítő feladat.

Tanári tipp

Ne keverd össze a teszt alapját azzal, hogy a hiba végül hol lesz a kódban.

05 / TANANYAG

Iteráció és változó kockázat

A rövid fejlesztési körök előnye, hogy a diákok és tanárok hamar kipróbálhatják a keresés vagy jelentkezés egy részét. Egy korai visszajelzésből kiderülhet, hogy a betelt kurzusokat is látniuk kell, vagy hogy a foglalás visszavonása fontos. Ez új követelmény és új teszteset, nem pusztán a régi kör ismétlése. A hasznos régi próbák megmaradhatnak regresszióra.

Az iterációt sem szabad csak 'gyorsasággal' azonosítani. A ciklus eredménye akkor értékelhető, ha az elvárt viselkedés ismert, a fontos ellenőrzések elvégezhetők, és a visszajelzés visszakerül a következő tervezési döntésbe. Ha egy körben új adatmodellt vezetünk be, a közös adatokat használó korábbi részek ellenőrzése is szükséges lehet.

Példa: Visszajelzésből következő teszt

Az első keresési változatból hiányzik a betelt kurzusok szűrése. Az új körben a szűrő elvárását pontosítják; a meglévő szöveges keresés tesztjeit megtartják.

RÉSZLETES ÓRAI JEGYZET

Részletes jegyzet: fejlesztési életciklus-modellek

A tesztelés nem elszigetelt, a fejlesztés végén kezdődő tevékenység. A fejlesztési modell befolyásolja, mikor, mit és milyen gyakran vizsgálunk.

JEGYZET · 01

A tesztelés és a fejlesztés kapcsolata

Minden fejlesztési tevékenységhez illeszkedő tesztelési tevékenység kapcsolódhat. A tesztek elemzése és tervezése már az adott szinthez tartozó követelmények vagy tervek készítésekor elkezdődhet. A tesztelők korai bevonása segít a dokumentumok felülvizsgálatában és az elvárások pontosításában.

A fejlesztési életciklus hat az ellenőrzés tárgyára, időpontjára és gyakoriságára, továbbá a regressziós tesztelésre és az alkalmazható technikákra. Rövid kiadási ciklusnál gyors visszajelzésre és automatizálásra lehet szükség; erősen szabályozott környezetben részletes dokumentációra és visszakövethetőségre is.

JEGYZET · 02

Vízesésmodell

A vízesésmodellben a fő tevékenységek egymás után következnek: a megvalósíthatóság vizsgálata, a követelmények rögzítése, a tervezés, a megvalósítás, a tesztelés és az üzemeltetés. Jól körülhatárolható és stabil követelményeknél az egymásra épülő szakaszok és mérföldkövek áttekinthető tervet adhatnak.

A lineáris működés hátránya, hogy a megrendelő gyakran csak későn látja a működő rendszert, a változó igények kezelése költséges lehet, és az integráció során egyszerre sok hiba jelentkezhet. Ha egy korai félreértés csak a teszteléskor derül ki, több korábbi munkafázist is újra kell végezni.

  • Erősség: világos szakaszok, mérföldkövek és tervezhetőség.
  • Korlát: késői visszajelzés, nehézkes változtatás és későn összeérő részek.
JEGYZET · 03

V-modell és a tesztszintek

A V-modell a fejlesztési lépéseket a hozzájuk illeszkedő tesztelési szintekkel kapcsolja össze. A követelményekhez átvételi ellenőrzés, a rendszertervhez rendszerteszt, a részletesebb tervekhez integrációs teszt, a komponens kialakításához komponensteszt kapcsolódhat. A tesztek tervezése így nem vár a kód elkészültéig.

A V-modell nem azt jelenti, hogy minden projektnek ugyanazt a merev folyamatot kell követnie. Arra irányítja a figyelmet, hogy a fejlesztési munkatermékekhez már korán rendeljünk ellenőrzési célt, és minden tesztszintnek legyen saját felelőssége és kilépési feltétele.

JEGYZET · 04

Iteratív és inkrementális életciklusok

Az iteratív fejlesztés során a csapat ismétlődő ciklusokban pontosít, tervez, megvalósít és tesztel. Az inkrementális megközelítésben minden átadás működő funkciókkal bővíti a terméket. A rövidebb visszajelzési körök lehetővé teszik, hogy a felhasználó korán kipróbálja a megoldást, és az igények változására reagáljon a csapat.

Minden ciklusban szükség van az új funkciók ellenőrzésére, valamint a már működő részek regressziós vizsgálatára. A gyorsabb fejlesztés nem jelenti a tesztelés elhagyását: a tesztelést a ciklusokba kell beépíteni. Az iterációk hossza és a dokumentáció részletessége a projekttől, a kockázattól és az előírásoktól függ.

Alapfogalmak

Verifikáció
Annak vizsgálata, hogy az átadandó termék a meghatározott követelményeknek megfelelően készült-e el.
Validáció
Annak vizsgálata, hogy a termék a tervezett használatban megfelel-e a felhasználó céljának és megoldja-e a problémáját.
V-modell
Olyan fejlesztési és tesztelési keret, amely a fejlesztési szakaszokat a hozzájuk illeszkedő tesztszintekkel kapcsolja össze.
Inkrementális fejlesztés
A termék fokozatos bővítése olyan kisebb, működő részekkel, amelyek mindegyike a teljes funkcionalitás egy részét adja.
Iteratív fejlesztés
A megoldás ismétlődő ciklusokban történő pontosítása, megvalósítása, tesztelése és visszajelzések alapján történő továbbfejlesztése.
Tesztszint
Összetartozó teszttevékenységek csoportja, amely a rendszer meghatározott méretű részét és saját tesztcélt vizsgál.
Fejlesztési modellVisszajelzés idejeTesztelési következmény
VízesésTöbbnyire a szakaszok végénA korai felülvizsgálat csökkenti a későn felfedezett hibák költségét.
V-modellA fejlesztési szakaszokhoz rendelveA teszttervezés párhuzamosan indulhat a követelményekkel és tervekkel.
Iteratív / inkrementálisMinden rövid ciklusbanAz új funkció mellett regressziós ellenőrzésre is szükség van.
RÉSZLETES ELMÉLETI KIEGÉSZÍTÉS

A szoftverfejlesztési életciklusok és a tesztelés

A fejlesztési életciklus meghatározza, mikor készülnek el a termék részei, hogyan jut el a változás a felhasználóhoz, és hol kap visszajelzést a tesztelés. A lineáris megközelítésben a fázisok jól elkülönülnek; a korai teszteléshez már a követelmények és tervek felülvizsgálata is hozzátartozik. Iteratív vagy inkrementális fejlesztésben a működő részek rövid ciklusokban bővülnek.

A tesztelési munka a fejlesztési modellhez igazodik: együtt változnak a teszttervek, tesztadatok és ellenőrzési szintek. Minden életciklusban hasznos a korai visszajelzés, az ismételhető teszt és a felelősség világos kijelölése. A modell kiválasztását a termék kockázata, a szabályozási igények és a változások gyakorisága is befolyásolja.

Új, iskolai példa

Az iskolai honlap teljes éves átadása helyett a csapat először a hírek modult adja ki, majd a naptárat, végül a jelentkezést; minden részhez külön elfogadási ellenőrzés kapcsolódik.

Gondolkodtató gyakorlófeladat

Hasonlíts össze két fejlesztési megközelítést a visszajelzés gyorsasága és a változáskezelés szempontjából.

PRÓBÁLD KI

Órai feladat

Egy iskola először csak a kurzuskeresőt készíti el, később a jelentkezést, végül a várólistát. Nevezd meg az inkrementumokat, és mondj egy-egy korai ellenőrzést a V-modell bal oldalára, illetve egy integrációs tesztet a jobb oldalra!

ELLENŐRIZD MAGAD

Melyik állítás helyes a V-modellről?

Amit érdemes megjegyezni

  • A V-modell a fejlesztési alapokat tesztelési szintekkel kapcsolja össze.
  • Iterációban finomítjuk a megoldást; inkrementummal használható funkciót adunk hozzá.
  • A tesztelés minden életciklusban a megfelelő időben adott visszajelzés része.