Automatizáljunk sikeresen


Miért van szükség az automatizálásra? Milyen szintű automatizálásban gondolkodjunk? Milyen téveszmék vannak az automatizált tesztelésben? Milyen céljaink lehetnek, amikor tesztszkripteket kezdünk el gyártani? Ilyen kérdésekre kaphatjuk meg a választ, és természetesen arra, hogyan mérhető az automatizálás sikeressége.

Részt vettem Dorothy Graham STARCanada konzultációján, amelyet a “Sikeres tesztautomatizálás” címmel tartott, ahol nagyon sokat jegyzeteltem. Készítettem belőle egy kivonatot, mely talán többeknek hasznos lehet.

A tesztelők által használt automata eszközök csak 19%-a termel hasznot. Tesztelés és automatizálás két különböző feladat, melyet különböző szakemberek végeznek.

Aki automatizálni akar, az a következő egyszerű problémákkal találja szembe magát: Automatizáljon, vagy manuálisan teszteljen? A határidő sokszor arra kényszerítheti a tesztelőt, hogy elodázza az automatizálást.

  • Automatizálók: Olyan személyek, akik megfelelő programozói szakértelemmel készítik az automata teszteket.
  • Tesztelők: Olyan emberek, akik teszteket írnak, eldöntik, melyik tesztet kell automatizálni és futtatják a megírt teszteket (akár automatikusan, akár manuálisan). “Néhány tesztelő inkább szereti elrontani a dolgokat, mint megcsinálni.”
  • Az automatizálás olyan, mintha a tesztelő szolgája lenne. Olyan feladatokat old meg, amely unalmas és monoton, így a tesztelő azzal foglalkozhat, amivel a legjobban szeretne.

Egy “pilot” projekt a legjobb arra, hogy kipróbáljuk az automatizált tesztelést. Ha nincs más, akkor nevezzünk ki valamit “pilot”-nak csak úgy erőből. Állítsunk egyszerű, teljesíthető célokat magunk elé és pár hét/hónap múlva mérlegeljük őket. Ha a céljainkat nem értük el, akkor próbáljuk meg ismét, de egyszerűbb célokat tűzzünk ki magunk elé.

Milyen hibás tesztautomatizálási indokok lehetnek?

  • Az automatizálással csökkentjük a felhasználók által talált hibák számát – A felfedező teszteléssel sokkal jobb hatásfokkal találjuk meg a hibákat.
  • Gyorsabb tesztelés – Az automatizálás nagyon sokszor lassabb tesztelést fog eredményezni, amennyiben kiszámoljuk, hogy mennyi időt töltöttünk el a tesztek írásával, karbantartásával és az eredmények kiértékelésével. Az egyedüli olyan aktivitás, amely felgyorsul az csakis a tesztek futtatása.
  • Tökéletesítjük a tesztelésünket – A tesztelési folyamatot addig kell tökéletesítenünk, amíg az automatizálást el nem kezdjük. Ha nem így teszünk, akkor nagyon gyenge automatizálást tudunk csak véghezvinni.
  • Csökken a teszttervezés ideje és költsége – Az automatizálás éppen növelni fogja ezeket!
  • Futtassuk a regressziós tesztjeinket esténként és hétvégenként – Esténként és hétvégenként dolgozni akarsz? Ha a tesztek valami oknál fogva megállnak, az első gondolatod az lesz, hogy még egyszer ilyet nem fogsz csinálni.
  • Automatizálj mindent! – Miért nincs automatizálva az, amit automatizálni akarsz?
  • Gyorsabb hibakeresés – Nem az automatizálás fogja megtalálni a hibát, hanem a teszt. Az a teszt ami nem automatizálva fut majd manuálisan fog futni.

Egy dolog van, amit igazán tetszett a fenti példákban, hogy Dorothy segített elkülöníteni a tesztelési tevékenységet, az automatizálási tevékenységtől. Ez segít elkerülni azokat az általános hibákat, melyek elterelik figyelmünket a tesztelésről.

Pozitív tesztautomatizálási célok:

  • Megszabadítjuk a tesztelőket az ismétlődő tesztfuttatásoktól és többet foglalkozhatnak a tesztek megtervezésével illetve a felfedezői tesztekkel.
  • Jobban ismételhető regressziós teszteket kapunk – A gépek nagyon jó ellenőrzők. Ezek az ellenőrzések figyelmeztetnek téged, ha valami váratlan dolog változik.
  • Építs automatizált keretrendszert, mert ezáltal megkönnyíted az új tesztek írását és a meglévők karbantartását.
  • Amikor csak lehetséges futtasd le a lehető legtöbb használható tesztet azokon gépeken, amelynek nincs kihasználva az erőforrása. – Sokkal jobb ötlet, mint hétvégenként dolgozni.
  • Azokat a teszteket automatizáld, amelyek a tesztelők szerint a leghasznosabbak, legértékesebbek – Sokkal többet nyersz vele, mint ha mindent automatizálnál.
Az automatizálás mérése meglehetősen egyszerű. De következetesen használni a méréseket már nem annyira:

  • Hányszor futott le a teszt?
  • A tesztek milyen sokáig futottak?
  • Mekkora humán erőt kellett bevonni a tesztek futtatásába és az eredmények kiértékelésébe?
  • Mekkora humán erőt kellet bevonni az automata tesztek tervezésébe?
  • Hány automata teszt van?

EMTE (Equivalent Manual Test Effort – Azonos mértékű manuális tesztelői erőforrás) – Mekkora erőforrást kellene bevetni, ha manuálisan akarnánk futtatni az automatikus tesztjeinket. Például, ha a teszteket két ember 1-1 órán keresztül tudja lefuttatni, akkor az EMTE mértéke 2 óra.

Hol lehet ezt a mérést használni? A legegyszerűbben ezt a mérőszámot a menedzsment meggyőzésére használhatjuk. A vezetőség ezt érti meg a legkönnyebben. Hol élhetünk vissza ezzel a méréssel? Ha felfújjuk az EMTE értékét azáltal, hogy az automata tesztek újrafuttatásait is beleszámoljuk, az félreérthető lehet. Az automata tesztek minden nap lefutnak, de új build nem minden nap kerül ki a tesztkörnyezetre, tehát az EMTE-hez nem adhatjuk hozzá az összes értéket.

Hol lehet még visszaélni a mérőszámmal? Ha eltitkolod azt a tényt, hogy az emberek sokkal jobban képesek a hibák felfedezésére és dokumentálására, mint a gépek. Vagy amikor az automata teszteket nem tudja ember futtatni és a manuális teszteket nem tudja gép futtatni.

ROI (Return On Investment - Megtérülés) – Dorothy megkérdezte a hallgatóságot, hogy mekkora megtérülést értek el eddig az automata tesztekkel? Hat válaszadó mindegyike elhibázta; mindenki az automatizálás különböző hasznát kezdte el magyarázni ahelyett, hogy a megtérülés értékét mondta volna. A ROI egy szám, remélhetőleg egy pozitív szám.

ROI = (haszon - költség) / költség

A trükk, hogy a tesztelői erőforrás idejét kellene pénzben kifejezni. A ROI nem tudja mérni az olyan dolgokat, mint “gyorsabb futtatás”, “rövidebb piacra dobás”, “teszt lefedettség”.

  • Hol lehet ezt a mérőszámot használni? A vezetőség nem fogja elhinni azt, hogy az automatizálás hasznos dolog egészen addig, amíg el nem mondod nekik. A megtérülés mértéke az egyetlen olyan szám, amit hallani akarnak majd.
  • Hol nem fogod tudni használni a ROI-t? A megtérülés nem olyan fontos, amikor például a sikerességet akarod mérni. “Az automatizálás lehetőséget ad a sikerre és nem egy költségcsökkentő eszköz.” – mondta Yoram Mizrachi. “A céged különböző jogászokkal szerződik anélkül, hogy kiszámolná azok megtérüléseit.”

Az automatizálásnál nem lehet “belecsapni a lecsóba”, számos szokványos út van, amely a kevéssé automatizált megoldástól a jól automatizált megközelítésig visz. (pl.: a felvétel és visszajátszástól el tudunk jutni a keyword driven keretrendszerig)

Testkörnyezet architektúra – Megfontoltan kell elkülöníteni az automata teszteket és az eszközöket, vagyis ne kösd magad az teszteszközhöz.

Ne csak a tesztekre, hanem az elő- és utómunkákra is használj automatizmust azért, hogy beállítsd a tesztek környezetét. Jegyezd meg, hogy minden automatizálható, kivételt csak az képez, hogy kiválaszd mely tesztek fussanak és hogy feldolgozd az eredményeket.

Az összehasonlítás lehet konkrét, vagy sokrétű.

  • Konkrét összehasonlítás – amikor az automatikus teszt csak egy dolgot ellenőriz.
  • Sokrétű összehasonlítás – amikor az automatikus teszt egyszerre több dolgot is ellenőriz.

Amennyiben a sokrétű összehasonlítások átfedik egymást, lehet, hogy 4 teszted is hibás lesz ahelyett, hogy a konkrét tesztjeid közül 3 jó teszted lenne és 1 hibás. Ez az egyik legérdekesebb megállapítás, amit egy automatizáló szakember tehet.

Azt gondolom, hogy ez választja el az amatőrt a szakembertől. Köszönöm Dorothy!


Szerző:
Eric Jacobson

<< Vissza