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

Post on 14-Apr-2017

201 views 1 download

Transcript of 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ávidhonfi@mit.bme.hu

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