1University of Geneva, Switzerland 2CERN, Geneva, Switzerland
Towards Language Independent (Dynamic) Symbolic Execution
Manuel Gonzalez-Berges 2 Didier Buchs 1 Stefan Klikovits 1,2
Stefan Klikovits 1 stefan.klikovits@unige.ch
Towards Language Independent (Dynamic) Symbolic Execution Manuel - - PowerPoint PPT Presentation
1 University of Geneva, Switzerland 2 CERN, Geneva, Switzerland Towards Language Independent (Dynamic) Symbolic Execution Manuel Gonzalez-Berges 2 Stefan Klikovits 1 , 2 Didier Buchs 1 Stefan Klikovits 1 stefan.klikovits@unige.ch What are we
1University of Geneva, Switzerland 2CERN, Geneva, Switzerland
Stefan Klikovits 1 stefan.klikovits@unige.ch
Stefan Klikovits 2 stefan.klikovits@unige.ch
Stefan Klikovits 2 stefan.klikovits@unige.ch
https://thriftytraveller.files.wordpress.com/2013/11/asterix_obelix3.gif
Stefan Klikovits 3 stefan.klikovits@unige.ch
https://thriftytraveller.files.wordpress.com/2013/11/asterix_obelix3.gif
Stefan Klikovits 3 stefan.klikovits@unige.ch
Stefan Klikovits 3 stefan.klikovits@unige.ch
http://asterix.wikia.com/wiki/Asterix_and_Cleopatra
Stefan Klikovits 3 stefan.klikovits@unige.ch
Stefan Klikovits 3 stefan.klikovits@unige.ch
https://www.efiliale.de/efiliale/images/aktionen/asterix/5624_Troubadix.png
Stefan Klikovits 3 stefan.klikovits@unige.ch
http://www.asterix.com/asterix-de-a-a-z/les-personnages/perso/a43b.gif
Stefan Klikovits 3 stefan.klikovits@unige.ch
http://samcnitt.tumblr.com/ Stefan Klikovits 4 stefan.klikovits@unige.ch
code SP data test cases results
SP CTRL CTRL test inputs SP tool code test inputs
Stefan Klikovits 5 stefan.klikovits@unige.ch
code SP data test cases results
SP CTRL CTRL test inputs SP tool code test inputs
Stefan Klikovits 5 stefan.klikovits@unige.ch
1 f ( x ){ 2 i f GLOBAL_VAR : 3 return dbGet(x) 4 e l s e : 5 return −1 6 }
1 f_sp ( x , a ,b){ 2 i f a : 3 return b 4 e l s e : 5 return −1 6 }
1 test_f_sp (){ 2 x = f ( " t e s t " , True , 5 ) // act 3 a s s e r t ( x == 5) // a s s e r t 4 }
Stefan Klikovits 6 stefan.klikovits@unige.ch
https://sites.google.com/site/diedruidenmt/_/rsrc/1367838067499/miraculix/Miraculix.jpg
Stefan Klikovits 7 stefan.klikovits@unige.ch
Pex SP parameter vals parameter vals
Test Input Set mock spec call to CUT asserts // Mock( func ) r e t u r n (. . . ) void test_case_1 (){ param1 = . . . param2 = . . . r e s = CUT( param1 , param2 ) a s s e r t ( " check " , r e s == . . . ) } Test case
Stefan Klikovits 8 stefan.klikovits@unige.ch
code SP data test cases results
SP CTRL CTRL test inputs SP tool code test inputs
Stefan Klikovits 9 stefan.klikovits@unige.ch
code SP data test cases results
SP CTRL CTRL test inputs SP tool code test inputs
Stefan Klikovits 9 stefan.klikovits@unige.ch
code SP data test cases results
SP CTRL CTRL test inputs SP tool code test inputs
Stefan Klikovits 9 stefan.klikovits@unige.ch
Stefan Klikovits 10 stefan.klikovits@unige.ch
http://chapleau.us/Img/caesar_asterix.gif
Stefan Klikovits 10 stefan.klikovits@unige.ch
http://chapleau.us/Img/caesar_asterix.gif
https://www.youtube.com/watch?v=UF6E-4G4n_M
Stefan Klikovits 10 stefan.klikovits@unige.ch
http://chapleau.us/Img/caesar_asterix.gif
https://en.gamigo.com/game/asterix
https://www.youtube.com/watch?v=UF6E-4G4n_M
Stefan Klikovits 10 stefan.klikovits@unige.ch
http://chapleau.us/Img/caesar_asterix.gif
https://en.gamigo.com/game/asterix
https://www.youtube.com/watch?v=UF6E-4G4n_M
https://www.pinterest.com/pin/336784878358770673/
Stefan Klikovits 10 stefan.klikovits@unige.ch
1 i n t func ( i n t a , i n t b ) { 2 a++ 3 a++ 4 b = b+2 5 i f ( a > b ){ 6 return a % b 7 } e l s e { 8 return a + b 9 } 10 }
https://en.gamigo.com/game/asterix
https://www.youtube.com/watch?v=UF6E-4G4n_M
https://www.pinterest.com/pin/336784878358770673/
Stefan Klikovits 10 stefan.klikovits@unige.ch
1 i n t func ( i n t a , i n t b ) { 2 a++ 3 a++ 4 b = b+2 5 i f ( a > b ){ 6 return a % b 7 } e l s e { 8 return a + b 9 } 10 }
https://en.gamigo.com/game/asterix
1 i n t func ( int , i n t ){ 2 i n t++ 3 i n t++ 4 i n t = i n t + i n t 5 i f ( i n t > i n t ) { 6 return i n t % i n t 7 } e l s e { 8 return i n t + i n t 9 } 10 }
https://www.pinterest.com/pin/336784878358770673/
Stefan Klikovits 10 stefan.klikovits@unige.ch
1 i n t func ( i n t a , i n t b ) { 2 a++ 3 a++ 4 b = b+2 5 i f ( a > b ){ 6 return a % b 7 } e l s e { 8 return a + b 9 } 10 }
1 i n t func ( i n t a , i n t b ) { 2 i n t++ 1 3 i n t++ 1 4 i n t = i n t+i n t 1 5 i f ( i n t > i n t ){ 6 return i n t % i n t 7 } e l s e { 8 return i n t + i n t 1 9 } 10 }
1 i n t func ( int , i n t ){ 2 i n t++ 3 i n t++ 4 i n t = i n t + i n t 5 i f ( i n t > i n t ) { 6 return i n t % i n t 7 } e l s e { 8 return i n t + i n t 9 } 10 }
https://www.pinterest.com/pin/336784878358770673/
Stefan Klikovits 10 stefan.klikovits@unige.ch
1 i n t func ( i n t a , i n t b ) { 2 a++ 3 a++ 4 b = b+2 5 i f ( a > b ){ 6 return a % b 7 } e l s e { 8 return a + b 9 } 10 }
1 i n t func ( i n t a , i n t b ) { 2 i n t++ 1 3 i n t++ 1 4 i n t = i n t+i n t 1 5 i f ( i n t > i n t ){ 6 return i n t % i n t 7 } e l s e { 8 return i n t + i n t 1 9 } 10 }
1 i n t func ( int , i n t ){ 2 i n t++ 3 i n t++ 4 i n t = i n t + i n t 5 i f ( i n t > i n t ) { 6 return i n t % i n t 7 } e l s e { 8 return i n t + i n t 9 } 10 }
Stefan Klikovits 10 stefan.klikovits@unige.ch
CTRL Functions 1521 499 Unsupported Feature 45 SP Error Semi-purification SP Functions 977 186 Translation Error Translation C# Code 791 Test Inputs 5060 ATCG (Pex) Test Cases 5060 TCGen 24 Exec Error 4138 matching oracles 898 mismatching oracles
Stefan Klikovits 11 stefan.klikovits@unige.ch
1 - 3 4 - 7 8 - 14 15 - 30 > 30 5 10 15 20 25 30 35 40 45
% Functions
0.8% 42.1% 32.9% 17.1% 5.9% 1.3%
# TCs per function (n = 791)
10 10 20 30 40 50 60 70 80 90 100 110 120
Box plot distribution
Stefan Klikovits 12 stefan.klikovits@unige.ch
no report 0% 1% - 49% 50% - 75% 75% - 99% 100%
Coverage % Functions
0.1% 1.0% 5.8% 7.2% 9.9% 76.0% 76.0%
n = 791
Stefan Klikovits 13 stefan.klikovits@unige.ch
Stefan Klikovits 14 stefan.klikovits@unige.ch
Stefan Klikovits 15 stefan.klikovits@unige.ch
1University of Geneva, Switzerland 2CERN, Geneva, Switzerland
Stefan Klikovits 16 stefan.klikovits@unige.ch
Stefan Klikovits 17 stefan.klikovits@unige.ch