Integrációs és ellenőrzési technikák (VIMIA04) Tesztelési szintek Tesztautomatizálás Majzik István, Micskei Zoltán Méréstechnika és Információs Rendszerek Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék 1
Áttekintés Funkció Felülvizsgáló Verziókezelő rendszer Fejlesztő Éles környezet Kódolási szabályok Statikus analízis Egységteszt Folytonos integráció kiszolgáló Felügyelet Rendszerteszt 2 E2E teszt Ikonok: icons8.com
Példa: mit/hol/hogyan teszteljünk? 3
Példa: mit/hol/hogyan teszteljünk? Unit teszt 4
Példa: mit/hol/hogyan teszteljünk? Tesztelés API-n (~ integrációs teszt) 5
Példa: mit/hol/hogyan teszteljünk? Tesztelés GUI-ról (~ rendszerteszt) 6
TESZTELÉSI SZINTEK 7
I. Integrációs tesztelés Modulok Modulok együttműködésének ellenőrzése ellenőrzése Motiváció: o A rendszer annak ellenére hibás lehet, hogy minden modul egyenként hibátlan! Módszerek: o Funkcionális tesztelés: forgatókönyvek tesztje Ez sokszor a specifikáció része (scenario) o (Strukturális tesztelés inkább csak modulszinten!) Megközelítések: o Big bang : minden modult egyszerre integrálni o Inkrementális: egyenként összerakni a modulokat 8
Jellemzők: o E2E: end-to-end II. Rendszertesztelés o Funkcionális tesztek + nem-funkcionális jellemzők is! Kiemelhető: o Éles környezethez hasonló o Felhasználói profil figyelembe vétele (terhelés) o Rendszer alkalmazhatósági korlátok megállapítása (erőforrás-használat, telítődés) o Hibahatások vizsgálata Teljes rendszer tesztelése 9
Rendszerteszt típusok (példa) Tester Performance testing Configuration testing Concurrency testing Stress testing Reliability testing Teljesítmény teszt Valós terhelés, válaszidők Konfiguráció teszt HW és SW beállítások Konkurens viselkedés tesztje Felhasználók növelése Holtpont, kiéheztetés Terhelés (löket) teszt Telítődés vizsgálata Megbízhatóság tesztje Hibahatások vizsgálata Failover testing 10 Hibakezelés tesztje Hibadetektálás, redundancia
III. Átvételi tesztelés (acceptance testing) Gyakran vevő vagy végfelhasználó végzi Cél: Valóságos környezet hatásának tesztelése o Rendszerbe vetett bizalom megteremtése o Felhasználói elvárások figyelembe vétele (nem specifikált is) Lehet szerződéses elvárás is o Dobozos vagy nagyvállalati termék Alfa és béta teszt 11
Összefoglalás: Különbség a szintek között How Google Tests Software könyv ajánlásai: (small ~ unit, medium ~ integration, large ~ sytem) Small Medium Large Javasolt futási idő < 100 ms < 1 sec minél gyorsabban Időkorlát (kill) 1 perc 5 perc 1 óra Erőforrás Small Medium Large Hálózat (socket) Mocked csak localhost Igen Adatbázis Mocked Igen Igen Fájl hozzáférés Mocked Igen Igen Rendszerhívás Nem Nem javasolt Igen Több szál Nem javasolt Igen Igen Sleep utasítás Nem Igen Igen Rendszer tulajdonságai Nem Igen Igen 12
TESZTAUTOMATIZÁLÁS Miért, Mit, Hogyan, Mikor, Hol 13
MIÉRT: Automatikus tesztelés Teszt futtatás és/vagy kiértékelés automatizálása o Emberi kiértékelés lassú/drága (?) Manuális vagy automatikus? o Sok mindentől függ! o Nehézség Pl. GUI, CD írás, rajzolás o Tesztelés élethossza Meddig kell a teszt, milyen gyakran o Pontosság (false positive, false negative) Manuális ÉS automatikus! 14
MIT: Tesztelési piramis Source: Alister Scott Lásd még: Mike Cohn, Martin Fowler 15
HOGYAN: Tesztautomatizálási módszerek Capture/replay Könnyű létrehozni Nehéz karbantartani Structured Scripting Data-driven Közös műveletek szkript könyvtárban Teszt logika, adat és kód összefonódik Tesztek be/kimente külső forrásból (fájl, DB ) Keyword-driven Teszt üzleti/szakterületi kulcsszavakból áll Minden kulcsszó mögött kódrészlet Model-based Tesztkiválasztás is (részben) automatikus Lásd: ISTQB syllabus 16
HOGYAN: Tipikus részfeladatok (SEARCH) Setup Legfrissebb verzió fordítása/telepítése Különböző platform, OS, böngésző Virtuális gépek, Lab manager programok Execution Egyszerű script / xunit / keretrendszer Naplózás Analysis Teszt kiértékelése Sokszor nem triviális Reporting Tesztek ezrei esetén nem elegek a naplófájlok Összesítő információk Cleanup Ismert, tiszta állapotba visszaállítás Cél: tesztek ne befolyásolják egymás futását Help Teszt kód is ugyanolyan kód, azt is dokumentálni kell Sokszor a teszt kód hosszabb, mint az éles 17
MIKOR: Végrehajtási stratégiák Teljes (minden teszt) o Legalább minden kiadás előtt Smoke test o Kis tesztkészlet alap funkcionalitás ellenőrzésére o Gyors visszajelzés, de kicsi pontosság o Sokféle név, pl. build verification test (BVT) Regressziós tesztelés o Részleges újratesztelés (hatáselemzés) o Teszt prioritizálás 18
HOL: Tesztvégrehajtó platformok Web: különböző böngésző, OS Mobil: emulált vagy fizikai eszköz Sokféle kulcsrakész megoldás o Telepített: Selenium, Robot framework o Felhő: Browserstack, SauceLabs 19
HOL: Tesztelési laborok (web, mobil) Robot Assisted Test Automation (GTAC 2015) Chromecast Test Automation (GTAC 2015) 20
HOL: Tesztelési laborok (kritikus rendszer) Functional test challenges in safety critical EPAS systems, ThyssenKrupp Presta (Test&Tea 2015) Video and radar test, Bosch (Test & Tea 2015) 21
INFO: ISTQB Test Automation Engineer Forrás: ISTQB 22
INFO: Tesztelési konferenciák 23
Összefoglalás 24