1University of Geneva, Switzerland 2CERN, Geneva, Switzerland
Automated Test Case Generation for CTRL using Pex: Lessons Learned
David PY Lawrence 1 Manuel Gonzalez-Berges 2 Didier Buchs 1 Stefan Klikovits 1,2
Stefan Klikovits 1 s.k@cern.ch
Automated Test Case Generation for CTRL using Pex: Lessons Learned - - PowerPoint PPT Presentation
1 University of Geneva, Switzerland 2 CERN, Geneva, Switzerland Automated Test Case Generation for CTRL using Pex: Lessons Learned David PY Lawrence 1 Stefan Klikovits 1 , 2 Manuel Gonzalez-Berges 2 Didier Buchs 1 Stefan Klikovits 1
1University of Geneva, Switzerland 2CERN, Geneva, Switzerland
Stefan Klikovits 1 s.k@cern.ch
Stefan Klikovits 2 s.k@cern.ch
Stefan Klikovits 2 s.k@cern.ch
code SP data test cases results
SP CTRL CTRL test inputs SP tool code test inputs
Stefan Klikovits 3 s.k@cern.ch
code SP data test cases results
SP CTRL CTRL test inputs SP tool code test inputs
Considering Execution Environment Resilience: A White-Box Approach
Stefan Klikovits 3 s.k@cern.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 4 s.k@cern.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 5 s.k@cern.ch
CTRL Functions 1111 166 Unsupported 159 SP Err Semi-purification SP Functions 786 184 Translation Err Translation C# Code 602 Test Inputs 3972 ATCG (Pex) 294 TCGen Err Test Cases 3678 TCGen 29 Exec Error 2465 matching oracles 1184 mismatching oracles
Stefan Klikovits 6 s.k@cern.ch
CTRL Functions 1191 ✘✘ 1111 249 ✟
166 Unsupported 67 ✟
159 SP Err Semi-purification SP Functions 875 ✟
786 199 ✟
184 Translation Err Translation C# Code 676 ✟
602 Test Inputs 3610 ✘✘ 3972 ATCG (Pex) 493 ✟
294 TCGen Err Test Cases 3117 ✘✘ 3678 TCGen 15 ✚
29 Exec Error 2613 ✘✘ 2464 matching oracles 489 ✘✘ 1184 mismatching oracles
Stefan Klikovits 7 s.k@cern.ch
Stefan Klikovits 8 s.k@cern.ch
Stefan Klikovits 9 s.k@cern.ch
Stefan Klikovits 9 s.k@cern.ch
Stefan Klikovits 9 s.k@cern.ch
Stefan Klikovits 10 s.k@cern.ch
Stefan Klikovits 10 s.k@cern.ch
Stefan Klikovits 10 s.k@cern.ch
Stefan Klikovits 10 s.k@cern.ch
Stefan Klikovits 10 s.k@cern.ch
code SP data test cases results
SP CTRL CTRL test inputs SP tool code test inputs
Stefan Klikovits 11 s.k@cern.ch
code SP data test cases results
SP CTRL CTRL test inputs SP tool code test inputs
Stefan Klikovits 11 s.k@cern.ch
Stefan Klikovits 12 s.k@cern.ch
http://samcnitt.tumblr.com/ Stefan Klikovits 12 s.k@cern.ch
Stefan Klikovits 13 s.k@cern.ch
http://asterix.wikia.com/wiki/Asterix_and_Cleopatra
Stefan Klikovits 13 s.k@cern.ch
Stefan Klikovits 14 s.k@cern.ch
http://chapleau.us/Img/caesar_asterix.gif
Stefan Klikovits 14 s.k@cern.ch
http://chapleau.us/Img/caesar_asterix.gif
https://www.youtube.com/watch?v=UF6E-4G4n_M
Stefan Klikovits 14 s.k@cern.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 14 s.k@cern.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 14 s.k@cern.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 14 s.k@cern.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 14 s.k@cern.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 14 s.k@cern.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 14 s.k@cern.ch
Stefan Klikovits 15 s.k@cern.ch
n
Stefan Klikovits 16 s.k@cern.ch
n
Stefan Klikovits 16 s.k@cern.ch
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 }
Stefan Klikovits 17 s.k@cern.ch
1 i n t func ( i n t a , i n t b ) { 2 a++ 1 3 a++ 1 4 b = b+2 1 5 i f ( a > b ){ 6 return a % b 7 } e l s e { 8 return a + b 1 9 } 10 }
Stefan Klikovits 17 s.k@cern.ch
Stefan Klikovits 18 s.k@cern.ch
Stefan Klikovits 18 s.k@cern.ch
Stefan Klikovits 18 s.k@cern.ch
Stefan Klikovits 18 s.k@cern.ch
Stefan Klikovits 19 s.k@cern.ch
Stefan Klikovits 20 s.k@cern.ch
Stefan Klikovits 20 s.k@cern.ch
Stefan Klikovits 20 s.k@cern.ch
Stefan Klikovits 20 s.k@cern.ch
1University of Geneva, Switzerland 2CERN, Geneva, Switzerland
Stefan Klikovits 21 s.k@cern.ch