Szoftvertesztelés gyakorló feladatok: Valós projektek alapján


Amikor a teoretikus tudás találkozik a valósággal – és a valóság rendszerint visszaüt

Ha azt gondolod, hogy a szoftvertesztelés csak arról szól, hogy „kattints ide, kattints oda”, majd írd le, hogy „működik” vagy „nem működik”, akkor valószínűleg még nem találkoztál igazán komplex projektekkel. A valódi tesztelés olyan, mint a detektívmunka – sokszor nem is tudod, mit keresel, amíg rá nem bukkansz.

Az alábbiakban olyan gyakorlati feladatokat mutatunk be, amelyek valós projektekben fordulhatnak elő. Ezek nem a szokásos „teszteld le a bejelentkezést” típusú feladatok, hanem olyanok, amelyeknél gondolkodni kell, stratégiát kell felépíteni, és gyakran kreatívnak kell lenni.

A cikkben szereplő feladatok és esetek NEM fikciók, és a valós projektekkel való hasonlóság NEM a véletlen műve. Az élőkre és holtakra, valamint a titoktartási szerződésekre való tekintettel azonban néhány adatot megváltoztattunk – de a lényeg és a kihívások teljesen valósak.

1. Hibaüzenetek vadászata: Amikor a kód zárt könyv

Helyzet: Egy komplex pénzügyi alkalmazásnál a fejlesztők azt állítják, hogy minden hibakezelés implementálva van. A problémád csak annyi, hogy nincs hozzáférésed a forráskódhoz – csak a UI-t használhatod. A feladatod megtalálni azokat a hibaüzeneteket, amelyek valószínűleg léteznek a kódban, de a normál használat során nem jelennek meg.

Miért trükkös: Mint amikor egy épületben keresel titkos szobákat – tudod, hogy valószínűleg vannak, de nem látod, hogy hol. A hibaüzenetek gyakran „dead code” területeken vannak, amelyeket a normál tesztelés nem ér el.

Gondolkodtató tipp: Kezdd azzal, hogy térképezd fel az alkalmazás állapotait. Hol vannak azok a pontok, ahol a rendszer validációt hajt végre? Mi történik, ha ezeket a validációkat megkerülöd? Gondolj arra, hogy a frontend validáció és a backend validáció között gyakran van eltérés. A böngésző fejlesztői eszközei itt a legjobb barátaid.

2. Pairwise tesztelés: Amikor a kombinációk száma a csillagokéval versenyez

Helyzet: Egy e-commerce rendszer checkout folyamatánál 8 különböző paramétert kell tesztelned: fizetési mód (5 opció), szállítási mód (4 opció), kedvezménykód (van/nincs), új/visszatérő felhasználó, mobilapp/webes felület, különböző országok (10 fő célpiac), newsletter feliratkozás (igen/nem), ajándékcsomagolás (igen/nem).

Ha minden kombinációt tesztelnél, az 5×4×2×2×2×10×2×2 = 6400 teszteset lenne. Természetesen erre nincs időd, erőforrásod, és valószínűleg türelmed sem.

Miért intelligens megoldás?: A pairwise tesztelés azon a megfigyelésen alapul, hogy a legtöbb hiba két paraméter kölcsönhatásából adódik. Ez olyan, mint amikor egy új városban autózol – nem kell minden utcát végigjárnod ahhoz, hogy megértsd a közlekedési rendszert, elég, ha a főbb kereszteződéseket és azok kombinációit kipróbálod.

Gondolkodtató tipp: Használj pairwise tesztelés generáló eszközöket (pl. PICT, ACTS). De előtte gondold át: melyek azok a paraméterek, amelyek valószínűleg együtt okoznak problémát? A fizetési mód és az ország biztosan interakcióba lép, de a newsletter feliratkozás és az ajándékcsomagolás valószínűleg nem.

3. PICT mesterfokon: Amikor a pairwise találkozik a boundary értékekkel

Helyzet: Egy számlázórendszerben a következő paramétereket kell tesztelned:

  • Számlázási időszak (havi/negyedéves/éves)
  • Kedvezmény százalék (0-100%)
  • Tételek száma (1-1000)
  • Ügyfél típus (magánszemély/cég/nonprofit)
  • Pénznem (HUF/EUR/USD)

Itt azonban nem elég a pairwise tesztelés, mert vannak boundary értékek is: a kedvezmény 0%, 1%, 99%, 100% értékeknél lehet érdekes, a tételek számánál pedig 1, 2, 999, 1000 értékeknél.

Miért összetett?: Ez olyan, mint a modern fociban a les helyzetek stratégiai használata – nem elég az alapvető játékhelyzeteket ismerni, hanem pontosan a szélsőséges pillanatokban (játékos épp a les vonalon van, vagy 5 centivel előtte/mögötte) dől el a meccs sorsa, és ezekre a bonyolult kombinációkban is figyelni kell. A PICT eszköz képes kezelni a constraints-eket és a súlyozást is.

Gondolkodtató tipp: Definiáld külön a boundary értékeket tartalmazó almezőket. Például a kedvezmény esetén: {0, 1, 50, 99, 100}. Használd a PICT súlyozási funkcióját, hogy a kritikus kombináció gyakrabban szerepeljenek. És ne felejts el constraint-eket definiálni – például nonprofit szervezeteknek valószínűleg más kedvezményi szabályok vonatkoznak.

4. Időutazás az adatbázisban: Historikus adatok konzisztencia ellenőrzése

Helyzet:
Egy HR rendszerben az alkalmazottak fizetési adatait tárolja a rendszer. Minden változtatás historikus, tehát láthatod, hogy ki mikor mennyit keresett. A probléma: gyanús, hogy vannak időbeli inkonzisztenciák. Például valaki 2023. március 15-én 500.000 Ft-ot keresett, április 1-jén 450.000 Ft-ot, de március 20-án valahogy 480.000 Ft szerepel – ami időben később lett rögzítve.

Miért nehéz?: Ez olyan, mint egy időutazós film logikai hibáinak keresése. Az adatbázis queries-eket írni kell, amelyek képesek az átfedéseket és időbeli anomáliákat detektálni.

Gondolkodtató tipp: Használj ablakozó függvényeket (window functions) SQL-ben. A LAG() és LEAD() függvények segítségével összehasonlíthatod az egymást követő rekordokat. Keress olyan eseteket, ahol a valid_from és valid_to dátumok átfednek, vagy ahol hiányoznak időszakok. Egy jó pattern:

sql:

SELECT employee_id, 
       salary,
       valid_from,
       valid_to,
       LAG(valid_to) OVER (PARTITION BY employee_id ORDER BY valid_from) as prev_valid_to
FROM salary_history
WHERE valid_from <= LAG(valid_to) OVER (PARTITION BY employee_id ORDER BY valid_from)


5. API tesztelés: Amikor a dokumentáció hazudik

Helyzet: Egy mikroszolgáltatás-alapú rendszerben az egyik API endpoint dokumentációja szerint a válasz mindig JSON formátumban érkezik, és minden kötelező mező garantáltan benne van. A gyakorlatban azonban gyanítod, hogy vannak edge case-ek, amikor ez nem igaz.

Miért realisztikus?: Az API dokumentáció olyan, mint a GPS – általában jó, de néha olyan utakra küld, ami nem is létezik. A valós rendszerekben az API-k gyakran különböző állapotokban különbözően viselkednek.

Gondolkodtató tipp: Próbálj meg olyan kéréseket küldeni, amelyeket a dokumentáció nem említ. Mi történik, ha:

  • A request body-ban extra mezőket küldesz?
  • Hiányzó kötelező mezőket hagysz ki?
  • Rossz típusú adatokat küldesz (string helyett number)?
  • Nagyon hosszú stringeket küldesz?
  • Különleges karaktereket (emoji, unicode) használsz?

Használj fuzzing technikákat és automatizált API tesztelő eszközöket. A fuzzing lényege, hogy életszerű, de véletlen adatokat (fake) generálsz és küldöd az API-nak, hátha valami váratlan válasszal vagy hibával reagál. Postman-ben ilyenek a dinamikus változók.

6. Teljesítmény tesztelés: A lassú halál szimulálása

Helyzet:
Egy közösségi média alkalmazásnál a fejlesztők állítják, hogy a rendszer 10.000 egyidejű felhasználót képes kiszolgálni. Neked kell ezt ellenőrizni, de nem érdekel a brute force „bombázás” – értelmes terhelési forgatókönyveket kell készítened.

Miért kifinomult?: A teljesítmény tesztelés olyan, mint egy zenekar próbája – nem elég, ha minden hangszer hangos, harmóniában is kell játszaniuk. A valós felhasználók nem egyszerre nyomják meg ugyanazt a gombot.

Gondolkodtató tipp: Modellezd a valós felhasználói viselkedést. Egy tipikus session: bejelentkezés, böngészés, poszt írása, kommentelés, kijelentkezés. Használj különböző „persona” mintákat: van aki sokat olvas, van aki sokat ír, van aki csak görget. A terhelést fokozatosan növeld, és figyeld, hogy hol vannak a töréspontok.

Egy másik fontos megközelítés a hosszútávú terhelés tesztelés (soak testing): itt nem a maximális kapacitást keresed, hanem egy közepesen magas terheléssel órákig vagy napokig futtatod a rendszert. Gyakran itt bukkannak fel a memóriaszivárgások, a lassan telítődő cache-ek, vagy azok a finom hibák, amelyek csak egy idő múlva válnak kritikussá.

Összegzés: A tesztelés művészete

Ezek a feladatok mind arról szólnak, hogy a tesztelés több mint mechanikus folyamat – kreatív problémamegoldás. Minden projektben vannak rejtett csapdák, dokumentálatlan viselkedések, és váratlan események.

A jó tesztelő olyan, mint egy jó nyomozó: felteszi a megfelelő kérdéseket, követi a nyomokat, és nem adja fel, amikor az első próbálkozás nem vezetett eredményre. És igen, néha a Watson-nak kell lenned, aki a nyilvánvaló dolgokat is ellenőrzi – mert a nyilvánvaló dolgok is potenciális hibaforrások.

A legfontosabb tanács: mindig gondolj arra, hogy a fejlesztők emberek, és az emberek hibáznak. A te feladatod megtalálni ezeket a hibákat, mielőtt a felhasználók találják meg őket. És hidd el, ők biztosan meg fogják találni – általában a legrosszabb pillanatban.

Megosztás

Íratkozzon fel hírlevelünkre!

Kapcsolódó cikkek

Mi a különbség a szoftvertesztelés és a minőségbiztosítás között?

Bevezető A szoftverfejlesztés világában gyakran keveredik két fogalom: szoftvertesztelés és minőségbiztosítás (Quality Assurance, QA). Sok projektben szinonimaként használják őket, pedig valójában másról van szó. A különbség nem pusztán elméleti: a félreértések rossz folyamatokhoz, hiányos szerepkörökhöz és felesleges költségekhez vezethetnek. Ebben a cikkben áttekintjük, mit takar a két fogalom, hogyan viszonyulnak egymáshoz, és miért fontos, hogy

Az ERP bevezetések valódi költségei – és hogyan előzi meg a tesztelés a kudarcot

Bevezető Minden vállalati vezető, aki valaha ERP bevezetési projekt közelében járt, pontosan tudja azt az érzést, amikor a projekt költségei hónapról hónapra nőnek, a határidők csúsznak, és lassan úgy tűnik, mintha az egész vállalkozás egy feneketlen kútba dobná a pénzt. Az Enterprise Resource Planning rendszerek bevezetése talán a nagyvállalatok legnagyobb informatikai kihívása, és a statisztikák

Miért nem engedhetik meg a nagyvállalatok a professzionális szoftvertesztelés kihagyását?

Miért nem engedhetik meg a nagyvállalatok a professzionális szoftvertesztelés kihagyását?

Bevezető A mai digitális világban minden nagyvállalat vezetője előtt ott áll a kérdés: mennyire megbízhatók azok a szoftverrendszerek, amelyekre a cég napi működése épül? Sokszor úgy gondoljuk, hogy a szoftvertesztelési szolgáltatások csak egy újabb költségsor a már amúgy is feszített költségvetésben. Ez a felfogás azonban olyan súlyos hibának bizonyulhat, amely akár a vállalat létét is

Scroll to Top
Passed
Adatvédelmi áttekintés

Ez a weboldal sütiket használ, hogy a lehető legjobb felhasználói élményt nyújthassuk. A cookie-k információit tárolja a böngészőjében, és olyan funkciókat lát el, mint a felismerés, amikor visszatér a weboldalunkra, és segítjük a csapatunkat abban, hogy megértsék, hogy a weboldal mely részei érdekesek és hasznosak. Adatkezelési tájékoztató