Az egyik leggyakoribb buzzword vezetői oldalról: automatizáljuk a tesztelést! Mindig, mindenhol hallani ezt, teljesen függetlenül attól, hogy a tesztelési kultúra milyen érettségi szinten van a szervezetben, és hogy technikailag mit lehetne egyáltalán automatizálni.
Kezdjük az alapokkal: mit várunk el a teszteléstől? Még az élesítés előtt vizsgáljuk meg a terméket, találjuk meg a hibákat, csökkentsük az élesítéssel járó kockázatokat. Mit lehet ezen automatizálni?
A tesztelés automatizálásának két szituációban van értelme. Az első a regressziós tesztelés: a rendszeresen, ugyanúgy megismételt tesztelési feladatok. Ezeket manuálisan végrehajtani unalmas, nagyobb a hibalehetőség, illetve a manuális tesztelés lassú, automatizálva gyorsabban, több tesztet lehet lefuttatni.
A probléma, hogy a változásokat és a fejlesztéseket az automata eszköznek egyesével be kell programozni – ez viszont csak lassan megy, tehát adott funkció leteszteléséhez az automata tesztelőnek sokkal több idő kell, mint a manuális tesztelő kollégáknak. Az agilis módszertani elképzeléseknek általában része, hogy az adott sprintben az új fejlesztésekhez tartozó automata tesztek is készüljenek el, de én még soha, sehol nem láttam, hogy ez ténylegesen megtörtént volna, az automata tesztelés általában hónapokkal lemaradva követi csak a fejlesztéseket.
Tisztában kell lenni továbbá a Pesticide paradoxon nevű alapelvvel: ha ugyanazokat a teszteket ismételjük újra és újra, végül ezek a tesztek már nem fognak új hibákat találni. Ezért a teszteseteket rendszeresen felül kell vizsgálni, karbantartani, új teszteket kell hozzáadni, hogy az automata hibákat találjon. A regressziós tesztelést hosszútávon érdemes automatizálni.
A másik szituáció, ahol az automatizálás hasznos lehet a load test, a terhelés szimulálása. Például ha manuális tesztelőből nem tudunk annyit felsorakoztatni, amennyien a végfelhasználók lesznek – a számítógép viszont szimulálni tudja ezt a helyzetet, ahogy a hosszan tartó, folyamatos terhelést és sok más nehezítést is.
Kik azok a tesztautomatizálók? Az automata eszközök programozásához programozói tudás kell. Az automata tesztelők ezért a fejlesztők/tesztelők tengelyén a fejlesztőkhöz állnak közelebb, gyakran fejlesztők specializálódnak automata tesztelésre. Mivel a fejlesztők többet keresnek a tesztelőknél, a „tesztelés automatizálása” viszonylag drága mutatvány, mármint ha a cél simán csak a manuális tesztelők kiváltása.
Hogyan mérhető, hogy megéri-e? Minden automata tesztelő előszeretettel hivatkozik a lefuttatott tesztesetek számára. Száz, ezer, tízezer API hívást indítottunk, jó alaposan leteszteltük tehát a rendszert. Valóban?
Szerintem mindenféle tesztelés értelmét és eredményességét végső soron a riportolt, majd kijavított hibák száma mutatja meg – ennyivel fejlődött ugyanis a szoftver a tesztelő tevékenysége nyomán. Ha egy automata tesztelő évek óta dolgozik a csapattal, de soha, egyetlen hibát sem riportolt (megtörtént), ott el kellene gondolkozni, hogy valóban megérte-e a tesztelés automatizálása…