Tesztesetmánia

A tesztelés velejárója a tervezés és a tesztesetek írása. Sokszor még cégen belül is sokféle módszerrel állhatunk neki a tesztek megtervezésének. Munkánknak keretet szabhat a rendelkezésre álló idő, pénz, esetleg a vállalati tesztelélsi folyamat. Mennyire alaposan kell kidolgozunk, leírnunk egy tesztesetet? Aluldokumentáltuk vagy túldokumentáltuk a tesztelést? Találjuk meg az arany középutat.

Mi van, ha azt mondod a 3 éves gyerekednek, hogy „Menj, és vedd fel a távirányítót a TV-szekrényről”? A gyereked meg fogja csinálni egészen addig, amíg megérti a „távirányító” és a „TV-szekrény” fogalmát.

Tegyük fel, hogy van a termékedben egy funkció, amit tesztelni kell, hogy a parancs gomb használható-e vagy sem. Ennek a vége egy elég terjedelmes teszteset-dokumentáció lesz.

Valóban rosszabbak a felnőttek egy 3 évesnél, amikor alapvető dolgok értelmezésére kerül a sor?

Miért írunk teszteseteket?

  • Hogy képezzük az újoncokat, akiktől elvárt, hogy már az első naptól teszteket futtassanak, és ezt büszkén nevezzük „gyakorlati tréningnek”

  • Hogy a teszteseteket az újoncokra vagy juniorokra hagyjuk, akik vakon végre tudják hajtani a lépéseket, és tesztelni az új funkciókat/terméket minimális segítséggel a vezetők/managerek részéről – nem szeretnénk, ha az újoncok zavarnák a seniorokat, akiknek sokkal értékesebb az idejük

  • Hogy több millió dollárt akaszthassunk le a vevőkről, bemutatva nekik a számtalan dokumentumot a minőség biztosítása végett
  • Hogy megkockáztassuk egy olyan hiba figyelmen kívül hagyását, melyet egy múltbéli tesztesetnél találtunk
  • Hogy egy helyen tudjuk a felhalmozott tudást a funkcióról/termékről, ha az érintett tesztelők elhagyják a projektet vagy a céget – röviden: egy írásos ismeretanyag

  • Hogy megmutassuk a programozóknak, hogy a tesztelés egy időigényes munka és nem olyan könnyű, mint amilyennek látszik
  • Hogy a management is láthassa a tesztelők által végzett munkát
  • Hogy időt nyerjünk a vásárlóktól és még több munkaórát számlázhassunk ki
  • És így tovább….

Unalmas a tesztelés?

Egy tesztelő sem olvas szívesen mások által írt teszteseteket, hogy aztán egyedül végezze el azokat. Egy tesztelő se ír szívesen teszteseteket egy olyan funkcióra, amiről tudja, hogy úgy sem fogja tesztelni. Ki tudja, hogy a cégnél lesz-e még, amikor a termék végre elkészül. Mindezek ellenére a tesztelők kénytelenek teszteseteket írni. Nem csoda, hogy a tesztelést sokan unalmas és monoton munkának tekintik. Mert melyik is az izgalmasabb? Egy asztal előtt ülve word/excel dokumentumokba írni a teszteket, vagy a termék funkcióit tesztelni, ahol kiteljesedhet a megfigyelő, kreatív és elemző készségünk. A terméket tesztelve minden bizonnyal fejlődni fognak a készségeink és mélyebb betekintést biztosít. Több lehetőséget és szabadságot kapunk kevésbé bejáratott módszerek használatára, megalapozott vagy megalapozatlan döntések meghozatalára.

Ezek után elégedetten dőlhetünk hátra. A nap végén csak az számít, hogy mennyire élvezted a funkciók tesztelését, és nem az, hogy mennyi tesztesettel végeztél aznap. Aztán amúgy is csak egy kritikus folyamatot fogsz végrehajtani, majd egyre gyakrabban beírni a „MEGFELELT”-et az Excel dokumentumban. [A cikk egyik kritikusa azt javasolta, hogy töröljem ezt az állítást, mert elég veszélyesnek hangzik. Ha már maga az állítás veszélyesnek hangzik, milyen veszélyes lehet a gyakorlatban?]

Pátyolgatott és Törekvő tesztelők

Akár a Vízesést, V-modellt vagy az Agilis utat követjük a szoftverfejlesztés során, a nyomás, hogy új teszteseteket írjunk, nem akar megszűnni. Gyakorta hallhatjuk, amint a managerek/vezetők azt üvöltözik, hogy „Tesztesetek kellenek az újoncoknak”. Aha! Szóval az újoncok nem használhatják a fejüket? Csak egy rakás robot, akik hibákat kutatnak?

Minek alkalmazzunk mérnököket, ha elegendő néhány báb is, hogy elvégezzék a falra írt feladatokat? Miért alkalmazunk kreatív és innovatív embereket, ha aztán arra kérjük őket, hogy előre meghatározott munkát végezzenek, amihez nincs szükség általános ismeretekre, józan észre vagy csak egyszerű gondolkodásra a tesztelés alatt álló termékről való információgyűjtés során? Miért pátyolgatjuk őket?

Másfelől viszont a törekvő tesztelők további tesztelőkkel összeállva remekül tudják oktatni az újoncokat a csapatban ahelyett, hogy kukába való dokumentumokat sóznának rájuk. Bár egyes tesztelőknek időpocsékolásnak tűnhet, ez egy remek módja az újoncok érdeklődésének felkeltésére, hogy rövid idő alatt megismerjék a terméket. Napi fél óra bőven elegendő lenne a képzésükre, és megvitatni az elsajátított ismereteket. Hosszú távon ezek a tesztelők nemcsak többé válnak, mint egyszerű tesztesetkukacok, hanem mint önálló személyiségek képesek lesznek játszi könnyedséggel és magabiztossággal tesztelni bármilyen bonyolult funkciót.

A párosítás ösztönzése

Az újoncok tesztelőkkel való párosítása nem csak a képzésben segít, de még a munka is jobban halad. Míg az egyik szempár a terméket teszteli, a másik friss szempár pedig megfigyeli a tesztelési folyamatot, jegyzetel, így könnyebben fel lehet fedezni kiskapukat és jobb teszteket javasolni. Ezáltal nemcsak hogy gyorsabban végez egy tesztelő, de segíti is az újoncot a termék megismerésében egy költség- és időhatékony módon.

Junior tesztelőt a fejlesztővel párba állítva segíthet a tesztelőnek megérteni a teszt alatt álló funkció technikai aspektusát. Ez arra is buzdítja a tesztelőt, hogy a jövőben majd a kód mélyére ásson és nem várt problémákat kutasson fel. Ezen kívül a tesztelő kutathat hibák után a napló és konfigurációs fájlokban, az xml-sablonokban, az üzleti logikában és egyéb helyeken, köszönhetően a fejlesztőkkel együtt töltött időnek.

Egy tervező mellett a későbbiekben a tesztelő képes lehet olyan egyszerű szkripteket írni, melyek felgyorsítják vagy támogatják az olyan rutin teszteket, mint a tesztverziók tesztelése, a legutóbbi verzió fájljainak ellenőrzése, hogy megfelelőek-e, vagy bármi más, ami időigényes vagy nagyon motorikus, de könnyen automatizálható, ezáltal időt spórolva. És ez csak egy példa. A tervező, aki kívül-belül ismeri a terméket, nagy segítség lehet az ellenőrzések és tesztek során. Ez az eljárás segíthet az ellenőrzések azonosításában és azok automatizálásában. És ugyan mennyire lehet ez bonyolult feladat, ha a tervező a sötétségből a fénybe vezet?

Ideális esetben a különböző csoportokban lévő emberek párosításai új rálátást biztosítanak a tesztelőknek a termékre, ezáltal jobb tesztötletekkel állhatnak elő. A keresztfunkciós csapatokkal történő összedolgozás és visszajelzések pedig segítenek felhasználóbaráttá tenni a terméket.

Az ellenőrzőlista előnyei

Számítanál-e arra, hogy a doktor, aki éppen megműt téged, egy rakás dokumentumon rágná keresztül magát, hogy kiderítse, miként haladjon tovább? Már meg kellett volna tanulnia, vagy gyakorolni egy ideig, mielőtt tényleges műtétet végezhetne. A saját belátása szerint döntene. Röviden, egy ellenőrzőlistát használna, amíg a műtétet végzi. Befeküdnél egy orvos keze alá, aki az egyik kezében egy szikét, a másikban pedig egy több mint 300 oldalas dokumentációt tart?

A tesztelők sem sokban különböznek az orvosoktól. Valószínűleg sokan nem értenének egyet azzal, hogy egy termék minden pillanatban életveszélyben lehet, de egy termék tesztelése olyan kritikus feladat, amelyhez az összes érzékszervnek tökéletesen kell működnie, és nyugodtnak kell lenni hozzá.

Az ellenőrzőlisták az ellenőrizendő pontokat tartalmazzák. Mi lenne, ha tesztötleteket jegyzetelnék részletes lépések helyett. Az ellenőrzőlisták segítik a tesztelőket a listázott esetek felderítésében, új ötletek hozzáadásában a meglévőek mellé, új és jobb tesztek kitalálásában. A tesztelők teljes nyugalommal használhatják ezt az ellenőrzőlistát, nem veszélyezteti a tesztelés szabadságát és felelősségét.

Az ellenőrzőlisták segítenek megalapozott döntéseket hozni, míg a tesztesetek általában sokkal gépiesebbek. Az ellenőrzőlisták a véleményt preferálják az agyatlan módon a dokumentumban leírtak vakon követésével szemben. Az ellenőrzőlisták segíteni fognak abban, hogy szeresd a munkádat, ahelyett, hogy napi 8 órában nyüglődsz vele és csak azt várod, hogy haza mehess és elfelejts mindent, amit aznap csináltál. Melyiket választanád?

A tesztelés nem egy gépírói munka

A tesztelés egy nélkülözhetetlen készség a teszteléshez. Sokunk nem rendelkezik kellő tesztelési tudással, de ezt idővel el lehet sajátítani. Inkorrekt a tesztelői munkát egy gépírói munkává leminősíteni, mely során a tesztelők csak több oldalnyi tesztesetet írnak. A hangsúlynak a tesztelésen kell lennie, nem a dokumentáció megírásán. A tesztesetek megírására való fókuszálás a végrehajtási időből vesz el, ami igen kritikus szempont bármely projekt során.

A fejlődő országokban sok szervezet a tesztelőket minden egyes apró funkcióra kiterjedő tesztesetek írására utasítják. Képzeld el, hogy egy ilyen szervezethez kerülve napi szinten kéne teszteseteket írni, mindegyikben minimum 50 lépéssel. És mit csinálnál? Csukott szemmel besétálnál az irodába, majd vakon begépelnél valamit, hogy meglegyen az 50 lépés, véglegesítenéd, majd jönne a következő teszteset. Az idő előrehaladtával legfeljebb a szókincsed fejlődne, ami nem sok. Célszerűbb lenne a tesztelési képességekre összpontosítani.

Hogyan kezeljük a szabályozásokat?

Most, hogy minden megvan, hogyan is kezeljük a szabályozásokat az orvosi szektorban, vagy amikor kormányzati szervek vannak bevonva egy kritikus alkalmazás megírásakor? Bár a részletes tesztesetek megírása időigényes, az orvosi szektor számára készülő termékeknek több szabályozásnak is meg kell felelnie. Ilyen esetekben a részletes tesztdokumentáció nélkülözhetetlen. Minden elvégzett tesztet dokumentálni kell, hogy az megfeleljen az adott ország szabályainak.

Ezek kivételes esetek. Hacsak nincs feltétlenül szükség a tesztesetek dokumentálására, akkor vehetjük hasznát az ellenőrzőlistáknak, hogy több időnk maradjon a tesztek végrehajtására.

Hány alkalommal találkoztál olyan tesztelővel aki majd kiugrott a bőréből a tesztesetek írásának hallatán? Pontosan, eggyel sem. A tesztelők a tesztelést szeretik, nem pedig az értelmetlen dokumentumok gépelését, csak hogy néhány fejes örüljön az irodában. A tesztelők nem robotok, hanem emberek, akik a fejüket használják a döntéseiknél. Ha tesztelőket tervezel alkalmazni, add meg nekik a lehetőséget, hogy használhassák a fejüket a felületes minták helyett. Ha szeretnéd hosszú távon magad mellett tartani a tesztelőket, akkor állítsd őket kihívások elé a gépelés helyett.

Ha egy tesztelőt akarsz, akkor kezeld úgy, mint egy felsőbbrendű lényt, aki az egyik leghatalmasabb eszközzel rendelkezik a világon – az agyával.

Szerző:
Parimala Shankaraiah

<< Vissza