SlideShare a Scribd company logo
1 of 28
Download to read offline
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
JTExpert
JTExpert Results
Conclusions
JTExpert at the Fifth Unit Testing Tool
Competition
Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc
Presented by: Rub´en Saborido Infantes
Department of Computer and Software Engineering
´Ecole Polytechnique de Montr´eal, Qu´ebec, Canada
SBST, May 22th, 2017, Buenos Aires, Argentina
Pattern Trace Identification, Detection, and Enhancement in Java
SOftware Cost-effective Change and Evolution Research Lab
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
Automatic Test-Data
Generation
Test-Data Format of OOP
JTExpert
JTExpert Results
Conclusions
Automatic Test-Data Generation
Goal
Developing automated techniques to reveal hidden
errors.
Solutions
Static Approaches: Constraint Based and Model
checking; Complete; suffers from scalability issues
Dynamic Approaches: Random; scalable; widely used;
Incomplete; depend on many parameters.
JTExpert
Random with Static Analyses for automatic test-data
generation;
Generates test-data suites that reach high code
coverage;
Freely available at:
https://sites.google.com/site/saktiabdel/JTExpert.
2 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
Automatic Test-Data
Generation
Test-Data Format of OOP
JTExpert
JTExpert Results
Conclusions
Test-Data Format of OOP
Test Target
Method Under Test
Argument1
...
Argumentn
3 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
Automatic Test-Data
Generation
Test-Data Format of OOP
JTExpert
JTExpert Results
Conclusions
Test-Data Format of OOP
Test Target
Method Under Test
Argument1
...
Argumentn
smallPublic ?
3 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
Automatic Test-Data
Generation
Test-Data Format of OOP
JTExpert
JTExpert Results
Conclusions
Test-Data Format of OOP
Test Target
Method Under Test
Argument1
...
Argumentn
smallPublic ?
©
3 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
Automatic Test-Data
Generation
Test-Data Format of OOP
JTExpert
JTExpert Results
Conclusions
Test-Data Format of OOP
Test Target
Method Under Test
Argument1
...
Argumentn
smallPublic ?
© Inaccessible §
3 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
Automatic Test-Data
Generation
Test-Data Format of OOP
JTExpert
JTExpert Results
Conclusions
Test-Data Format of OOP
Test Target
Method Under Test
Argument1
...
Argumentn
smallPublic ?
© Inaccessible §
The state of the classe under test
Data Member1
Data Member2
...
Data Memberm
3 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
Automatic Test-Data
Generation
Test-Data Format of OOP
JTExpert
JTExpert Results
Conclusions
Test-Data Format of OOP
Test Target
Method Under Test
Argument1
...
Argumentn
smallPublic ?
© Inaccessible §
The state of the classe under test
Data Member1
Data Member2
...
Data Memberm
Inaccessible §
3 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
Automatic Test-Data
Generation
Test-Data Format of OOP
JTExpert
JTExpert Results
Conclusions
Test-Data Format of OOP
Test Target
Method Under Test
Argument1
...
Argumentn
smallPublic ?
© Inaccessible §
The state of the classe under test
Data Member1
Data Member2
...
Data Memberm
Inaccessible §
Public methods to reach inaccessible parts.
3 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
Automatic Test-Data
Generation
Test-Data Format of OOP
JTExpert
JTExpert Results
Conclusions
Test-Data Format of OOP
Challenge
1. Finding an instance of the class under test;
2. Finding a sequence of method calls;
3. Finding an instance of each required argument.
The number of sequence of method calls may be
unlimited;
The number of different instances of a given class may
be large.
4 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
Automatic Test-Data
Generation
Test-Data Format of OOP
JTExpert
JTExpert Results
Conclusions
Test-Data Format of OOP
Challenge
1. Finding an instance of the class under test;
2. Finding a sequence of method calls;
3. Finding an instance of each required argument.
The number of sequence of method calls may be
unlimited;
The number of different instances of a given class may
be large.
A combinatorial search space
4 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
JTExpert
The key idea behind
JTExpert
Example: How does
JTExpert generate a test
candidate?
JTExpert Results
Conclusions
JTExpert
Example: How does JTExpert generate a test candidate?
Source Code
1 public class FooClass{
2 private int y;
3 private float z;
4 private float w;
5 private String s2;
6 public void setY(int y1) {y=y1};
7 public void setZ(float z1) {z=z1};
8 public void setS2(String s) {s2=s};
9 public int fooCaller(int a, String str){
10 ...
11 foo(a,str);
12 ...
13 }
14 private int foo(int x, String s1){
15 if(y==z)
16 if(y>0)
17 if(x==10)
18 return s1.length()+s2.length(); ←
//Test Target
19 return 0;
20 }
21 }
5 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
JTExpert
The key idea behind
JTExpert
Example: How does
JTExpert generate a test
candidate?
JTExpert Results
Conclusions
JTExpert
Example: How does JTExpert generate a test candidate?
Source Code
1 public class FooClass{
2 private int y;
3 private float z;
4 private float w;
5 private String s2;
6 public void setY(int y1) {y=y1};
7 public void setZ(float z1) {z=z1};
8 public void setS2(String s) {s2=s};
9 public int fooCaller(int a, String str){
10 ...
11 foo(a,str);
12 ...
13 }
14 private int foo(int x, String s1){
15 if(y==z)
16 if(y>0)
17 if(x==10)
18 return s1.length()+s2.length(); ←
//Test Target
19 return 0;
20 }
21 }
Static Analyses
MIn
5 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
JTExpert
The key idea behind
JTExpert
Example: How does
JTExpert generate a test
candidate?
JTExpert Results
Conclusions
JTExpert
Example: How does JTExpert generate a test candidate?
Source Code
1 public class FooClass{
2 private int y;
3 private float z;
4 private float w;
5 private String s2;
6 public void setY(int y1) {y=y1};
7 public void setZ(float z1) {z=z1};
8 public void setS2(String s) {s2=s};
9 public int fooCaller(int a, String str){
10 ...
11 foo(a,str);
12 ...
13 }
14 private int foo(int x, String s1){
15 if(y==z)
16 if(y>0)
17 if(x==10)
18 return s1.length()+s2.length(); ←
//Test Target
19 return 0;
20 }
21 }
Static Analyses
MIn FooClass()
5 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
JTExpert
The key idea behind
JTExpert
Example: How does
JTExpert generate a test
candidate?
JTExpert Results
Conclusions
JTExpert
Example: How does JTExpert generate a test candidate?
Source Code
1 public class FooClass{
2 private int y;
3 private float z;
4 private float w;
5 private String s2;
6 public void setY(int y1) {y=y1};
7 public void setZ(float z1) {z=z1};
8 public void setS2(String s) {s2=s};
9 public int fooCaller(int a, String str){
10 ...
11 foo(a,str);
12 ...
13 }
14 private int foo(int x, String s1){
15 if(y==z)
16 if(y>0)
17 if(x==10)
18 return s1.length()+s2.length(); ←
//Test Target
19 return 0;
20 }
21 }
Static Analyses
MIn FooClass()
y
5 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
JTExpert
The key idea behind
JTExpert
Example: How does
JTExpert generate a test
candidate?
JTExpert Results
Conclusions
JTExpert
Example: How does JTExpert generate a test candidate?
Source Code
1 public class FooClass{
2 private int y;
3 private float z;
4 private float w;
5 private String s2;
6 public void setY(int y1) {y=y1};
7 public void setZ(float z1) {z=z1};
8 public void setS2(String s) {s2=s};
9 public int fooCaller(int a, String str){
10 ...
11 foo(a,str);
12 ...
13 }
14 private int foo(int x, String s1){
15 if(y==z)
16 if(y>0)
17 if(x==10)
18 return s1.length()+s2.length(); ←
//Test Target
19 return 0;
20 }
21 }
Static Analyses
MIn FooClass()
y setY
5 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
JTExpert
The key idea behind
JTExpert
Example: How does
JTExpert generate a test
candidate?
JTExpert Results
Conclusions
JTExpert
Example: How does JTExpert generate a test candidate?
Source Code
1 public class FooClass{
2 private int y;
3 private float z;
4 private float w;
5 private String s2;
6 public void setY(int y1) {y=y1};
7 public void setZ(float z1) {z=z1};
8 public void setS2(String s) {s2=s};
9 public int fooCaller(int a, String str){
10 ...
11 foo(a,str);
12 ...
13 }
14 private int foo(int x, String s1){
15 if(y==z)
16 if(y>0)
17 if(x==10)
18 return s1.length()+s2.length(); ←
//Test Target
19 return 0;
20 }
21 }
Static Analyses
MIn FooClass()
y setY
z
5 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
JTExpert
The key idea behind
JTExpert
Example: How does
JTExpert generate a test
candidate?
JTExpert Results
Conclusions
JTExpert
Example: How does JTExpert generate a test candidate?
Source Code
1 public class FooClass{
2 private int y;
3 private float z;
4 private float w;
5 private String s2;
6 public void setY(int y1) {y=y1};
7 public void setZ(float z1) {z=z1};
8 public void setS2(String s) {s2=s};
9 public int fooCaller(int a, String str){
10 ...
11 foo(a,str);
12 ...
13 }
14 private int foo(int x, String s1){
15 if(y==z)
16 if(y>0)
17 if(x==10)
18 return s1.length()+s2.length(); ←
//Test Target
19 return 0;
20 }
21 }
Static Analyses
MIn FooClass()
y setY
z setZ
5 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
JTExpert
The key idea behind
JTExpert
Example: How does
JTExpert generate a test
candidate?
JTExpert Results
Conclusions
JTExpert
Example: How does JTExpert generate a test candidate?
Source Code
1 public class FooClass{
2 private int y;
3 private float z;
4 private float w;
5 private String s2;
6 public void setY(int y1) {y=y1};
7 public void setZ(float z1) {z=z1};
8 public void setS2(String s) {s2=s};
9 public int fooCaller(int a, String str){
10 ...
11 foo(a,str);
12 ...
13 }
14 private int foo(int x, String s1){
15 if(y==z)
16 if(y>0)
17 if(x==10)
18 return s1.length()+s2.length(); ←
//Test Target
19 return 0;
20 }
21 }
Static Analyses
MIn FooClass()
y setY
z setZ
s2
5 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
JTExpert
The key idea behind
JTExpert
Example: How does
JTExpert generate a test
candidate?
JTExpert Results
Conclusions
JTExpert
Example: How does JTExpert generate a test candidate?
Source Code
1 public class FooClass{
2 private int y;
3 private float z;
4 private float w;
5 private String s2;
6 public void setY(int y1) {y=y1};
7 public void setZ(float z1) {z=z1};
8 public void setS2(String s) {s2=s};
9 public int fooCaller(int a, String str){
10 ...
11 foo(a,str);
12 ...
13 }
14 private int foo(int x, String s1){
15 if(y==z)
16 if(y>0)
17 if(x==10)
18 return s1.length()+s2.length(); ←
//Test Target
19 return 0;
20 }
21 }
Static Analyses
MIn FooClass()
y setY
z setZ
s2 setS2
5 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
JTExpert
The key idea behind
JTExpert
Example: How does
JTExpert generate a test
candidate?
JTExpert Results
Conclusions
JTExpert
Example: How does JTExpert generate a test candidate?
Source Code
1 public class FooClass{
2 private int y;
3 private float z;
4 private float w;
5 private String s2;
6 public void setY(int y1) {y=y1};
7 public void setZ(float z1) {z=z1};
8 public void setS2(String s) {s2=s};
9 public int fooCaller(int a, String str){
10 ...
11 foo(a,str);
12 ...
13 }
14 private int foo(int x, String s1){
15 if(y==z)
16 if(y>0)
17 if(x==10)
18 return s1.length()+s2.length(); ←
//Test Target
19 return 0;
20 }
21 }
Static Analyses
MIn FooClass()
y setY
z setZ
s2 setS2
foo
5 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
JTExpert
The key idea behind
JTExpert
Example: How does
JTExpert generate a test
candidate?
JTExpert Results
Conclusions
JTExpert
Example: How does JTExpert generate a test candidate?
Source Code
1 public class FooClass{
2 private int y;
3 private float z;
4 private float w;
5 private String s2;
6 public void setY(int y1) {y=y1};
7 public void setZ(float z1) {z=z1};
8 public void setS2(String s) {s2=s};
9 public int fooCaller(int a, String str){
10 ...
11 foo(a,str);
12 ...
13 }
14 private int foo(int x, String s1){
15 if(y==z)
16 if(y>0)
17 if(x==10)
18 return s1.length()+s2.length(); ←
//Test Target
19 return 0;
20 }
21 }
Static Analyses
MIn FooClass()
y setY
z setZ
s2 setS2
foo fooCaller
5 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
JTExpert
JTExpert Results
Overall
Analysis
Conclusions
JTExpert at the Fifth Unit Testing Tool
Competition: Results
6 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
JTExpert
JTExpert Results
Overall
Analysis
Conclusions
JTExpert Results
Overall
Average Coverage
34% line coverage;
28% branch coverage;
29% mutation coverage;
849 points and was ranked second.
Reasons
Generally, the results are in line with our expectations
except for classes where JTeXpert gets score 0:
0 point for 28 classes out of 69;
0 point in 40% of the competition score.
7 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
JTExpert
JTExpert Results
Overall
Analysis
Conclusions
JTExpert Results
Analysis
Problem: Compilation Error
15 uncompilable test-case files;
-2 points as penalty for each uncompilable file.
Root: Assertions generation
Constant string with a length greater that 4000;
8 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
JTExpert
JTExpert Results
Overall
Analysis
Conclusions
JTExpert Results
Analysis
Problem: Missed test-cases file
JTeXpert did not generate any test-cases file for 415
out of 1450 runs, which represents 27% of the
competition runs.
Root: Undetermined
We randomly selected 10 of the CUTs affected and ran
JTeXpert on them on the competition platform;
JTeXpert performed well on all the selected CUTs and
we have not observed in any run that JTeXpert failed to
generate test suite;
There are two other possible components may be
behind this problem:
1. The communication protocol;
2. The contest platform itself;
9 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
JTExpert
JTExpert Results
Conclusions
Conclusions
JTeXpert performed well compared to its results in the
two previous SBST Contests 2016 and 2015;
The SBST Contest 2017 showed us new bugs in
JTeXpert that should be tackled before the next SBST
Contest.
The SBST Contest 2017 provides a unique opportunity
to compare JTExpert to other tools and to identify its
limitations.
10 / 13
JTExpert at the
Fifth Unit Testing
Tool Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Rub´en Saborido
Infantes
Introduction
JTExpert
JTExpert Results
Conclusions
Thank you, Questions?
Thank you
Questions?
11 / 13

More Related Content

Similar to Sbst17 tooldemo.ppt

Sbst16 tooldemo.ppt
Sbst16 tooldemo.pptSbst16 tooldemo.ppt
Sbst16 tooldemo.pptPtidej Team
 
Fuzzing for CPS Mutation Testing
Fuzzing for CPS Mutation TestingFuzzing for CPS Mutation Testing
Fuzzing for CPS Mutation TestingLionel Briand
 
Junit Recipes - Intro
Junit Recipes - IntroJunit Recipes - Intro
Junit Recipes - IntroWill Shen
 
Examples Implementing Black-Box Discrete Optimization Benchmarking Survey for...
Examples Implementing Black-Box Discrete Optimization Benchmarking Survey for...Examples Implementing Black-Box Discrete Optimization Benchmarking Survey for...
Examples Implementing Black-Box Discrete Optimization Benchmarking Survey for...University of Maribor
 
STAMP Descartes Presentation
STAMP Descartes PresentationSTAMP Descartes Presentation
STAMP Descartes PresentationSTAMP Project
 
Slides for a talk on search-based testing for Event-B models
Slides for a talk on search-based testing for Event-B modelsSlides for a talk on search-based testing for Event-B models
Slides for a talk on search-based testing for Event-B modelsAlin Stefanescu
 
2016 10-04: tdd++: tdd made easier
2016 10-04: tdd++: tdd made easier2016 10-04: tdd++: tdd made easier
2016 10-04: tdd++: tdd made easierChristian Hujer
 
Introduction to Testing Frameworks
Introduction to Testing Frameworks Introduction to Testing Frameworks
Introduction to Testing Frameworks Hemant Shori
 
Fu agile#2 unit_testing
Fu agile#2 unit_testingFu agile#2 unit_testing
Fu agile#2 unit_testingNguyen Anh
 
Rohan's Masters presentation
Rohan's Masters presentationRohan's Masters presentation
Rohan's Masters presentationrohan_anil
 
[TOxAIA新竹分校] 工業4.0潛力新應用! 多模式對話機器人
[TOxAIA新竹分校] 工業4.0潛力新應用! 多模式對話機器人[TOxAIA新竹分校] 工業4.0潛力新應用! 多模式對話機器人
[TOxAIA新竹分校] 工業4.0潛力新應用! 多模式對話機器人台灣資料科學年會
 
Developing R Graphical User Interfaces
Developing R Graphical User InterfacesDeveloping R Graphical User Interfaces
Developing R Graphical User InterfacesSetia Pramana
 
CMU Trecvid med13 nist
CMU Trecvid med13 nistCMU Trecvid med13 nist
CMU Trecvid med13 nistLu Jiang
 

Similar to Sbst17 tooldemo.ppt (20)

Sbst16 tooldemo.ppt
Sbst16 tooldemo.pptSbst16 tooldemo.ppt
Sbst16 tooldemo.ppt
 
Ssbse12a.ppt
Ssbse12a.pptSsbse12a.ppt
Ssbse12a.ppt
 
Fuzzing for CPS Mutation Testing
Fuzzing for CPS Mutation TestingFuzzing for CPS Mutation Testing
Fuzzing for CPS Mutation Testing
 
Junit Recipes - Intro
Junit Recipes - IntroJunit Recipes - Intro
Junit Recipes - Intro
 
Ssbse12a.ppt
Ssbse12a.pptSsbse12a.ppt
Ssbse12a.ppt
 
Examples Implementing Black-Box Discrete Optimization Benchmarking Survey for...
Examples Implementing Black-Box Discrete Optimization Benchmarking Survey for...Examples Implementing Black-Box Discrete Optimization Benchmarking Survey for...
Examples Implementing Black-Box Discrete Optimization Benchmarking Survey for...
 
Cpaior13.ppt
Cpaior13.pptCpaior13.ppt
Cpaior13.ppt
 
STAMP Descartes Presentation
STAMP Descartes PresentationSTAMP Descartes Presentation
STAMP Descartes Presentation
 
Slides for a talk on search-based testing for Event-B models
Slides for a talk on search-based testing for Event-B modelsSlides for a talk on search-based testing for Event-B models
Slides for a talk on search-based testing for Event-B models
 
VST2022.pdf
VST2022.pdfVST2022.pdf
VST2022.pdf
 
2016 10-04: tdd++: tdd made easier
2016 10-04: tdd++: tdd made easier2016 10-04: tdd++: tdd made easier
2016 10-04: tdd++: tdd made easier
 
Cpaior13.ppt
Cpaior13.pptCpaior13.ppt
Cpaior13.ppt
 
Stamp breizhcamp 2019
Stamp breizhcamp 2019Stamp breizhcamp 2019
Stamp breizhcamp 2019
 
Introduction to Testing Frameworks
Introduction to Testing Frameworks Introduction to Testing Frameworks
Introduction to Testing Frameworks
 
Fu agile#2 unit_testing
Fu agile#2 unit_testingFu agile#2 unit_testing
Fu agile#2 unit_testing
 
Assorted TDD tips
Assorted TDD tipsAssorted TDD tips
Assorted TDD tips
 
Rohan's Masters presentation
Rohan's Masters presentationRohan's Masters presentation
Rohan's Masters presentation
 
[TOxAIA新竹分校] 工業4.0潛力新應用! 多模式對話機器人
[TOxAIA新竹分校] 工業4.0潛力新應用! 多模式對話機器人[TOxAIA新竹分校] 工業4.0潛力新應用! 多模式對話機器人
[TOxAIA新竹分校] 工業4.0潛力新應用! 多模式對話機器人
 
Developing R Graphical User Interfaces
Developing R Graphical User InterfacesDeveloping R Graphical User Interfaces
Developing R Graphical User Interfaces
 
CMU Trecvid med13 nist
CMU Trecvid med13 nistCMU Trecvid med13 nist
CMU Trecvid med13 nist
 

More from Yann-Gaël Guéhéneuc

Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Yann-Gaël Guéhéneuc
 
Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Yann-Gaël Guéhéneuc
 
Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Yann-Gaël Guéhéneuc
 
Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Yann-Gaël Guéhéneuc
 
Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Yann-Gaël Guéhéneuc
 
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...Yann-Gaël Guéhéneuc
 
An Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesAn Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesYann-Gaël Guéhéneuc
 
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Yann-Gaël Guéhéneuc
 
On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1Yann-Gaël Guéhéneuc
 
On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6Yann-Gaël Guéhéneuc
 

More from Yann-Gaël Guéhéneuc (20)

Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5
 
Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1
 
Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22
 
Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3
 
Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9
 
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
 
An Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesAn Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its Consequences
 
Are CPUs VMs Like Any Others? v1.0
Are CPUs VMs Like Any Others? v1.0Are CPUs VMs Like Any Others? v1.0
Are CPUs VMs Like Any Others? v1.0
 
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
 
Well-known Computer Scientists v1.0.2
Well-known Computer Scientists v1.0.2Well-known Computer Scientists v1.0.2
Well-known Computer Scientists v1.0.2
 
On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1
 
On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6
 
ICSOC'21
ICSOC'21ICSOC'21
ICSOC'21
 
Vissoft21.ppt
Vissoft21.pptVissoft21.ppt
Vissoft21.ppt
 
Service computation20.ppt
Service computation20.pptService computation20.ppt
Service computation20.ppt
 
Serp4 iot20.ppt
Serp4 iot20.pptSerp4 iot20.ppt
Serp4 iot20.ppt
 
Msr20.ppt
Msr20.pptMsr20.ppt
Msr20.ppt
 
Iwesep19.ppt
Iwesep19.pptIwesep19.ppt
Iwesep19.ppt
 
Icsoc20.ppt
Icsoc20.pptIcsoc20.ppt
Icsoc20.ppt
 
Icsoc18.ppt
Icsoc18.pptIcsoc18.ppt
Icsoc18.ppt
 

Recently uploaded

why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?Watsoo Telematics
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
buds n tech IT solutions
buds n  tech IT                solutionsbuds n  tech IT                solutions
buds n tech IT solutionsmonugehlot87
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 

Recently uploaded (20)

why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
buds n tech IT solutions
buds n  tech IT                solutionsbuds n  tech IT                solutions
buds n tech IT solutions
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 

Sbst17 tooldemo.ppt

  • 1. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction JTExpert JTExpert Results Conclusions JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Department of Computer and Software Engineering ´Ecole Polytechnique de Montr´eal, Qu´ebec, Canada SBST, May 22th, 2017, Buenos Aires, Argentina Pattern Trace Identification, Detection, and Enhancement in Java SOftware Cost-effective Change and Evolution Research Lab
  • 2. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction Automatic Test-Data Generation Test-Data Format of OOP JTExpert JTExpert Results Conclusions Automatic Test-Data Generation Goal Developing automated techniques to reveal hidden errors. Solutions Static Approaches: Constraint Based and Model checking; Complete; suffers from scalability issues Dynamic Approaches: Random; scalable; widely used; Incomplete; depend on many parameters. JTExpert Random with Static Analyses for automatic test-data generation; Generates test-data suites that reach high code coverage; Freely available at: https://sites.google.com/site/saktiabdel/JTExpert. 2 / 13
  • 3. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction Automatic Test-Data Generation Test-Data Format of OOP JTExpert JTExpert Results Conclusions Test-Data Format of OOP Test Target Method Under Test Argument1 ... Argumentn 3 / 13
  • 4. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction Automatic Test-Data Generation Test-Data Format of OOP JTExpert JTExpert Results Conclusions Test-Data Format of OOP Test Target Method Under Test Argument1 ... Argumentn smallPublic ? 3 / 13
  • 5. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction Automatic Test-Data Generation Test-Data Format of OOP JTExpert JTExpert Results Conclusions Test-Data Format of OOP Test Target Method Under Test Argument1 ... Argumentn smallPublic ? © 3 / 13
  • 6. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction Automatic Test-Data Generation Test-Data Format of OOP JTExpert JTExpert Results Conclusions Test-Data Format of OOP Test Target Method Under Test Argument1 ... Argumentn smallPublic ? © Inaccessible § 3 / 13
  • 7. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction Automatic Test-Data Generation Test-Data Format of OOP JTExpert JTExpert Results Conclusions Test-Data Format of OOP Test Target Method Under Test Argument1 ... Argumentn smallPublic ? © Inaccessible § The state of the classe under test Data Member1 Data Member2 ... Data Memberm 3 / 13
  • 8. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction Automatic Test-Data Generation Test-Data Format of OOP JTExpert JTExpert Results Conclusions Test-Data Format of OOP Test Target Method Under Test Argument1 ... Argumentn smallPublic ? © Inaccessible § The state of the classe under test Data Member1 Data Member2 ... Data Memberm Inaccessible § 3 / 13
  • 9. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction Automatic Test-Data Generation Test-Data Format of OOP JTExpert JTExpert Results Conclusions Test-Data Format of OOP Test Target Method Under Test Argument1 ... Argumentn smallPublic ? © Inaccessible § The state of the classe under test Data Member1 Data Member2 ... Data Memberm Inaccessible § Public methods to reach inaccessible parts. 3 / 13
  • 10. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction Automatic Test-Data Generation Test-Data Format of OOP JTExpert JTExpert Results Conclusions Test-Data Format of OOP Challenge 1. Finding an instance of the class under test; 2. Finding a sequence of method calls; 3. Finding an instance of each required argument. The number of sequence of method calls may be unlimited; The number of different instances of a given class may be large. 4 / 13
  • 11. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction Automatic Test-Data Generation Test-Data Format of OOP JTExpert JTExpert Results Conclusions Test-Data Format of OOP Challenge 1. Finding an instance of the class under test; 2. Finding a sequence of method calls; 3. Finding an instance of each required argument. The number of sequence of method calls may be unlimited; The number of different instances of a given class may be large. A combinatorial search space 4 / 13
  • 12. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction JTExpert The key idea behind JTExpert Example: How does JTExpert generate a test candidate? JTExpert Results Conclusions JTExpert Example: How does JTExpert generate a test candidate? Source Code 1 public class FooClass{ 2 private int y; 3 private float z; 4 private float w; 5 private String s2; 6 public void setY(int y1) {y=y1}; 7 public void setZ(float z1) {z=z1}; 8 public void setS2(String s) {s2=s}; 9 public int fooCaller(int a, String str){ 10 ... 11 foo(a,str); 12 ... 13 } 14 private int foo(int x, String s1){ 15 if(y==z) 16 if(y>0) 17 if(x==10) 18 return s1.length()+s2.length(); ← //Test Target 19 return 0; 20 } 21 } 5 / 13
  • 13. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction JTExpert The key idea behind JTExpert Example: How does JTExpert generate a test candidate? JTExpert Results Conclusions JTExpert Example: How does JTExpert generate a test candidate? Source Code 1 public class FooClass{ 2 private int y; 3 private float z; 4 private float w; 5 private String s2; 6 public void setY(int y1) {y=y1}; 7 public void setZ(float z1) {z=z1}; 8 public void setS2(String s) {s2=s}; 9 public int fooCaller(int a, String str){ 10 ... 11 foo(a,str); 12 ... 13 } 14 private int foo(int x, String s1){ 15 if(y==z) 16 if(y>0) 17 if(x==10) 18 return s1.length()+s2.length(); ← //Test Target 19 return 0; 20 } 21 } Static Analyses MIn 5 / 13
  • 14. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction JTExpert The key idea behind JTExpert Example: How does JTExpert generate a test candidate? JTExpert Results Conclusions JTExpert Example: How does JTExpert generate a test candidate? Source Code 1 public class FooClass{ 2 private int y; 3 private float z; 4 private float w; 5 private String s2; 6 public void setY(int y1) {y=y1}; 7 public void setZ(float z1) {z=z1}; 8 public void setS2(String s) {s2=s}; 9 public int fooCaller(int a, String str){ 10 ... 11 foo(a,str); 12 ... 13 } 14 private int foo(int x, String s1){ 15 if(y==z) 16 if(y>0) 17 if(x==10) 18 return s1.length()+s2.length(); ← //Test Target 19 return 0; 20 } 21 } Static Analyses MIn FooClass() 5 / 13
  • 15. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction JTExpert The key idea behind JTExpert Example: How does JTExpert generate a test candidate? JTExpert Results Conclusions JTExpert Example: How does JTExpert generate a test candidate? Source Code 1 public class FooClass{ 2 private int y; 3 private float z; 4 private float w; 5 private String s2; 6 public void setY(int y1) {y=y1}; 7 public void setZ(float z1) {z=z1}; 8 public void setS2(String s) {s2=s}; 9 public int fooCaller(int a, String str){ 10 ... 11 foo(a,str); 12 ... 13 } 14 private int foo(int x, String s1){ 15 if(y==z) 16 if(y>0) 17 if(x==10) 18 return s1.length()+s2.length(); ← //Test Target 19 return 0; 20 } 21 } Static Analyses MIn FooClass() y 5 / 13
  • 16. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction JTExpert The key idea behind JTExpert Example: How does JTExpert generate a test candidate? JTExpert Results Conclusions JTExpert Example: How does JTExpert generate a test candidate? Source Code 1 public class FooClass{ 2 private int y; 3 private float z; 4 private float w; 5 private String s2; 6 public void setY(int y1) {y=y1}; 7 public void setZ(float z1) {z=z1}; 8 public void setS2(String s) {s2=s}; 9 public int fooCaller(int a, String str){ 10 ... 11 foo(a,str); 12 ... 13 } 14 private int foo(int x, String s1){ 15 if(y==z) 16 if(y>0) 17 if(x==10) 18 return s1.length()+s2.length(); ← //Test Target 19 return 0; 20 } 21 } Static Analyses MIn FooClass() y setY 5 / 13
  • 17. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction JTExpert The key idea behind JTExpert Example: How does JTExpert generate a test candidate? JTExpert Results Conclusions JTExpert Example: How does JTExpert generate a test candidate? Source Code 1 public class FooClass{ 2 private int y; 3 private float z; 4 private float w; 5 private String s2; 6 public void setY(int y1) {y=y1}; 7 public void setZ(float z1) {z=z1}; 8 public void setS2(String s) {s2=s}; 9 public int fooCaller(int a, String str){ 10 ... 11 foo(a,str); 12 ... 13 } 14 private int foo(int x, String s1){ 15 if(y==z) 16 if(y>0) 17 if(x==10) 18 return s1.length()+s2.length(); ← //Test Target 19 return 0; 20 } 21 } Static Analyses MIn FooClass() y setY z 5 / 13
  • 18. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction JTExpert The key idea behind JTExpert Example: How does JTExpert generate a test candidate? JTExpert Results Conclusions JTExpert Example: How does JTExpert generate a test candidate? Source Code 1 public class FooClass{ 2 private int y; 3 private float z; 4 private float w; 5 private String s2; 6 public void setY(int y1) {y=y1}; 7 public void setZ(float z1) {z=z1}; 8 public void setS2(String s) {s2=s}; 9 public int fooCaller(int a, String str){ 10 ... 11 foo(a,str); 12 ... 13 } 14 private int foo(int x, String s1){ 15 if(y==z) 16 if(y>0) 17 if(x==10) 18 return s1.length()+s2.length(); ← //Test Target 19 return 0; 20 } 21 } Static Analyses MIn FooClass() y setY z setZ 5 / 13
  • 19. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction JTExpert The key idea behind JTExpert Example: How does JTExpert generate a test candidate? JTExpert Results Conclusions JTExpert Example: How does JTExpert generate a test candidate? Source Code 1 public class FooClass{ 2 private int y; 3 private float z; 4 private float w; 5 private String s2; 6 public void setY(int y1) {y=y1}; 7 public void setZ(float z1) {z=z1}; 8 public void setS2(String s) {s2=s}; 9 public int fooCaller(int a, String str){ 10 ... 11 foo(a,str); 12 ... 13 } 14 private int foo(int x, String s1){ 15 if(y==z) 16 if(y>0) 17 if(x==10) 18 return s1.length()+s2.length(); ← //Test Target 19 return 0; 20 } 21 } Static Analyses MIn FooClass() y setY z setZ s2 5 / 13
  • 20. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction JTExpert The key idea behind JTExpert Example: How does JTExpert generate a test candidate? JTExpert Results Conclusions JTExpert Example: How does JTExpert generate a test candidate? Source Code 1 public class FooClass{ 2 private int y; 3 private float z; 4 private float w; 5 private String s2; 6 public void setY(int y1) {y=y1}; 7 public void setZ(float z1) {z=z1}; 8 public void setS2(String s) {s2=s}; 9 public int fooCaller(int a, String str){ 10 ... 11 foo(a,str); 12 ... 13 } 14 private int foo(int x, String s1){ 15 if(y==z) 16 if(y>0) 17 if(x==10) 18 return s1.length()+s2.length(); ← //Test Target 19 return 0; 20 } 21 } Static Analyses MIn FooClass() y setY z setZ s2 setS2 5 / 13
  • 21. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction JTExpert The key idea behind JTExpert Example: How does JTExpert generate a test candidate? JTExpert Results Conclusions JTExpert Example: How does JTExpert generate a test candidate? Source Code 1 public class FooClass{ 2 private int y; 3 private float z; 4 private float w; 5 private String s2; 6 public void setY(int y1) {y=y1}; 7 public void setZ(float z1) {z=z1}; 8 public void setS2(String s) {s2=s}; 9 public int fooCaller(int a, String str){ 10 ... 11 foo(a,str); 12 ... 13 } 14 private int foo(int x, String s1){ 15 if(y==z) 16 if(y>0) 17 if(x==10) 18 return s1.length()+s2.length(); ← //Test Target 19 return 0; 20 } 21 } Static Analyses MIn FooClass() y setY z setZ s2 setS2 foo 5 / 13
  • 22. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction JTExpert The key idea behind JTExpert Example: How does JTExpert generate a test candidate? JTExpert Results Conclusions JTExpert Example: How does JTExpert generate a test candidate? Source Code 1 public class FooClass{ 2 private int y; 3 private float z; 4 private float w; 5 private String s2; 6 public void setY(int y1) {y=y1}; 7 public void setZ(float z1) {z=z1}; 8 public void setS2(String s) {s2=s}; 9 public int fooCaller(int a, String str){ 10 ... 11 foo(a,str); 12 ... 13 } 14 private int foo(int x, String s1){ 15 if(y==z) 16 if(y>0) 17 if(x==10) 18 return s1.length()+s2.length(); ← //Test Target 19 return 0; 20 } 21 } Static Analyses MIn FooClass() y setY z setZ s2 setS2 foo fooCaller 5 / 13
  • 23. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction JTExpert JTExpert Results Overall Analysis Conclusions JTExpert at the Fifth Unit Testing Tool Competition: Results 6 / 13
  • 24. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction JTExpert JTExpert Results Overall Analysis Conclusions JTExpert Results Overall Average Coverage 34% line coverage; 28% branch coverage; 29% mutation coverage; 849 points and was ranked second. Reasons Generally, the results are in line with our expectations except for classes where JTeXpert gets score 0: 0 point for 28 classes out of 69; 0 point in 40% of the competition score. 7 / 13
  • 25. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction JTExpert JTExpert Results Overall Analysis Conclusions JTExpert Results Analysis Problem: Compilation Error 15 uncompilable test-case files; -2 points as penalty for each uncompilable file. Root: Assertions generation Constant string with a length greater that 4000; 8 / 13
  • 26. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction JTExpert JTExpert Results Overall Analysis Conclusions JTExpert Results Analysis Problem: Missed test-cases file JTeXpert did not generate any test-cases file for 415 out of 1450 runs, which represents 27% of the competition runs. Root: Undetermined We randomly selected 10 of the CUTs affected and ran JTeXpert on them on the competition platform; JTeXpert performed well on all the selected CUTs and we have not observed in any run that JTeXpert failed to generate test suite; There are two other possible components may be behind this problem: 1. The communication protocol; 2. The contest platform itself; 9 / 13
  • 27. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction JTExpert JTExpert Results Conclusions Conclusions JTeXpert performed well compared to its results in the two previous SBST Contests 2016 and 2015; The SBST Contest 2017 showed us new bugs in JTeXpert that should be tackled before the next SBST Contest. The SBST Contest 2017 provides a unique opportunity to compare JTExpert to other tools and to identify its limitations. 10 / 13
  • 28. JTExpert at the Fifth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Rub´en Saborido Infantes Introduction JTExpert JTExpert Results Conclusions Thank you, Questions? Thank you Questions? 11 / 13