A tesztelés hét alapelvéből az első: kimerítő tesztelés nem lehetséges. Ennek ellenére jaj, hányszor hallottam: ezt most nagyon alaposan teszteljétek le, és ha bármilyen hiba van benne, azt találjátok meg!
Nagyon vicces volt, hányféle szinonimát találtak a kollégák a „kimerítő” szóra:
- kívülről-belülről teszteljétek le
- teszteljétek szét
- tüzetesen fésüljétek át
- teszteljétek szénné
Elméletben persze érdekes eljátszani a gondolattal, hogy például egy adott szoftver modul kimerítő tesztelése mit jelentene:
- minden lehetséges input adatot (minden lehetséges ekvivalens input adatot),
- minden lehetséges futtatási opciót (összes gomb, összes menüpont, összes opció kipróbálása)
- minden lehetséges futás közbeni beavatkozási módot (gombok nyomogatása, egér kattintás, környezet módosítása)
- ezeket az összes lehetséges sorrendben
- leírni
- lefuttatni
Végtelen ideig tartana vagy végtelen erőforrást igénybe véve lehetne megvalósítani. Hétfőre kell? Nem probléma!
A valóságban pedig nyilván adott már az ún. regressziós teszt set, amit adott idő alatt le lehet futtatni. Hibákat találni pedig a kollégák tapasztalata, és az új fejlesztésekről megismert információk függvényében lehet. Szerintem a fejlesztő kollégák se örülnének, ha belátható időn belül minden hibát megtalálnánk…