15
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Budapesti Műszaki és Gazdaságtudományi Egyetem Hibatűrő Rendszerek Kutatócsoport Tesztgenerálás a gyakorlatban Az IntelliTest és ami mögötte van Honfi Dávid [email protected] 9. Enterprise Developer Meetup

Tesztgenerálás a gyakorlatban - Az IntelliTest és ami mögötte van

Embed Size (px)

Citation preview

Page 1: Tesztgenerálás a gyakorlatban - Az IntelliTest és ami mögötte van

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

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

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

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

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

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

Microsoft Research

Page 8: Tesztgenerálás a gyakorlatban - Az IntelliTest és ami mögötte van

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

DEMO 1.

Az IntelliTest alapvető használata

Page 10: Tesztgenerálás a gyakorlatban - Az IntelliTest és ami mögötte van

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

DEMO 2.

Az IntelliTest használata komplex esetekben

Page 12: Tesztgenerálás a gyakorlatban - Az IntelliTest és ami mögötte van

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

DEMO 3.

Tesztgenerálás vizualizációja

Page 14: Tesztgenerálás a gyakorlatban - Az IntelliTest és ami mögötte van

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

Ö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