A szoftvertesztelés nagy változáson ment keresztül az informatika világában. Előlépett a szükséges rosszból egy olyan külön szakiránnyá, amely nélkül bármilyen modern fejlesztés elképzelhetetlen. Nem csupán az elkészült termék vizsgálatával segíti a minőségbiztosítást, hanem egészen a tervezési fázistól tudja támogatni egy csapat munkáját, melynek fontos részét képezi már a tesztautomatizálás területe.
A cikksorozatban szeretném bemutatni a tesztautomatizálást, közelebb hozni az olvasóhoz ezt a számomra igen kedves határterületet! Az általános ismeretterjesztésen kívül, be fogok mutatni olyan cégen belül is használt technológiákat és megoldásokat, amelyekkel a mindennapokban hozzáteszünk egy-egy projekt haladásához.
A fejlesztés és tesztelés sokáig két egymás nélkül nem létező, mégis leggyakrabban szemben álló szakterületet jelentett. A fejlesztők verejtékes munkával létrehoznak egy terméket, amit aztán a tesztelők szétcincálnak és tucatszámra dobják vissza a különböző bugokat. Később aztán a minőségbiztosítás és tesztelés nagyobb hangsúlyt kapott, ahogyan a klasszikusan elterjedt vízesés-modell egyre kevésbé lett tartható a gyors és agilis fejlesztést igénylő iparban – már nem csak „a végén megnézzük, hogy jó lett-e”, hanem sokkal inkább „végig építő kritikával vagyunk jelen”. A tesztek megtervezésénél szempont, hogy minél jobban lebontva tudjuk az egyes funkcionalitások működését vizsgálni, ugyanakkor az ügyfél szempontjából fontos folyamatok end-to-end is végig fussanak. Próbáljuk ki az összes új keresőmezőt, de próbáljuk ki azt is, hogy a bejelentkezés-kijelentkezés is működik-e még.
A két terület ott találkozott, amikor tesztelőkben és fejlesztőkben valahol egyszerre fogalmazódott meg, hogy bárcsak kevesebb dolguk lenne, mégis ugyanolyan vagy jobb minőségű szoftver jöhetne létre. A fejlesztésben hamar megjelentek az automatizált unit tesztek, sőt kifejezetten olyan alapelvek, amelyek a megírt tesztek alapján haladnak a kódolással (TDD – Test Driven Development). Unit és integrációs tesztek szintjén folyamatos ellenőrzést biztosítanak, akár minden egyes buildnél, jelentősen csökkentve így a potenciálisan létrejövő hibák komplexitását.
A tesztelésben az automatizálás egy igen tág fogalom – ide sorolhatunk gyakorlatilag bármilyen, ember által létrehozott, majd nem általa végrehajtott számítógépes parancssorozatot. Az elsődleges cél, hogy a repetitív, jól definiálható feladatokat ne értékes munkaórák árán végezzük el, legyen az eszköz egy Excel makró vagy bármilyen egyéb script. Ma az automatizált tesztfejlesztő számos keretrendszer közül választhat: a felvétel-lejátszást végrehajtó programoktól elkezdve (pl. Selenium IDE), egészen a fejlesztés módszeréhez közel álló eszközökig (pl. Selenium Webdriver, Cypress).
A határterület előnye, hogy mindkét oldalról jól megközelíthető – sokan a manuális tesztelés felől indulnak el az tesztautomatizálás felé, illetve a fejlesztők közül is egyre többen érdeklődnek a speciális, új nézőpontot igénylő terület iránt. A tesztelés általánosan egy igen színes munkakör, a precizitás mellett elengedhetetlen a csapattársakkal való közvetlen együttműködés is, erre teret ad és bíztat is a modern fejlesztés módszertana. Minél hamarabb csatlakozik a szoftver életciklusába a tesztelés, annál jobban kialakul az egész csapatban az együttműködés a klasszikusan fennálló ellentétek helyett, hiszen nem egymás munkáját hátráltatjuk, kritizáljuk, hanem közösen dolgozunk a lehető legjobb eredményért.
Többször tapasztaltam ezen a területen, hogy egy csapaton belül akár a fejlesztés és tesztelés közötti mediációban is mennyire hasznos a tesztautomatizálás: ha kellett, mind a két oldalnak el tudtam magyarázni, miért fontos az adott lenyíló menü működése. Így nem annyiban maradt a dolog, hogy valami lassú és rosszul működik, viszont nem érkezik meg a javítás és nem válaszolnak, hanem el tudtam magyarázni a tesztelőnek, mit jelent a másik oldalon egy nem várt refaktorálás, illetve a fejlesztőnek, hogy az adott tesztesetben milyen folyamatok kapcsolódnak össze.
Sokáig kerestem az illusztrációkat a tesztautomatizálás címszóhoz, viszont a legtöbb esetben valami robotos ábra került elő vagy fogaskerekek. Azt gondolom, sokkal inkább szól ez a terület is az emberekről, hiszen új eszközökkel és módszerekkel azt támogatjuk, hogy mindenki a lehető legtöbbet hozza ki magából, jól működjön a csapat és a lehető legjobb szoftver jöhessen létre!
Csatlakozz tesztautomatizálóként a Marktsoft csapatához Te is!