Interjú: Mit csinál egy szoftvertesztelő? Kinek való a tesztelői állás?
Mit csinál pontosan egy szoftverfejlesztő? Miért vált ilyen keresetté napjainkban ez a szakma, és hogyan lehet valaki sikeres benne? Következő interjúnkban egy olyan tapasztalt tesztelővel beszélgetünk, aki a Prooktatásnál tanítja a manuális tesztelést. Megtudhatjuk, mitől lesz valaki jó tesztelő, miért van még mindig szükség emberi gondolkodásra ebben a világban, és hogyan néz ki a tesztelők mindennapi munkája.
.jpg)
Mit jelent pontosan a szoftvertesztelés? Hogyan fogalmaznád meg röviden egy teljesen kezdőnek?
A szoftvertesztelés egy összetett folyamat, de nem csupán a funkciók helyes működésének ellenőrzéséről szól. Persze ez az egyik legalapvetőbb része, de nem csak ennyiből áll egy tesztelő munkája és feladata. Több területen végzünk különböző ellenőrzéseket már a szoftver „születésének gondolatától” – kvázi a követelményspecifikációktól kezdve, a szoftver design tervein, adatbázisán és lefejlesztett verzióinak tesztelésén át, egészen az úgynevezett éles használati környezetben való működésének nyomonkövetéséig.
Miért van szükség szoftvertesztelőkre a fejlesztési folyamatok során?
Nagyjából 10 évvel ezelőtt még ritka volt a szoftvertesztelői munkakör, és viszonylag újnak számított. Évekig „szükséges rosszként” emlegették, de mára már mindenhova keresnek tesztelőket. Ennek oka, hogy felismerték a munkakör fontosságát, mivel láthatóvá vált, hogy a tesztelők azok az emberek, akik nem csak egy fajta szemszögből nézik és ismerik meg a szoftvert.
A szoftvertesztelők egy személyben üzleti elemzők, fejlesztők, rendszertervezők és tesztelők is. Jelentős szerepük van a hibák megelőzésében és megtalálásában. Ismerik a dokumentációkat, amik alapján már feltérképezik a lehetséges teszteseteket és működési scenáriókat, ezáltal már azonosítani is tudják a szoftver lehetséges gyengébb pontjait, a valószínűsíthetően előforduló hibalehetőségeket, illetve az esetlegesen felmerülő ellentmondásos vagy hiányosan megfogalmazott működési funkciókat.
Ezeket megfelelően kommunikálva már a szoftverfejlesztés korai szakaszában lehet szűrni olyan hibákat, amiknek „javítása” még egyik érintett fél – megrendelő, kivitelező – számára sem jelent plusz költséget. Egy hibás szoftver piacra bocsátása esetében a verzió visszahívása, a fejlesztők plusz munkája, a javításokra fordított plusz idők, mind többletköltséget jelentenek a kivitelező szervezet számára.
Ez azért van így, mert a már átadott szoftverért megállapodás szerint garanciát vállalnak, így az ügyfél már nem fizet ezen javításokért, vagy csak minimálisan. Azonban mivel a szoftver hibás, a felhasználói nem tudják használni, tehát az ügyfél is bukik rajta. A szoftver átmeneti, ideiglenes tesztverzióinak folyamatos ellenőrzésével szintén felfedhetők olyan hibák, amelyek időben való javítása jobb minőségű szoftvert eredményez, ami egy jobb verziójában kerülhet ki a felhasználók számára. Vagyis, ha a szoftverfejlesztés szakaszaiba belekalkulálják a tesztelők munkáját és ráfordításaikat – mivel mi sem ingyen dolgozunk – összességében a tesztelők munkája hozzásegíti a vállalatokat minőségi szoftverek piacra bocsátásához, amelyek kevesebb anyagi ráfordítással, de növelve a felhasználók bizalmát és élményét a szoftver iránt hosszú távon versenyelőnyt biztosítanak a cég számára. Ráadásul mindeközben csökkentik a hibákból eredő utólagos javítási költségeket és támogatási igényt.
Miben különbözik az automatizált és a manuális tesztelés, és mikor melyikre van szükség?
Manuális teszteléskor a tesztelő saját maga végzi el a teszteléseket, míg automata teszteléskor egy program végzi el helyette a tesztelést. Fontos megjegyezni azonban, hogy az automata tesztelés sem teljesen önálló.
Először manuálisan kell megírni a tesztek kódját, amit aztán egy parancs segítségével lehet futtatni a szoftveren. Ezt követően ellenőrizni kell az automata teszt eredményét, és az általa talált hibákat dokumentálni és továbbítani javítás céljából. Teljes mértékben nem helyettesíti a manuális tesztelést, viszont arra nagyon jó, hogy a szoftvert rendszeres időközönként alávessük olyan funkcionális tesztelésnek, amely egy erre kitalált program által gyorsabban végbemegy, mintha manuálisan kéne elvégezni.
Kvázi időt- és energiát spórol a tesztelő számára, mialatt ő azon manuális teszteléssel foglalkozhat, amelyek nem automatizálhatóak. Ilyen például az adatbázis ellenőrzés, adattisztaság, adathelyesség, adatmigráció sikeressége stb. De természetesen az automatizált tesztek up-to-date-je ugyanúgy fontos és manuálisan elvégzendő feladat, mint a manuális tesztesetek naprakész karbantartása.
Milyen típusú hibákkal találkozik leggyakrabban egy tesztelő?
Elég sokféle hibatípust megkülönböztetünk, és elég változatos mennyiségben fordulnak elő. Mégis, amikkel a legtöbbször találkozhatunk, azok közül kiemelném a funkcionális hibákat. Ez egy olyan eset, amikor a szoftver nem úgy viselkedik, ahogy a specifikációban le van írva. Például egy gomb nem hajt végre valamilyen műveletet, vagy rossz adatot jelenít meg.
Ezen kívül gyakoriak még az UI/UX hibák, amikor helyesírási hibákat találunk, vagy éppen nem értelmezhető a leírt szöveg. De ilyenek még a nem konzisztens design elemek, az olvashatatlanul megjelenített szöveg, hibaüzenet, vagy akár az elcsúszott gombok.
A teljesítménybeli problémák felmerülése is ide sorolható, amikor lassú a szoftver, akadozik, vagy akár egy terheléses teszt során össze is omlik.
Ami kicsit viccesen hangozhat elsőre, az a „hibás hibaüzenetek” problémakör, de sajnos így van, ahogy mondom. Például amikor nincs úgymond magyarosítva a hibaüzenet és fejlesztői kódnyelven íródik ki, vagy például amikor egyáltalán nincs is visszajelzés a felhasználó felé, szimplán nem történik semmi, nem hajt végre semmit a rendszer.
De találkozhatunk még logikai, adatkezelési- vagy akár biztonsági hibákkal is, amelyek során adatvesztést, hibás mentést, jogosulatlan hozzáférést, rossz logika alapján való működést tapasztalhatunk.
Hogyan néz ki egy átlagos munkanapod szoftvertesztelőként?
„First coffee” – ezzel indul a napom ☺ majd utána kezdődik a napi megbeszélés a projektvezetőkkel és fejlesztőkkel, ami alatt röviden átbeszéljük a fejlesztési feladatok előrehaladását, hogy látható legyen számomra az aznapi tesztelendő feladatok listája. Persze ez munkahelyenként eltérő lehet, hogy hol milyen stratégiát követnek, de a legtöbb helyen vannak ilyen „napi meet”-ek a munkaidő elején, hogy mindenki tudja tervezni az aznapi feladatait.
A megbeszéléseken priorizáljuk a tesztelendő feladatokat, és annak megfelelően haladok velük a nap folyamán. Szükség szerint, ha kell, egyeztetek külön is az egyes feladatokról a fejlesztőkkel, vagy igényeik szerint akár a talált hibákról. A tesztelések során kép és videofelvételeket is készítek, amiket a tesztelési jegyzőkönyvek mellékleteként adok át a fejlesztők számára, megkönnyítve ezzel a hiba értelmezését és reprodukálását.
Milyen eszközöket vagy technológiákat használsz nap mint nap a munkád során?
Az automata tesztek futtatásához a Selenium-ot használom, míg a manuális tesztelést magam végzem, kvázi kemény agyi és kétkezi munka, és gyakran úgy érzem, hogy ínhüvelygyulladást fogok kapni a sok kattintgatástól és gépeléstől, ha nem kapok egy robotkezet. A lokális manuális teszteléshez Docker, Total commander, Visual Studio Code programokat használom, amelyek segítségével egy saját, local test környezetben futtatom a szoftvert, és így ellenőrzöm végig a tesztelés során. Ilyenkor leginkább úgymond modulteszteket végzek.
A Selenium már egy olyan tesztkörnyezeten futtatja az automata teszteket, ami a szoftver működési – kvázi éles – környezetének másolata. Ugyanezen a környezeten végzem a regressziós és smoke teszteléseket is. A hibajegyek felvételére jelenleg a Redmine-t használom, de sok helyen a JIRA a preferált.
Most egy fontos kérdés azok számára, akik jelenleg még csak gondolkodnak ebben a szakmában: milyen készségekre van szüksége egy jó szoftvertesztelőnek – inkább technikai, vagy inkább analitikus gondolkodás, vagy valami más?
A készség az a képesség, amikor valamit jól csináljunk, ami tudásunkból, gyakorlatunkból és rátermettségünkből fakad. Amiket kiemelnék, az például az alaposság, a körültekintés, kíváncsiság, odafigyelés a részletekre és a módszeresség. Továbbá a jó kommunikációs készség, aktív hallgatás, csapatjátékos szemlélet, analitikus gondolkodás, kritikus gondolkodás és a kreativitás. Fontosnak tartom a tevékenységi kör ismeretét is, mert elengedhetetlen a végfelhasználók és üzleti képviselők megértéséhez és a velük való kommunikációhoz.
És természetesen a tesztelési és technikai ismeretek, amik a tanfolyam során elsajátíthatók.
A jó tesztelő nem csak szakmailag, hanem emberileg is alkalmas erre a feladatra és az ehhez szükséges személyiségjegyek a következők lehetnek, de persze, ha valakiben nincs meg mindegyik jellemző, az nem kizáró ok:
Kíváncsiság, szakszerű pesszimizmus, kritikus szemléletmód (de csak csínján megfogalmazva), alaposság, kommunikatív, jó értelmezési- és logikai készség, monotonitás tűrése, és elengedhetetlen, hogy más emberek szemszögéből is tudjon közelíteni,
mert egyszerre kell látnunk a szoftvert, mint tesztelők, mint felhasználók, mint projektmenedzserek, mint fejlesztők és mint üzleti elemzők.
Hogyan tud egy tesztelő hatékonyan együttműködni a fejlesztőkkel és más csapattagokkal?
Fontos a jó kommunikáció. Az, hogy világosan és egyértelműen megtudjuk fogalmazni és ki tudjuk fejezni a mondanivalónkat, akár asszertív módon is. Erre külön fejezetet szentelek etikai kódex címén a tanfolyam anyagában, és órákon gyakorló feladatok során van lehetőség ezen készségek csiszolására, és az elmélet gyakorlatba való átültetésére.
Hogyan dokumentálja a szoftvertesztelő a hibákat?
A kép és videofelvételek készítését fontosnak tartom, amiket a tesztelési jegyzőkönyvhöz csatolva átadunk a fejlesztők számára. Ezeket az adott hibához, fejlesztési feladathoz mellékletként töltjük fel az éppen használt hibakövető rendszerben, például JIRA-ban.
Hogyan lehet tesztelőként folyamatosan fejlődni, naprakésznek maradni?
A folyamatos tanulás ebben a szakmában is fontos. Sok cég fordít figyelmet a tesztelők továbbképzési lehetőségeire, így pl. ISTQB különböző szintjein, vagy akár az Udemy oldalán elérhető számos tanfolyam közül válogathatunk. Mindenki számára fontos felismerni, hogy mik a fejlesztendő készségei, vagy akár tudásbeli hiányosságai, és annak megfelelő képzést keresni, ahol elsajátíthatja, vagy akár továbbfejlesztheti.
Mit tapasztalsz, a tanulók számára mi a legnehezebb rész a szoftvertesztelés elsajátításában?
Az elméleti anyag átültetése a gyakorlatba minden kezdő számára kihívás az első tesztelések során, ezért nagy hangsúlyt fordítok az órai gyakorló feladatokra, mind egyénileg, mind csapatban is. Utóbbi során a megfelelő kommunikációt is lehetőségük van gyakorolni.
Mit tanácsolnál azoknak, akik most gondolkodnak azon, hogy belevágjanak ebbe a szakmába?
Előtte egy kicsit járják körbe a témát, a szakmáról készült interjúkat, nézzenek bele egy-egy ingyenesen elérhető youtube videoba, amik bemutatják a tesztelést. Találkoztam már olyannal, aki azt gondolta „ez milyen könnyű”, de valójában, mint azt már fentebb is írtam, ez nem csak annyiból áll, hogy kattintgatva felmérjük működik-e valami, avagy sem. Cserébe azok, akik elköteleződnek a szakma iránt, belevágnak, és mindent megtesznek a tanulás, a megértés és gyakorlás érdekében, azok számára remek lehetőségek nyílnak meg, akár itthon, akár nemzetközi munkalehetőségek tekintetében is.
És itt megjegyezném, hogy az is téveszme, hogy ehhez a szakmához nem kell angoltudás. De igen, legalább egy alapfokú megértés és kommunikáció – minimum írásban – szükséges.
Szerinted milyen jövője van a szoftvertesztelésnek a mesterséges intelligencia és az automatizálás korában?
A szoftvertesztelés jövője a mesterséges intelligencia és az automatizálás korában ígéretes, de szerintem átalakul. Az ismétlődő, rutinszerű teszteket – például a regressziós, smoke vagy terheléses teszteket – egyre inkább automatizálják.
Ez megkönnyíti a tesztelők munkáját, de nem váltja ki őket teljesen, hiszen az automata tesztek folyamatos karbantartást igényelnek, amit továbbra is a tesztelők végeznek. A manuális tesztelők szerepe ezekben a feladatokban csökkenhet, de nem szűnik meg. Nem lehet a tesztelői agymunkát, logikai megértést és látásmódot teljes egészében lefedni egy automatizált kóddal. Az MI képes tesztadatokat generálni, hibákat előre jelezni, és automatizált tesztforgatókönyveket létrehozni a korábbi hibák és felhasználói viselkedés alapján, ami szintén megkönnyíti a tesztelő munkáját, de ezzel is ő lesz az, aki foglalkozik, aki dokumentál, aki ezek alapján megírja az automata tesztek kódjait.
Nem mellesleg a tesztelés mára a minőségbiztosítás egyik eszközévé vált, ami már nem csak "hibák keresése", hanem folyamatos visszacsatolás a fejlesztésnek és üzletnek. Ezeknek a lekommunikálására szintén a tesztelőre van szükség. És mint olyan, a minőségbiztosítás minden vállalat kulcsfontosságú pillére.
Beszéljünk kicsit rólad! Hogyan lettél szoftvertesztelő? Milyen volt az utad idáig?
Imádom ezt a kérdést! Főleg azért, mert amikor azzal kezdem, hogy az IT olyan messze állt tőlem, mint Makó Jeruzsálemtől, és
már általános iskolában messzire elkerültem az informatikai órákat, akkor mindenkinek a szeme tágra nyílik, és nekem szegezik a kérdést, hogy „akkor mit keresel itt?”
Minden mással inkább foglalkoztam, csak az IT-val nem. Nem azért, mert nem ment volna, hanem mert nem akartam, nem érdekelt. Korábban egy biztosítónál dolgoztam Front Office munkatársként (első munkahely egyetem mellett, amolyan ugródeszkaként), és elkezdődött a bankoknál használatos Netbankárokhoz hasonlóan a biztosítóknál is elterjedni az ügyfelek számára létrehozott online felület, akkor bevontak annak a tervezésébe, fejlesztési ciklusainak ütemezésébe és a felület tesztelésébe, kvázi felhasználói oldalról nekem kellett szemügyre venni és véleményezni.
Itt együtt dolgoztam egy IT kollegával, aki aztán felmondott és egy nemzetközi céghez ment tovább. Egyik nap csörgött a telefonom, és attól a cégtől hívott a HR munkatárs, ahova ő ment. Meglepődtem, mert mint kiderült, beajánlott engem egy szoftvertesztelői munkakörbe. Végül megbeszéltünk egy interjúidőpontot, gondoltam azzal nem vesztek semmit, ha elmegyek. A vége az lett, hogy szakmát váltottam, és a közgázról áttértem az IT világába, ahol szerencsémre elég hamar jó tesztelő vált belőlem, és az első munkahelyemen már 3 hét után már egy programozó csapatban találtam magam egy új munkahelyen, ahol tolták le a torkomon az SQL adatbázis lekérdezés és Angular front end fejlesztői tudásanyagot is, mert hogy milyen jó a gondolkodásom, látásmódom és a logikám hozzá.
Én, aki először versenytornász voltam, majd közgázt és pénzügyet tanultam (mert hogy a fél család könyvelői irányba van), soha nem gondoltam volna, hogy egyszer majd Senior szoftvertesztelő és Tesztmenedzser leszek, aki még oktathat is! De hát ezt dobta a gép. Végül elém dobott egy lehetőséget az élet, belekóstoltam és rájöttem, „jah, hát amúgy ezt imádnám csinálni”. És azóta ebben is jó vagyok, ezt csinálom és szeretem.
Milyen tapasztalatok segítettek a legtöbbet abban, hogy jó tesztelő legyél?
Az elején a jó megfigyelés, amolyan „hallgass, hogy láthass és érthess” gondolkodás, majd pedig a jó kommunikáció, a tanulni akarás és új dolgok megismerésének akarása, és a gyakorlatiasság, amivel a tudást a gyakorlatba ültetve dolgoztam.
Elengedhetetlen volt a kíváncsiságom is, mert mint az az előbbi válaszomból is látszik, ami nem érdekel, azzal nem foglalkozom. De itt volt egy ember, a volt kollegám, aki támogatott, ha úgy tetszik „lökött” a változás felé, mert látta bennem a lehetőséget, és azt, hogy én ezt jól tudnám csinálni. Mindig is hálás leszek neki ezért, mert a szakmaváltással együtt előrébb léptem, és azóta is sokat fejlődtem, mind a szakmában, tudásban, egzisztenciában és emberileg is.
Miért döntöttél úgy, hogy tanítani is szeretnél?
Ez számomra egy váratlanul jött lehetőség volt, amit felajánlottak. Korábban is oktattam a korábbi munkahelyeimen, mind az utódomat, mind újonnan csatlakozókat, és persze eszembe jutottak azok az idők, amikor ezt a felajánlást kaptam itt. Szeretem a munkámat, a szakmámat és szeretek róla beszélgetni.
Sokan félreértelmezik a tesztelői munkakört és sokkal kevesebbet látnak benne elsőre, mint ami valójában mögötte van. Szeretem megértetni az emberekkel, hogy ez nem csak annyiból áll, hogy ülök egy számítógép előtt és veszettül kattintgatok össze vissza, próbálgatva, hogy mi az, ami működik, és mi az, ami esetleg nem. Ez egy jóval komplexebb szerepkör, mint amilyennek képzelik, ezáltal változatos is, és aktív kommunikációt is igényel, amit a jelenleg kialakult home office munkakörnyezetben szerintem előnyös.
Ha most újrakezdhetnéd, ezt a szakmát választanád?
Igen. Sok lehetőség van benne napjainkban is, és nem áll meg ott, hogy manuális vagy automata tesztelés. Ezen tudások jó alapok, és ezek birtokában még több irányba is lehet fejlődni, tovább tanulni és szakmailag előrelépni. Ezáltal több benne a lehetőség, mint gondolnánk.