tesztgenerálás a gyakorlatban - az intellitest és ami mögötte van
TRANSCRIPT
![Page 1: Tesztgenerálás a gyakorlatban - Az IntelliTest és ami mögötte van](https://reader036.vdocuments.pub/reader036/viewer/2022062523/588100fd1a28abc3368b7497/html5/thumbnails/1.jpg)
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
![Page 2: Tesztgenerálás a gyakorlatban - Az IntelliTest és ami mögötte van](https://reader036.vdocuments.pub/reader036/viewer/2022062523/588100fd1a28abc3368b7497/html5/thumbnails/2.jpg)
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)
![Page 3: Tesztgenerálás a gyakorlatban - Az IntelliTest és ami mögötte van](https://reader036.vdocuments.pub/reader036/viewer/2022062523/588100fd1a28abc3368b7497/html5/thumbnails/3.jpg)
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
![Page 4: Tesztgenerálás a gyakorlatban - Az IntelliTest és ami mögötte van](https://reader036.vdocuments.pub/reader036/viewer/2022062523/588100fd1a28abc3368b7497/html5/thumbnails/4.jpg)
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
![Page 5: Tesztgenerálás a gyakorlatban - Az IntelliTest és ami mögötte van](https://reader036.vdocuments.pub/reader036/viewer/2022062523/588100fd1a28abc3368b7497/html5/thumbnails/5.jpg)
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…
![Page 6: Tesztgenerálás a gyakorlatban - Az IntelliTest és ami mögötte van](https://reader036.vdocuments.pub/reader036/viewer/2022062523/588100fd1a28abc3368b7497/html5/thumbnails/6.jpg)
Eszközök .NEToMicrosoft IntelliTest (a.k.a. Pex)oMicrosoft SAGE
JavaoNASA Symbolic PathFinderoCATGo…
JavaScript: Jalangi C: KLEE (Cloud9)
![Page 7: Tesztgenerálás a gyakorlatban - Az IntelliTest és ami mögötte van](https://reader036.vdocuments.pub/reader036/viewer/2022062523/588100fd1a28abc3368b7497/html5/thumbnails/7.jpg)
Microsoft Research
![Page 8: Tesztgenerálás a gyakorlatban - Az IntelliTest és ami mögötte van](https://reader036.vdocuments.pub/reader036/viewer/2022062523/588100fd1a28abc3368b7497/html5/thumbnails/8.jpg)
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
![Page 9: Tesztgenerálás a gyakorlatban - Az IntelliTest és ami mögötte van](https://reader036.vdocuments.pub/reader036/viewer/2022062523/588100fd1a28abc3368b7497/html5/thumbnails/9.jpg)
DEMO 1.
Az IntelliTest alapvető használata
![Page 10: Tesztgenerálás a gyakorlatban - Az IntelliTest és ami mögötte van](https://reader036.vdocuments.pub/reader036/viewer/2022062523/588100fd1a28abc3368b7497/html5/thumbnails/10.jpg)
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
![Page 11: Tesztgenerálás a gyakorlatban - Az IntelliTest és ami mögötte van](https://reader036.vdocuments.pub/reader036/viewer/2022062523/588100fd1a28abc3368b7497/html5/thumbnails/11.jpg)
DEMO 2.
Az IntelliTest használata komplex esetekben
![Page 12: Tesztgenerálás a gyakorlatban - Az IntelliTest és ami mögötte van](https://reader036.vdocuments.pub/reader036/viewer/2022062523/588100fd1a28abc3368b7497/html5/thumbnails/12.jpg)
DEMO 2. architektúra
BLL(UserManager)
DAL(DBExecutor)
Services(UserServices)
Még nem implementált Cloudban futó
Felhasználót hozunk létre
![Page 13: Tesztgenerálás a gyakorlatban - Az IntelliTest és ami mögötte van](https://reader036.vdocuments.pub/reader036/viewer/2022062523/588100fd1a28abc3368b7497/html5/thumbnails/13.jpg)
DEMO 3.
Tesztgenerálás vizualizációja
![Page 14: Tesztgenerálás a gyakorlatban - Az IntelliTest és ami mögötte van](https://reader036.vdocuments.pub/reader036/viewer/2022062523/588100fd1a28abc3368b7497/html5/thumbnails/14.jpg)
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?
![Page 15: Tesztgenerálás a gyakorlatban - Az IntelliTest és ami mögötte van](https://reader036.vdocuments.pub/reader036/viewer/2022062523/588100fd1a28abc3368b7497/html5/thumbnails/15.jpg)
Ö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