3 March 2015

A jó manuális teszt nem automatizálható

2014. június 5-én, a budapesti Teszt & Tea rendezvényen elhangzott előadásom automatizálást érintő  részlete.

Az egyik üzenetem a négy hónappal ezelőtt előadó egyik kollégának szól, aki azt mondta, „milyen jó lenne, ha minden tesztelés automatizált lenne”. Nos, nem lenne jó és azt is elmondom, hogy miért.

Amikor egy ember hajt végre egy tesztet, képességeinek és érzékszerveinek teljes skáláját viszi harcba. Improvizálhat közben, tetszés szerint változtathat például az előre eltervezett lépéssorrenden, vagy a végrehajtás sebességén valamilyen érdekes, de előre nem látható információ hatására. Észrevehet nem várt, vagy előzetesen elképzelhetetlennek hitt dolgokat. Az emberi kiszámíthatatlanság önmagában is egy teszt variáló tényező. Ezek a variációk újabb és újabb problémákat fedhetnek fel. 

Az automatizálás során egyszerűen arra kérjük a számítógépet, hogy az általunk explicit módon specifikált utasításokat a megadott sorrendben hajtsa végre. A gép természetesen minden egyes alkalommal fáradhatatlanul teszi a dolgát, de ugyanazzal a sebességgel, (jellemzően) ugyanabban a lépéssorrendben, ugyanazokat a szimulált egérmozdulatokat használva stb. És nem rendelkezik a humán tesztelő készségeivel, hallgatólagos tudásával (tacit knowledge) ill. az érzékelésének előnyeivel. Az eredmények automatikus kiértékelésének szintén megkerülhetetlen korlátai vannak. A felkészült emberi agy jobb bármilyen elképzelhető automatánál.


Ember
Számítógép
fáradtság, szétszórtság

+
zavar
?
+
érzékelés
+

intuíció
+

kíváncsiság
+

gyanú
+

nyomozás
+

megismételhetőség

+
eltérés tervezett úttól
+

kiszámíthatóság

+
kritikus gondolkodás
+


Az automatizált tesztelés (vagy az ennek nevezett folyamat) tehát mindössze halvány leképzése egy intellektuálisan szerteágazó tevékenyégnek. Ezért nonszensz úgy beszélni az automatizált tesztekről, mintha azok gépesített emberi tesztek lennének. Ne hasonlítsátok a manuális teszteket az automatizáltakhoz! Inkább úgy tekintsetek ez utóbbiakra, hogy segítenek kiterjeszteni a képességeiteket: olyan tesztek végezhetők el számítógépek segítségével, amelyek az ember által nem.

Természetesen szükség van az automatizálás nyújtotta előnyökre, de az automatizált tesztelés sohasem fogja átvenni a manuális tesztelés helyét. Legalábbis addig nem, amíg nem sikerül emulálni az emberi agyműködést és ettől még nagyon messze van a tudomány. Mikor lesz képes például eldönteni egy mesterséges intelligencia, hogy tetszik-e majd megcélzott felhasználói felhasználói bázisnak a program megjelenése, vagy bonyolult, nehézkes -e egy felhasználói interfész használata? Nagyon sokan próbálták már helyettesíteni a manuális tesztelést az automatikussal, eddig mind kudarcot vallottak. Ez egy rossz cél. Maga az automatizálás nem is lehet cél. Az automatizálás az, ami kell, hogy segítsen a tesztelésbeli céljaink elérésében. Még rengeteg lehetőség van az automatizálásban, nagyon sokat fog fejlődni az elkövetkező években.

Érdemes lehet eszünkbe vésni a fentiekkel kapcsolatban az automatizálás Bach-féle három szabályát:

  1. A jó manuális teszt nem automatizálható.
  2. Amennyiben sikerül automatizálni egy manuális tesztet, az nem volt jó manuális teszt.
  3. Ha van egy nagyszerű automatizált teszted, ez biztosan nem egyenértékű azzal a manuális teszttel, amelyikről azt gondolod, hogy automatizáltad.

Források, ajánlott olvasnivaló

[1] C Kaner, J Bach, B Petticord: Lessons Learned in Software Testing
     Chapter 5: Automating Testing
[2] Can Automation Aid Manual Testing? An Interview with Jonathan Kohl
[3] J Bach: Manual Test Cannot Be Automated
[4] Cem Kaner on Automated Testing - 'We are just scratching the surface'

No comments:

Post a Comment