2. óra · Szoftvertesztelés alapjai

Miért van szükség tesztelésre?

A szoftverrendszerek környezete és a programhibák okai

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

  • Megnevezed, mitől függ egy szoftver működése a programkódon túl.
  • Elkülöníted az emberi tévedést, a hibát és a megfigyelhető meghibásodást.
  • Egy konkrét helyzetben azonosítasz lehetséges okokat és tesztelési kockázatokat.

Az óra témái

  • A szoftverrendszerek környezete
  • Programhibák okai
01 / TANANYAG

A szoftver nem elszigetelten működik

Egy alkalmazás eredményét nemcsak a saját programkódja határozza meg. Befolyásolhatja a böngésző, az operációs rendszer, a hálózat, az adatbázis, egy külső szolgáltatás, a jogosultságok beállítása és a felhasználó által bevitt adat is. Egy megoldás ezért az egyik környezetben jól működhet, a másikban viszont hibásan viselkedhet.

Képzelj el egy online jegyvásárlást. A felhasználó kiválasztja a helyét, fizet, majd várja a visszaigazolást. A folyamat érinti a felületet, a készletnyilvántartást, a fizetési szolgáltatót és az e-mailküldést. Ha a kapcsolat megszakad a fizetés és a foglalás rögzítése között, külön vizsgálni kell, nem keletkezett-e terhelés jegy nélkül. A sikeres kattintás önmagában még nem bizonyítja a teljes folyamat sikerét.

Példa: Vizsgáld a teljes utat

Egy működő regisztrációs gomb mellett is meghiúsulhat a regisztráció, ha az adatbázis nem ment, vagy az aktiváló e-mail nem érkezik meg. A teszt célja a felhasználó számára fontos végeredmény ellenőrzése.

02 / TANANYAG

Honnan származhatnak a hibák?

A hibák sokszor emberi tévedésből indulnak ki: félreértett követelmény, elgépelés, hibás feltételezés vagy kapkodva elvégzett módosítás. Az okok között szerepelhet az összetett feladat, az időnyomás, a hiányos kommunikáció vagy a nem megfelelő ellenőrzés is. Hiba már a követelményben vagy a tervben is lehet, nem csupán a forráskódban.

Példa: a szabály szerint a 18. életévét betöltött felhasználó regisztrálhat, de a fejlesztő a feltételbe „életkor > 18” kifejezést ír. A félreértés emberi tévedés; a hibás feltétel a termékben lévő hiba; amikor a 18 éves jelentkezőt a rendszer elutasítja, azt meghibásodásként figyeljük meg. A három fogalom nem ugyanaz.

Tanári tipp

A „nem működik” kijelentés helyett mindig kérdezd meg: melyik lépés, melyik adat, milyen környezet és milyen elvárt eredmény mellett?

03 / TANANYAG

A tesztelés a kockázatot csökkenti

A tesztelés segít információt szerezni a termék minőségéről és csökkenti annak esélyét, hogy súlyos hibák észrevétlenül maradjanak. Nem ígérheti, hogy minden lehetséges környezetet és bemenetet kipróbáltunk. Azokat a helyzeteket érdemes előre venni, amelyek valószínűek, nagy hatásúak vagy sok embert érintenek.

Egy ügyfélkapunál például fontosabb lehet a bejelentkezés, a jogosultságkezelés és a mentett adatok épsége, mint egy ritkán megnyitott súgóoldal apró igazítási hibája. A sorrend megválasztása nem jelenti azt, hogy a többi rész hibátlan: csak a rendelkezésre álló idő tudatos felhasználását.

Egy művelet több rendszert érint
  1. 1BöngészőŰrlap és bevitt adatok
  2. 2HálózatA kérés továbbítása
  3. 3AlkalmazásSzabályok és jogosultságok
  4. 4AdatbázisTartósan mentett eredmény

Az ábra nem azt jelenti, hogy minden hiba a programkódban van. A teljes felhasználói folyamatot kell megfigyelni.

04 / TANANYAG

A környezet rétegei: hol romolhat el ugyanaz a művelet?

A tesztelt rendszernek vannak belső részei – felület, üzleti szabályok, adatkezelés –, és vannak kapcsolódási pontjai. A böngésző verziója, a mobil képernyő mérete, az időzóna, a hálózat sebessége, egy külső fizetési szolgáltató vagy a szerver beállítása ugyanannak a funkciónak más-más feltételeket teremt. Teszttervezéskor ezért a 'mit csinál a gomb?' mellé oda kell írni azt is, hogy milyen környezetben és milyen adatokkal vizsgáljuk.

Képzeld el, hogy a beadási határidő szeptember 30. 23:59. Ha a böngésző és a szerver eltérő időzónában van, a felület még engedheti a beadást, a szerver viszont elutasíthatja. Nem biztos, hogy a gomb vagy az adatbázis hibás: lehet, hogy a két rendszer nem ugyanúgy értelmezi az időpontot. A jó hibajegy rögzíti az eszközt, az időt, az adatot és a tényleges viselkedést.

Példa: Környezeti tesztötlet

Ugyanazt a határidő-közeli beadást próbáld ki telefonon és asztali böngészőben, lassú kapcsolattal is. Mindhárom esetben ellenőrizd a mentett állapotot, ne csak az üzenetet.

05 / TANANYAG

Emberi és technikai okok a hiba mögött

A programhibák egyik forrása a félreértés. A megrendelő 'aktív diákot' mond, de nem tisztázzák, hogy a szünetelő jogviszony ide tartozik-e. A fejlesztő jóhiszeműen választ egy értelmezést, a tesztelő pedig később eltérést talál. Ha a szabályt már a tervezéskor konkrét példákkal ellenőrizték volna, a hibás megvalósítás megelőzhető lett volna. Ezért a követelményeket is érdemes tesztelési szemmel olvasni.

Más ok lehet a bonyolult feltételrendszer, a sok függőség, az utolsó pillanatban végzett módosítás, a hiányos tesztadat vagy a nem megfelelő ellenőrzési folyamat. A felhasználó által észlelt hiba leírásából még nem következik biztosan a kiváltó ok. A tesztelő először a megismételhető tényeket gyűjti, utána a csapat vizsgálja, mi okozta az eltérést.

Tanári tipp

Ne nevezz meg bizonyíték nélkül kódbeli okot: írd le, mit láttál, és milyen helyzetben tudod újra előidézni.

06 / TANANYAG

Kis elemzés: a sikeres üzenet nem elég

Egy tanulmányi rendszerben a tanuló leadja a választ. Az oldal zöld visszajelzést mutat, de a tanár nem lát beadást. Négy külön ellenőrzési pontot különíthetünk el: elküldte-e a böngésző a kérést; befogadta-e a szerver; tartósan mentődött-e az adat; ugyanazt a rekordot mutatja-e a tanári felület. Minden pontnak saját elvárt eredménye van. A felület látványa önmagában nem helyettesíti az adatok ellenőrzését.

A fontos tanulság nem az, hogy minden technikai részletet tudni kell, hanem hogy egy szoftver több elem együttműködéséből áll. Amikor hibát keresünk, rendszerszinten gondolkodunk: mi történt előtte, hol haladt át az információ, mi lett a végső állapot? A tesztelés így csökkenti annak esélyét, hogy egy látványos, de felszínes ellenőrzés hamis biztonságérzetet adjon.

Példa: Önellenőrző gondolatkísérlet

Ha a szerver mentett, de a tanári felület nem frissült, mit ellenőriznél először: a mentés meglétét, a tanári jogosultságot vagy a felületi gyorsítótárat? Indokold a sorrendet a megfigyelt tények alapján.

RÉSZLETES ÓRAI JEGYZET

Részletes jegyzet: környezet, kockázat és hibák

A szoftver működését a programon kívüli körülmények is befolyásolják. A tesztelés megtervezésekor ezért a teljes rendszert és a használati helyzetet kell figyelembe venni.

JEGYZET · 01

A kockázat két összetevője

A kockázat annak lehetősége, hogy egy bizonytalan esemény kedvezőtlen következménnyel jár. A mérlegeléshez a bekövetkezés valószínűségét és a lehetséges hatás súlyosságát együtt vizsgáljuk. Ritka, de súlyos következményű hibára is érdemes figyelni; egy gyakori, apró kellemetlenség pedig nagy felhasználói körben válhat jelentőssé.

Ugyanaz a hiba más-más súlyú lehet különböző rendszerekben. Egy bemutatkozó oldalon egy elírás elsősorban hitelességi problémát okozhat. Egy egészségügyi vagy pénzügyi rendszer hibás számítása közvetlenül befolyásolhat fontos döntéseket. A tesztelés mélységét ezért a felhasználási célhoz és a kockázathoz igazítjuk.

  • Milyen gyakran fordulhat elő?
  • Kire és mire hat?
  • Mekkora lehet a következmény?
  • Milyen ellenőrzés csökkentheti a kockázatot?
JEGYZET · 02

A hibák lehetséges forrásai

Emberi tévedés keletkezhet félreértett követelményből, hibás feltételezésből, elírásból vagy nem megfelelő használatból. Hiba már a specifikációban, a tervben, a programkódban vagy a kapcsolódó dokumentációban is megjelenhet. Egy kódbeli hiba csak bizonyos bemenetek, állapotok vagy környezeti feltételek mellett válhat látható meghibásodássá.

Meghibásodást nem kizárólag programhiba okozhat. Hálózati vagy hardverprobléma, hibás konfiguráció, külső szolgáltatás kiesése és szándékos rongálás is vezethet az elvárttól eltérő működéshez. A tesztelő ezért a felhasználó teljes folyamatát vizsgálja, nem csak egy képernyőt vagy egyetlen kódrészletet.

JEGYZET · 03

Miért érdemes korán keresni a hibát?

A követelményben felfedezett ellentmondást rendszerint kevesebb munkával lehet javítani, mint azt a hibát, amely már a tervezésbe, a kódba, az adatállományokba és a dokumentációba is továbbterjedt. A későn megtalált hiba javítása ezért nemcsak a kód módosítását jelentheti: újratervezést, újratesztelést, kiadási késedelmet vagy akár a felhasználók adatainak helyreállítását is igényelheti.

A követelmények korai felülvizsgálata szintén tesztelési értékű. Ha a szabály nem egyértelmű, még a fejlesztés előtt tisztázható, mit kell majd ellenőrizni. Ezzel annak a veszélye is csökken, hogy a csapat pontosan a leírást követi, de a leírás nem a felhasználó valódi igényét fejezi ki.

Alapfogalmak

Kockázat
Egy bizonytalan esemény lehetséges kedvezőtlen következménye; értékelésében a valószínűség és a hatás egyaránt számít.
Emberi tévedés
Olyan emberi cselekedet vagy döntés, amely helytelen eredményhez vezet.
Programhiba
A szoftverben vagy más munkatermékben lévő hiba, amely bizonyos körülmények között az elvárt működéstől való eltérést okozhat.
Meghibásodás
A komponens vagy rendszer megfigyelhető eltérése az elvárt eredménytől vagy szolgáltatástól.
RÉSZLETES ELMÉLETI KIEGÉSZÍTÉS

Miért kell tesztelni? A minőség és a kockázat kapcsolata

A szoftverek hibája nem pusztán technikai kellemetlenség: hatással lehet pénzre, időre, adatokra, biztonságra és a felhasználók bizalmára. A tesztelés célja ezért az, hogy ellenőrizhető információt adjon a termék állapotáról és a fennmaradó kockázatokról. A teszt nem bizonyítja, hogy minden hiba hiányzik; azt mutatja meg, hogy meghatározott körülmények között mit tapasztaltunk.

A tesztelés eredménye akkor hasznos, ha a fejlesztési döntésekhez kapcsolódik. A csapatnak tudnia kell, milyen funkciók működnek, mely területek maradtak ki, milyen súlyos hibákat találtak, és mi az, amit a rendelkezésre álló idő miatt nem ellenőriztek. A jelentés így a kockázat vállalásáról szóló döntést segíti, nem csupán a hibák felsorolását.

Új, iskolai példa

Az iskolai jelentkezési felületnél egy hibás dátum elfogadása miatt a diák lemaradhat a vizsgáról. Ugyanaz a hiba egy bemutatóoldalon kisebb következményű. A tesztelés mélységét a lehetséges hatás és a bekövetkezés esélye indokolja.

Gondolkodtató gyakorlófeladat

Írj össze három lehetséges következményt egy hiányzó beadási határidő-megjelenítésére, és rangsorold őket súlyosság szerint.

PRÓBÁLD KI

Órai feladat

Egy iskolai jelentkezési felületen a kitöltő a „Küldés” után sikeres üzenetet lát, de az adminisztrációban nem jelenik meg a jelentkezés. Írj fel négy lehetséges vizsgálati pontot, és fogalmazd meg az elvárt eredményt.

ELLENŐRIZD MAGAD

Melyik állítás különíti el helyesen a hibát és a meghibásodást?

Amit érdemes megjegyezni

  • A környezet és a kapcsolódó rendszerek is hatnak az eredményre.
  • Az emberi tévedésből hiba keletkezhet, amely bizonyos körülmények között meghibásodást okoz.
  • A tesztelés a fontos kockázatok feltárására és csökkentésére törekszik.