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

Kérsz értesítést a legújabb cikkekről?

Kapcsolódó cikkek

QA staffing: hogyan lehet gyorsan és biztonságosan kapacitást bővíteni?

Bevezetés Előző cikkünkben (itt olvasható) arról írtunk, hogy mikor érdemes külsős tesztelőt bevonni, és mikor intő jel, ha csak tűzoltásra használnánk őket. Most, hogy már tudjuk a „mikor”-t, evezzünk gyakorlatiasabb vizekre, és nézzük meg a „hogyan”-t. Hogyan lehet úgy bővíteni a csapatot, hogy az ne a káoszt növelje, hanem a megoldást hozza el? (Megjegyzés: A szakmában gyakran

Külsős tesztelő bevonása: mikor segít, és mikor pénzkidobás?

Bevezetés Minden szoftverfejlesztési projekt életében eljön az a pont, amikor a csapat vezetője, a projektmenedzser vagy a cégtulajdonos a homlokára csap: „Nekünk azonnal tesztelők kellenek!” A hibák szaporodnak, a fejlesztők túlterheltek, az ügyfél pedig egyre türelmetlenebbül dobol az asztalon. Ilyenkor tűnik logikus és gyors megoldásnak a külsős szakértő bevonása. Felhívunk egy partnert, kérünk két senior

Hogyan teszteltünk új jogosultságkezelést egy vállalati HR rendszerben

Bevezető Egy vállalat HR rendszere nemcsak dolgozói adatokat tárol – bizalmat is kezel. Ha a jogosultságkezelésben hiba van, az nem csupán technikai probléma: adatvédelmi incidens, reputációs kár és jogi következmény is lehet belőle. Ebben az esettanulmányban bemutatjuk, hogyan zajlott egy valós, összetett tesztelési projekt, ahol a cél az volt, hogy a HR rendszer új, LDAP

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ó