A szoftver-tesztelés kapcsán többször kaptuk már meg a kérdést ügyfeleinktől: miért szerepel ez a tevékenység az árkalkulációban? Ez nem a mi (szoftverfejlesztői) belső problémánk, hogy „tesztelni kell” a megoldást, mielőtt az ügyfél átveszi?
Ez a blog bejegyzés a tesztelés, szoftverminőség-biztosítás természetéről, projektre és termékre gyakorolt hatásairól szól. Hasznos 3 perces olvasmány mindenkinek, aki szoftver vagy applikáció fejlesztési projektben gondolkodik.
Jó tudni: a szoftver-tesztelés egy önálló szakma. Nemzetközi szabályozó testülete az ISTQB (International Software Testing Qualifications Board). Mellesleg az ISTQB az Arteries ügyfele is – ez nagy büszkeség számunkra, hiszen ezzel implicite a világ vezető szoftvertesztelési testülete elismeri az Arteries által szállított minőséget!
A szoftver tesztelés nem arról szól csupán, hogy leellenőrizzük az elkészült munkát! Ennél jóval több ez a feladat: elkezdődik már a szerződéskötés előtt, és végigkíséri a teljes projektet. Ezért sem lehet elválasztani a programozók munkájától.
Fontos tény: a tesztelés a szoftverfejlesztési folyamat szerves része, nem annak utólagos ellenőrzése!
Ahhoz, hogy ezt belássuk, fontos áttekinteni, hogy mit csinál egy tesztelő egy szoftverfejlesztői csapatban.
A tesztelő csapat már a projekt elején bekapcsolódik a tervezési folyamatokba: áttekinti az igényspecifikációt, és javaslatot tesz a szoftver vagy rendszer minőségbiztosítási megoldásaira. Ezek sokfélék lehetnek, többek között:
- Komponens vagy egység (unit) tesztelés
- Funkcionális tesztelés
- Regressziós tesztek
- Smoke tesztelés
- Black Box tesztelés
- Interfész tesztelés
- Integrációs tesztelés
- Biztonsági tesztelés
- API séma tesztelés
- Átvételi tesztelés
- Stressz-tesztelés
… stb.
Ezen feladattípusok jól szabályozottan igazodnak a szoftvertesztelők munkájához, kiegészítik azokat. Néhány – főleg kisebb – fejlesztő csapatokban ezeket a feladatokat a szoftverfejlesztők maguk végzik, de hatékonyabb, ha erre képzett, speciális tudással rendelkező kollégákat delegálunk.
Ezen folyamatok és feladatok párhuzamosan haladnak a szoftverfejlesztők kódolási feladataival. Jó tudni, hogy ezek közül néhányat ugyan kézzel végeznek el a tesztelők (manuális tesztelés), de a fentiek közül több is programozási feladattal jár: egy-egy „kisebb programot” készítenek a tesztelők az eredeti programunk tesztelésére. Ez furcsán hangozhat elsőre, de a lényege, hogy ne kézzel kelljen ellenőrizni újra és újra egy-egy tesztesetet, hanem végezze el helyettünk egy automatizált teszt-program. Ezeket a feladatokat hívjuk automatizált tesztelésnek.
Miért hasznos a tesztelés ügyfeleinknek?
Ügyfél oldalról, ahogy fent említettem, felmerülhet a kérdés: Miért kell ezért fizessek?! Nem az a dolga a programozónak, hogy jó programot írjon?!
A válaszunk az, hogy de, ez a dolga, és pontosan a folyamatos tesztelési eljárások biztosítják azt, hogy egy program tényleg olyan minőségű legyen, amit elvártunk tőle.
Szemléletes példa: Gondoljunk bele mi történne, ha a házunk falait építő kőművesnek kikötnénk, hogy nem fizetünk azért, hogy ellenőrizze a rakott fal minőségét, csak rakja a téglákat! Hiszen mi a falért fizetünk, nem a méregetésért!
Könnyen belátható, hogy a végeredmény egy csúnya, girbe-gurba felület lesz, amire aztán a következő munkafázisokat végző szakemberek hangosan panaszkodnának, és az Ő munkájuk sokkal lassabb, és bosszúságokkal teli lenne.
Ahogy az épület falazási munkának is része, hogy ellenőrizzük a téglák helyzetét, és beigazítjuk őket vízszintesre és függőlegesre, valamint a többi tégla síkjához – úgy a szoftverfejlesztési munka sem a kódsorok gondolkodás és ellenőrzés nélküli gépeléséből áll.
Ha így lenne, nagyon gyorsan végeznénk, de abból semmilyen köszönet és hála nem születne!
Az ügyfeleinknek kifejezetten jó, ha professzionális tesztelőket is kap a szoftverfejlesztési csapatba. Minden ebbe fektetett forint hasznos munkát fedez, és könnyebbé, nyugalmasabbá teszi a jövőbeni – a szoftverhez kapcsolódó – feladatokat is.
Miért hasznos a tesztelés nekünk, szoftverfejlesztőknek?
Elsősorban azért, mert nincs jobb az elégedett ügyfélnél. És azért, mert az ügyfél ideje nagyon drága számára. Jó, ha az ügyfél minél kevesebbet tölt azzal, hogy ellenőrzi a neki átadott munka minőségét: egyszóval megbízhat benne, és az azt készítőkben.
Ezen kívül van még egy aspektusa ennek: más mindset-et igényel egy tesztelői munka, mint egy programozó munkája. A két mindset közötti váltást spórolja meg a csapatban az, ha ezeket a feladatokat más-más személy végzi. Stresszmentesebb a munkája mindenkinek, ha a speciális feladatokat az arra kiképzett, és személyiségben is megfelelő munkatársak végzik.
Ezek a döntések végső soron kihatnak a termék minőségére. Ha jó egy termék, akkor elégedett lesz az ügyfél. Az elégedett ügyfél pedig visszatér, és újabb megbízásokat hoz nekünk. Mi más lehetne a célunk?!
A tesztelés tehát Önnek a legfontosabb. Ha nincs, az bajokhoz vezet. Válasszon Ön is olyan csapatot, ahol ezt is szakértők végzik!
Amennyiben szoftverfejlesztési vagy alkalmazásfejlesztési projektben gondolkozol, ne legyen kérdés: jó tesztelők is kellenek egy szoftverfejlesztő csapatba. Kérj konzultációt, és örömmel elmondjuk hogyan zajlanak nálunk a fenti folyamatok, és hogyan segítik a tesztelők a programozóink munkáját azért, hogy minőségi eredményt vehess kézbe!?