tesztgenerálás a gyakorlatban - az intellitest és ami mögötte van
TRANSCRIPT
Budapesti Műszaki és Gazdaságtudományi EgyetemMéréstechnika és Információs Rendszerek Tanszék
Budapesti Műszaki és Gazdaságtudományi EgyetemHibatűrő Rendszerek Kutatócsoport
Tesztgenerálás a gyakorlatbanAz IntelliTest és ami mögötte van
Honfi Dá[email protected]
9. Enterprise Developer Meetup
Az előadás fókusza
modul B
modul Cservice
Egységtesztelés(unit testing)
modul A
Struktúra alapú tesztelés
(kód ismert)
Forráskód alapú teszttervezéspublic int M1(int a, int b){ if(a == 0) { Console.WriteLine(ERROR_MSG); return -1; } if(b > a) return b*a+5; else return (a+b)/2;}
Fedjük le az összes utasítást!
a==0
a!=0 && b>a a!=0 &&
b<=a a==0 a!=0 && b>a a!=0 & b<=a
a 0 2 1b 0 1 2
Mi az, ami kimaradt?
Mi az, amit észre lehet venni?oAlap, általános hibák (pl. nem várt kivételek)oEllenőrzések megsértése (pl. assertionök)oEltérés már meglévő kimenettől• Regressziós teszt: korábbi változatok összevetése• Más implementációk összehasonlítása
teszteset = bemenet + elvárt kimenet
Kód alapú tesztgenerálás automatizálása
Jól láthatóan automatizálható (kódbejárás)o ’70-es évek óta módszerek
(pl. szimbolikus végrehajtás)o DE: számítási igények + egyéb kihívások
Napjainkban válik alkalmazhatóváo Újabb és újabb módszerekoMeglévő technikák vegyítéseo Fejlett számítási algoritmusoko…
Eszközök .NEToMicrosoft IntelliTest (a.k.a. Pex)oMicrosoft SAGE
JavaoNASA Symbolic PathFinderoCATGo…
JavaScript: Jalangi C: KLEE (Cloud9)
Microsoft Research
Microsoft IntelliTest
Egység-tesztelés
Struktúra alapú teszt
Szimbolikus végrehajtás
modul A
Para
met
rikus
eg
ység
tesz
tek
Tesz
tbem
enet
ek,
tesz
tese
tek
DEMO 1.
Az IntelliTest alapvető használata
A Pex engine részletei
Forráskód
Konkrét bemeneti értékek
Szimbolikus változók
Kényszer-megoldó Kényszerek
VégrehajtásSzimbolikus végrehajtás
a!=0 && b>a
a:=2; b:=3a,b
DEMO 2.
Az IntelliTest használata komplex esetekben
DEMO 2. architektúra
BLL(UserManager)
DAL(DBExecutor)
Services(UserServices)
Még nem implementált Cloudban futó
Felhasználót hozunk létre
DEMO 3.
Tesztgenerálás vizualizációja
Mit várhatunk a hasonló eszközöktől? Kiértékeléshez megfelelő „experiment” kell
o SF100 benchmark: 100 projekt SourceForge-ról• 50% körüli elágazás lefedettség• Nagy szórás
o Saját tapasztalatok• Modellező eszköz: 99% blokklefedettség, jól alkalmazható• CMS rendszer: Komplex rendszerekhez iteratív használat
Használhatósági kiértékelés?o Ipari méretű problémákra hogyan használható?oMérnökök hogyan alkalmazzák?
Demóból mit hagytam ki?
Összefoglalás
Struktúra alapú tesztelés automatizálható Sok eszköz létezik, különböző hatékonysággal Microsoft IntelliTest
o Parametrizált egységteszto Szimbolikus végrehajtáso Több használati eset• Bemenetek generálása• Tesztgenerálás
Használhatóságuk kiértékelése nehéz kérdés