Tesztelés a Gyakorlatban - A szakértő tesztelők lapja


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