Miért érdemes automatizálni?
Az információs korszak szlogene lett a sebesség iránti igény. Mivel a technológia mostanra az ügyfélkapcsolatok első vonalában versenyelőnyt biztosít, a szállítási határidők piaci nyomás alá kerültek. A későn piacra kerülő termékek bevételt, ügyfeleket és piaci részesedést veszíthetnek. Azonban a gazdasági nyomás forrás- és költségcsökkentést is követel, így sok vállalat az automatizáció mellett dönt, hogy csökkentse a piacra kerülés idejét és a tesztelési költségeket is.
Bár késve piacra lépni költséges lehet, egy hibás termék kiadása katasztrofális is lehet. A szoftverhibák milliókba vagy akár milliárdokba is kerülhetnek, és néhány esetben teljes cégek mentek tönkre emiatt. Ha eleve nincs elegendő embered vagy időd a megfelelő tesztelés elvégzéséhez, az automatizálás hozzáadása nem csökkenti a szoftver instabilitását és hibáit. Mivel jól dokumentált tény, hogy egyetlen szoftverhiba is milliókba kerülhet – ami több, mint az egész tesztelési költségvetésed –, az elsődleges cél a megbízható szoftver szállítása legyen. Ha ezt elérted, csak akkor fókuszálj a költségek és idő optimalizálására. Más szóval, ha a szoftvered nem működik megfelelően, nem számít, milyen gyorsan vagy olcsón szállítod.
Az automatizált tesztek három fő előnyt biztosítanak: kumulatív lefedettséget a hibák felfedésére és a hiba költségeinek csökkentésére, ismételhetőséget az idő megtakarítása és a piacra kerülés költségeinek csökkentése érdekében, valamint erőforrás-termelékenység javítását.
Fontos felismerni, hogy a tesztelési ciklus már alapvetően feszes, ezért ne számíts arra, hogy az automatizáció lerövidíti – inkább arra, hogy segít tartani a határidőt egy megbízható termékkel. A lefedettség növelésével és így a hibák valószínűségének csökkentésével az automatizáció segíthet elkerülni a támogatási és javítási költségeket, valamint a potenciálisan pusztító költségeket.
Kumulatív lefedettség
Tény, hogy az alkalmazások az idő múlásával változnak és bonyolultabbá válnak. Az alábbi ábra szerint az alkalmazás funkciói az idővel fokozatosan bővülnek. Ezért a megfelelő lefedettséghez szükséges tesztek száma is folyamatosan növekszik.
Még ha csak 10%-os változás történik a kódban, akkor is szükséges az összes funkció 100%-os tesztelése. Ezért a manuális tesztelés nem tud lépést tartani – hacsak nem növeled folyamatosan a tesztelési erőforrásokat és a tesztelési ciklus idejét, a lefedettség folyamatosan csökkenni fog. Az automatizálás ebben segíthet azáltal, hogy az alkalmazás életciklusa során felhalmozza a teszteseteket, így a meglévő és új funkciók mindig tesztelhetők.
Ironikus módon, amikor kevés az idő a tesztelésre, a tesztelők gyakran az új funkciók tesztelése mellett döntenek a regressziós teszteléssel szemben. Az irónia az, hogy a legnagyobb kockázatot a felhasználó számára a meglévő funkciók jelentik, nem az újak! Ha valami, amit az ügyfél már használ, nem működik többé – vagy ami még rosszabb, helytelenül működik –, az leállíthatja a működést. Egy új funkció elvesztése kényelmetlenséget vagy kellemetlenséget okozhat, de valószínűtlen, hogy katasztrofális lesz.
Ez az előny azonban elveszik, ha az automatizált tesztek nem fenntarthatóak az alkalmazás változásaival. Ha azokat újra kell írni vagy jelentős módosításokat igényelnek az újrahasznosításhoz, folyamatosan újra kell kezdened, ahelyett hogy az eddigi erőfeszítésekre építenél. Ezért elengedhetetlen, hogy olyan tesztkönyvtár-tervezési megközelítést alkalmazz, amely támogatja a fenntarthatóságot az alkalmazás élettartama alatt.
Kihasználtság
Az automatizált tesztekből származó valódi haszon nemcsak egy manuálisan végzett teszt rögzítésének megismétléséből származik, hanem olyan tesztek futtatásából, amelyeket sosem végeztek manuálisan. Például, ha programozottan generálsz teszteseteket, akár több ezer tesztesetet is létrehozhatsz – miközben manuális erőforrásokkal csak néhány százat.
Ennek az előnynek a kihasználásához szükséges a megfelelő teszteset- és szkripttártervezés, hogy külső adatfájlok és egyéb konstrukciók alkalmazásával kihasználhasd ezt a lehetőséget.
Gyorsabb piacra jutás
Mivel a szoftver versenyelőnyt biztosít, a piacra jutási idő lehet a projekt egyik fő mozgatórugója. Egyes esetekben az idő többet ér, mint a pénz, különösen, ha egy új bevételt generáló termék vagy szolgáltatás bevezetéséről van szó.
Az automatizáció segíthet csökkenteni a piacra jutási időt, lehetővé téve, hogy a tesztek 24 órában fussanak. Amint a tesztkönyvtár automatizált, a végrehajtás gyorsabb, és tovább tart, mint a manuális tesztelés. Természetesen ez az előny csak akkor érhető el, ha a tesztek már automatizáltak.
Csökkentett hibaköltség
A szoftverek kockázatos, kritikus alkalmazásokra készülnek, amelyek bevételt és termelékenységet képviselnek. Egyetlen hiba többe kerülhet, mint a teljes tesztköltségvetés a következő évszázadra! Egy esetben egyetlen hiba közel 2 milliárd dolláros költséget eredményezett. A nemzeti szabványügyi és technológiai hivatal becslése szerint a hibák kijavításának költsége évi 59,5 milliárd dollár, míg a USA Today szerint az amerikai gazdaságra évente 100 milliárd dolláros hatása van.
Az automatizáció csökkentheti a hibaköltséget azáltal, hogy megnöveli a lefedettséget, így a hibákat még azelőtt feltárhatjuk, hogy valódi károkat okoznának a gyártásban.
Figyelj arra, hogy mi NEM szerepelt az előnyök között: csökkentett tesztelési erőforrások. Szomorú tény, hogy a legtöbb tesztelő csapat már eleve alulfinanszírozott, így nincs értelme tovább csökkenteni egy már eleve szűkös csapatot. Inkább arra összpontosíts, hogy a rendelkezésre álló idővel és erőforrásokkal végezd el jól a feladatot. Ebben a Kézikönyvben gyakorlati tanácsokat adunk arra vonatkozóan, hogyan valósítsd meg ezeket az előnyöket, miközben reálisan tartod az elvárásaidat és elkötelezetté teszed a menedzsmentet.