6. óra · Szoftvertesztelés alapjai

Hogyan tehetünk eleget a tervezési céljainknak?

Hibacsoportok, tesztek megújítása, hibakeresés és a hibamentesség tévhite

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

  • Megmagyarázod, miért érdemes a hibák előfordulási helyét figyelni.
  • Elválasztod a tesztelést a hibakereséstől és a javítástól.
  • Megfogalmazod, miért nem azonos a hibák hiánya a jó termékkel.

Az óra témái

  • A programhibákra összpontosítás segíti a teszttervezést
  • A programhiba-csoportok idővel átalakulnak
  • A hibakeresés eltávolítja a programhibát
  • A nem talált hiba nem bizonyítja a felhasználói elfogadást
01 / TANANYAG

A feltárt hibák segíthetik a teszttervezést

A tapasztalat szerint egyes rendszerrészekben több hiba fordul elő, mint másutt. Ha egy összetett fizetési modulban sorozatosan találnak hibákat, indokolt lehet ott több különböző bemenettel, állapottal és környezettel próbálkozni. A korábbi hibajegyek segítenek megtalálni a kockázatos területeket, de nem bizonyítják, hogy a többi rész hibamentes.

A termék változik, ezért a hibák eloszlása is változhat. Az új funkció, az új felhasználói szokás vagy a megváltozott környezet más hibákat hozhat felszínre. Ha mindig csak ugyanazokat a teszteket ismételjük, egy idő után kevés új információt kapunk. Ezért a teszteseteket és a tesztadatokat időnként felül kell vizsgálni. A stabil, automatizált regressziós ellenőrzések ismétlése ugyanakkor továbbra is hasznos.

Példa: Mi maradhat ki?

Egy kuponmezőt hónapokig ugyanazzal a kóddal próbálnak. Minden teszt sikeres. Később bevezetnek lejárati dátumot és felhasználónkénti korlátot; a régi tesztek ezt a két új szabályt nem ellenőrzik.

02 / TANANYAG

Tesztelés, hibakeresés, javítás

A tesztelő reprodukálható eltérést figyel meg, leírja a lépéseket, a környezetet, a bemenetet, az elvárt és a tényleges eredményt. A hibakeresés során a hiba okát keresik: naplókat, adatokat és kódot vizsgálnak, majd megszüntetik a megtalált hibát. A kettő összekapcsolódik, de külön tevékenység.

Javítás után megerősítő teszttel ellenőrzik, hogy az eredeti probléma valóban megszűnt-e. Regressziós teszttel azt vizsgálják, hogy a módosítás nem okozott-e máshol új problémát. Ha például a kedvezmény számítását javították, érdemes az eredeti kedvezményes rendelés mellett a normál rendelést és a végösszeg kiszámítását is újra ellenőrizni.

Tanári tipp

A hibajegy ne csak azt írja, hogy „rossz a kupon”, hanem pontosan reprodukálható helyzetet adjon.

03 / TANANYAG

Ha nem találunk hibát, mit állíthatunk?

A sikeres tesztekből azt mondhatjuk, hogy az ellenőrzött esetekben a rendszer a megadott elvárás szerint viselkedett. Nem következik belőlük, hogy minden lehetséges esetben hibátlan. A nem talált hiba mögött lehet jó minőség, de hiányos tesztadat, nem megfelelő környezet vagy gyenge tesztterv is.

Még a jól működő program sem biztos, hogy használható vagy elfogadható a felhasználónak. Egy alkalmazás pontosan számolhat, de olyan munkafolyamatot támogathat, amelyre az ügyfélnek nincs szüksége. A követelmények teljesítésének ellenőrzését ezért ki kell egészíteni a felhasználói igények vizsgálatával. A következő órán a tesztelési alapelveket önállóan is rendszerezzük.

Egy talált eltérésből jobb tesztterv
  1. 1MegfigyelésHol és mikor jelent meg az eltérés?
  2. 2MintázatVannak hasonló hibák a környéken?
  3. 3Új tesztekMás adatok, állapotok, környezetek
  4. 4ÚjraértékelésA termék és a kockázat változik

A tesztelési erőfeszítést a talált hibákhoz igazítjuk, de a változás miatt nem ragadunk örökre ugyanazon tesztekhez.

04 / TANANYAG

A hibák mintázatából kiinduló teszttervezés

Ha egy modulban ismétlődően találnak hibát, indokolt ott több bemenettel, több állapotból és több környezetben vizsgálódni. Például egy kedvezményrendszerben előforduló több árképzési hiba után nem elég ugyanazt a rendelést újra megnyitni: meg kell nézni az egyidejű kedvezményeket, a kupon lejáratát, a kerekítést és a visszatérítést is. A korábbi hibák tehát nyomok a teszttervhez, nem teljes térkép a rendszer minden hibájáról.

A hibák megjelenése idővel változik. Javítások után a régi eltérések eltűnhetnek, új funkciókban vagy a kapcsolódó rendszerekben mások keletkezhetnek. Ha ugyanazok a tesztek sorra sikeresek, az jelezheti a rendszer javulását, de azt is, hogy a tesztjeink már nem célozzák az új kockázatokat. A tesztkészletet ezért tudatosan frissítjük: új adatot, új üzleti szabályt és új használati mintát veszünk fel.

Példa: Változó hibacsoport

Először az alap kuponszámítás hibás. Javítás után bevezetnek ügyfelenkénti korlátot: a következő hibák már a jogosultsághoz vagy az ismételt felhasználáshoz kapcsolódhatnak.

05 / TANANYAG

Mit csinál a hibakeresés – és mit a tesztelés?

A tesztelés feltárja és dokumentálja az eltérést: bemenet, lépések, elvárt és tényleges eredmény, környezet. A hibakeresés (debugging) a megfigyelésből kiindulva megkeresi és megszünteti a hiba okát a munkatermékben. Ha egy szoftver 0 forintot számláz a második kupon után, a tesztelő rögzíti a helyzetet; a hibakereső a számítás menetét és az adatok átalakulását vizsgálja. A hibajavítás utáni teszt ismét bizonyítékot gyűjt.

A javítás ellenőrzése két külön kérdést tesz fel. A megerősítő teszt szerint az eredetileg hibás eset most helyes? A regressziós teszt szerint a változtatás nem rontott el egy másik, korábban működő esetet? Például a második kupon elutasításának javítása után az első érvényes kupon elfogadását és a végösszeg számítását is ellenőrizzük. A 'javítottuk' állítás nem helyettesíti ezeket a megfigyeléseket.

Tanári tipp

A hibajegy legyen újrajátszható. Az 'elromlott a kupon' helyett írd le a kupon típusát, a felhasználó állapotát, a pontos lépéseket és az összegeket.

06 / TANANYAG

Hibamentesség és felhasználói elfogadás két külön kérdés

Ha a vizsgált esetekben nem találtunk hibát, csak a tesztelés határain belül tudunk állítást tenni. Lehet, hogy valóban kevés a hiba; de az is lehet, hogy fontos esetek hiányoznak a tervből vagy nem jó környezetben próbáltunk. A nulla talált hiba nem egyenlő a bizonyított hibamentességgel. Külön kell vizsgálni azt is, hogy az alkalmazás hasznos-e annak, aki használja, és teljesíti-e a valódi igényét.

Egy jegyfoglaló rendszer például minden dokumentált számítást pontosan végezhet, mégis alkalmatlan lehet, ha a felhasználó nem tud ülőhelyet választani, pedig ez a vásárlás döntő feltétele. Ilyenkor nem feltétlenül a kódban van hiba: lehet, hogy a csapat eleve rossz vagy hiányos célt fogalmazott meg. A tervezési célok teljesítéséhez tehát a hibák keresése mellett a célok helyességét is vissza kell kérdezni a felhasználótól. A tesztelési alapelvek teljes rendszerezése a következő, 7. órában következik.

Példa: Záró döntési helyzet

Tíz teszt mind zöld, de a felhasználók nem tudják befejezni a fő folyamatot. A kiadásról nem dönthetsz kizárólag a zöld tesztek száma alapján: vizsgáld meg, valóban a fontos célokat fedik-e le.

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

A tesztelési folyamat és a visszacsatolás

A tesztelési munka tervezéssel kezdődik: rögzítjük a célt, a hatókört, a felelősségeket, az időt, az eszközöket és a kockázatokat. Ezután elemezzük a tesztalapot, meghatározzuk a tesztfeltételeket, megtervezzük az eseteket és adatokat, majd előkészítjük a környezetet. A végrehajtás eredményeit rögzítjük, eltérés esetén hibát jelentünk.

A lezáráskor összegezzük az eredményeket, a nyitott hibákat, a lefedettséget és a tanulságokat. A tevékenységek visszatérőek: egy feltárt probléma módosíthatja a kockázati értékelést, a tesztadatokat vagy akár a követelmények értelmezését. A nyomon követhetőség összekapcsolja az elvárást, a tesztfeltételt, a tesztesetet és az eredményt.

Új, iskolai példa

Az órarendmodul kiadásánál a csapat előbb kijelöli az időpontütközést ellenőrző teszteket, elkészíti a tesztosztályokat, futtat, majd a hibajelentés után újrateszteli a javítást és regressziós ellenőrzést végez.

Gondolkodtató gyakorlófeladat

Rajzolj folyamatábrát a követelménytől a tesztlezárásig, és jelöld meg, hová térhet vissza a munka egy új hiba miatt.

PRÓBÁLD KI

Órai feladat

A kuponrendszer 20 meglévő tesztje mind sikeres. Most bevezettek lejárati időt és felhasználónként egyszeri felhasználást. Javasolj négy új tesztet, majd írd le, mit ellenőriznél a javítás után.

ELLENŐRIZD MAGAD

Mit jelent, ha egy gondosan végrehajtott tesztsorozatban nem találtunk hibát?

Amit érdemes megjegyezni

  • A korábbi hibák alapján irányíthatjuk a tesztelést, de a teszteket meg is kell újítani.
  • A hibakeresés és a javítás nem ugyanaz, mint a tesztelés.
  • A talált hibák hiánya nem bizonyítja sem a teljes hibamentességet, sem a felhasználói értéket.