SlideShare a Scribd company logo
1 of 34
Download to read offline
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
Introduction
JTExpert
JTExpert Results
Conclusions
JTExpert at the Fourth Unit Testing Tool
Competition
Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc
Presented by: Mohammed Sayagh
Department of Computer and Software Engineering
´Ecole Polytechnique de Montr´eal, Qu´ebec, Canada
SBST, May 16th, 2016, Austin, TX, USA
Pattern Trace Identification, Detection, and Enhancement in Java
SOftware Cost-effective Change and Evolution Research Lab
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
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 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
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 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
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 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
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 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
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 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
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 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
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 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
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 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
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 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
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 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
Introduction
JTExpert
The key idea behind
JTExpert
Example: How does
JTExpert generate a test
candidate?
JTExpert Results
Conclusions
JTExpert
The key idea behind JTExpert
Exploring relevant sequences
Methods that may modify a data member or can reach
the test target;
A static analysis can determine the relevant methods.
5 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
Introduction
JTExpert
The key idea behind
JTExpert
Example: How does
JTExpert generate a test
candidate?
JTExpert Results
Conclusions
JTExpert
The key idea behind JTExpert
. Requirements To analyze To extract
(I)
How to instantiate the class
under test and each required
argument ?
Constructors;
Factory methods;
Data Members;
Derived Classes
(SubClasses).
Set of means-of-instantiation.
(II)
A sequence of method calls to
make the class under test in a
relevant state.
Data Member1
Data Member2
.
.
.
Data Memberm
State Modifier1
State Modifier2
.
.
.
State Modifierm
(III) A method that can reach the
test target. Method Under Test Public Methods caller
6 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
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 }
7 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
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
7 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
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()
7 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
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
7 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
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
7 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
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
7 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
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
7 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
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
7 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
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
7 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
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
7 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
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
7 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
Introduction
JTExpert
JTExpert Results
Overall
Analysis
Conclusions
JTExpert at the Third Unit Testing Tool
Competition: Results
8 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
Introduction
JTExpert
JTExpert Results
Overall
Analysis
Conclusions
JTExpert Results
Overall
Average Coverage
56% line coverage;
49% branch coverage;
36% mutation coverage;
931 points and was ranked third.
Reasons
Uncompilable test-case suites (-2.15%);
Bad Time Management (-2% and -123 points as a
penalty);
Mutation Coverage Measure (Defect4j, -9%).
9 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
Introduction
JTExpert
JTExpert Results
Overall
Analysis
Conclusions
JTExpert Results
Overall
Average Coverage
56% line coverage;
49% branch coverage;
36% mutation coverage;
931 points and was ranked third.
Reasons
Uncompilable test-case suites (-2.15%);
Bad Time Management (-2% and -123 points as a
penalty);
Mutation Coverage Measure (Defect4j, -9%).
If we fixed these issues before the competition, then the
score would be 1196;
9 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
Introduction
JTExpert
JTExpert Results
Overall
Analysis
Conclusions
JTExpert Results
Analysis
Coverage versus Score
Metrics JTExpert Evosuite T3 Randoop
Line
Coverage 56.34 % 60.79 % 48.74 % 47.92 %
Score 166.43 181.54 128.74 129.85
Branch
Coverage 49.09 % 48.51 % 41.98 % 38.49 %
Score 284.31 309.37 224.81 201.65
Mutant
Coverage 35.51 % 33.50 % 37.56 % 25.99 %
Score 334.08 360.86 319.94 248.92
10 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
Introduction
JTExpert
JTExpert Results
Overall
Analysis
Conclusions
JTExpert Results
Analysis
Coverage versus Score
Metrics JTExpert Evosuite T3 Randoop
Line
Coverage 56.34 % 60.79 % 48.74 % 47.92 %
Score 166.43 181.54 128.74 129.85
Branch
Coverage 49.09 % 48.51 % 41.98 % 38.49 %
Score 284.31 309.37 224.81 201.65
Mutant
Coverage 35.51 % 33.50 % 37.56 % 25.99 %
Score 334.08 360.86 319.94 248.92
The score does not reflect the coverage.
10 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
Introduction
JTExpert
JTExpert Results
Overall
Analysis
Conclusions
JTExpert Results
Analysis
The number of test cases
Metrics JTExpert Evosuite T3 Randoop
Test Cases
# 76,407 88,531 194,193 14,013,583
Rank 1 2 3 4
JTExpert is the best in terms of the # of test cases;
With the smallest test-cases suite, JTExpert could
reach the best branch coverage and it is the second in
terms of mutant coverage and line coverage.
If we generated more test cases, then it would be
possible to increase our mutation coverage.
11 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
Introduction
JTExpert
JTExpert Results
Overall
Analysis
Conclusions
JTExpert Results
Analysis
Penalties
Metrics JTExpert Evosuite T3 Randoop
Uncompilable
# 37 13 0 5728
Rank 3 2 1 4
Broken test
# 3,220 224 8,010 190,493
Rank 2 1 3 4
Time
# (h) 104.14 96.63 63.54 126.98
Rank 3 2 1 4
Penalty -123.15 -25.79 -17.26 -72.81
The list of metrics above significantly penalized our
final score.
12 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
Introduction
JTExpert
JTExpert Results
Overall
Analysis
Conclusions
JTExpert Results
Analysis
New Metric
Metrics JTExpert Evosuite T3 Randoop
Fail test
# 404 451 482 359
Rank 3 2 1 4
Score 269.33 300.67 321.33 239.33
The new metric, Fail, above decided the final score
because it allows 4 points for each fail detected.
a Bug in Defect4j
Defect4j considers a test case to reveal an actual error if
its execution fails on a buggy version of the CUT
regardless the reason why it failed.
Many empty test-case suites wrongly considered as
revealing actual errors.
A manual analysis of the log files revealed that some
test cases got 4 points for wrong alerts.
13 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
Introduction
JTExpert
JTExpert Results
Conclusions
Conclusions
Different internal and external factors negatively
affected our score and ranking
Some bugs in JTExpert;
The way the score is computed;
The bug detected in Defect4J.
The SBST Contest 2016 provides a unique opportunity
to compare JTExpert to other tools and to identify its
limitations.
14 / 15
JTExpert at the
Fourth Unit
Testing Tool
Competition
Abdelilah Sakti,
Gilles Pesant, and
Yann-Ga¨el
Gu´eh´eneuc
Presented by:
Mohammed
Sayagh
Introduction
JTExpert
JTExpert Results
Conclusions
Thank you, Questions?
Thank you
Questions?
15 / 15

More Related Content

Similar to Sbst16 tooldemo.ppt

Sbst15 tooldemo.ppt
Sbst15 tooldemo.pptSbst15 tooldemo.ppt
Sbst15 tooldemo.pptPtidej Team
 
Sbst17 tooldemo.ppt
Sbst17 tooldemo.pptSbst17 tooldemo.ppt
Sbst17 tooldemo.pptPtidej Team
 
Introduction to Testing Frameworks
Introduction to Testing Frameworks Introduction to Testing Frameworks
Introduction to Testing Frameworks Hemant Shori
 
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
 
Top 20 Junit interview questions for sdet
Top 20 Junit interview questions for sdetTop 20 Junit interview questions for sdet
Top 20 Junit interview questions for sdetDevLabs Alliance
 
Junit Recipes - Intro
Junit Recipes - IntroJunit Recipes - Intro
Junit Recipes - IntroWill Shen
 
Junit Interview Questions-ppt
Junit Interview Questions-pptJunit Interview Questions-ppt
Junit Interview Questions-pptMayank Kumar
 
Junit4&testng presentation
Junit4&testng presentationJunit4&testng presentation
Junit4&testng presentationSanjib Dhar
 
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.Wolfgang Grieskamp
 
Rohan's Masters presentation
Rohan's Masters presentationRohan's Masters presentation
Rohan's Masters presentationrohan_anil
 
TMPA-2017: A Survey on Model-Based Testing Tools for Test Case Generation
TMPA-2017: A Survey on Model-Based Testing Tools for Test Case GenerationTMPA-2017: A Survey on Model-Based Testing Tools for Test Case Generation
TMPA-2017: A Survey on Model-Based Testing Tools for Test Case GenerationIosif Itkin
 
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
 
Mining the LET Performance in Generating Prediction Models for OTDSS
Mining the LET Performance in Generating Prediction Models for OTDSSMining the LET Performance in Generating Prediction Models for OTDSS
Mining the LET Performance in Generating Prediction Models for OTDSSIvy Tarun
 
Efficient Bayesian Inference for Online Matrix Factorization in Bandit Settings
Efficient Bayesian Inference for Online Matrix Factorization in Bandit SettingsEfficient Bayesian Inference for Online Matrix Factorization in Bandit Settings
Efficient Bayesian Inference for Online Matrix Factorization in Bandit SettingsVijay Pal Jat
 
31b - JUnit and Mockito.pdf
31b - JUnit and Mockito.pdf31b - JUnit and Mockito.pdf
31b - JUnit and Mockito.pdfgauravavam
 
White-box Testing: When Quality Really Matters
White-box Testing: When Quality Really MattersWhite-box Testing: When Quality Really Matters
White-box Testing: When Quality Really MattersTechWell
 
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
 

Similar to Sbst16 tooldemo.ppt (20)

Sbst15 tooldemo.ppt
Sbst15 tooldemo.pptSbst15 tooldemo.ppt
Sbst15 tooldemo.ppt
 
Sbst17 tooldemo.ppt
Sbst17 tooldemo.pptSbst17 tooldemo.ppt
Sbst17 tooldemo.ppt
 
Introduction to Testing Frameworks
Introduction to Testing Frameworks Introduction to Testing Frameworks
Introduction to Testing Frameworks
 
Cpaior13.ppt
Cpaior13.pptCpaior13.ppt
Cpaior13.ppt
 
Ssbse12a.ppt
Ssbse12a.pptSsbse12a.ppt
Ssbse12a.ppt
 
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
 
Top 20 Junit interview questions for sdet
Top 20 Junit interview questions for sdetTop 20 Junit interview questions for sdet
Top 20 Junit interview questions for sdet
 
Junit Recipes - Intro
Junit Recipes - IntroJunit Recipes - Intro
Junit Recipes - Intro
 
Junit Interview Questions-ppt
Junit Interview Questions-pptJunit Interview Questions-ppt
Junit Interview Questions-ppt
 
Junit4&testng presentation
Junit4&testng presentationJunit4&testng presentation
Junit4&testng presentation
 
Ssbse12a.ppt
Ssbse12a.pptSsbse12a.ppt
Ssbse12a.ppt
 
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
 
Rohan's Masters presentation
Rohan's Masters presentationRohan's Masters presentation
Rohan's Masters presentation
 
TMPA-2017: A Survey on Model-Based Testing Tools for Test Case Generation
TMPA-2017: A Survey on Model-Based Testing Tools for Test Case GenerationTMPA-2017: A Survey on Model-Based Testing Tools for Test Case Generation
TMPA-2017: A Survey on Model-Based Testing Tools for Test Case Generation
 
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...
 
Mining the LET Performance in Generating Prediction Models for OTDSS
Mining the LET Performance in Generating Prediction Models for OTDSSMining the LET Performance in Generating Prediction Models for OTDSS
Mining the LET Performance in Generating Prediction Models for OTDSS
 
Efficient Bayesian Inference for Online Matrix Factorization in Bandit Settings
Efficient Bayesian Inference for Online Matrix Factorization in Bandit SettingsEfficient Bayesian Inference for Online Matrix Factorization in Bandit Settings
Efficient Bayesian Inference for Online Matrix Factorization in Bandit Settings
 
31b - JUnit and Mockito.pdf
31b - JUnit and Mockito.pdf31b - JUnit and Mockito.pdf
31b - JUnit and Mockito.pdf
 
White-box Testing: When Quality Really Matters
White-box Testing: When Quality Really MattersWhite-box Testing: When Quality Really Matters
White-box Testing: When Quality Really Matters
 
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
 

More from Ptidej Team

From IoT to Software Miniaturisation
From IoT to Software MiniaturisationFrom IoT to Software Miniaturisation
From IoT to Software MiniaturisationPtidej Team
 
Presentation by Lionel Briand
Presentation by Lionel BriandPresentation by Lionel Briand
Presentation by Lionel BriandPtidej Team
 
Manel Abdellatif
Manel AbdellatifManel Abdellatif
Manel AbdellatifPtidej Team
 
Azadeh Kermansaravi
Azadeh KermansaraviAzadeh Kermansaravi
Azadeh KermansaraviPtidej Team
 
CSED - Manel Grichi
CSED - Manel GrichiCSED - Manel Grichi
CSED - Manel GrichiPtidej Team
 
Cristiano Politowski
Cristiano PolitowskiCristiano Politowski
Cristiano PolitowskiPtidej Team
 
Will io t trigger the next software crisis
Will io t trigger the next software crisisWill io t trigger the next software crisis
Will io t trigger the next software crisisPtidej Team
 
Thesis+of+laleh+eshkevari.ppt
Thesis+of+laleh+eshkevari.pptThesis+of+laleh+eshkevari.ppt
Thesis+of+laleh+eshkevari.pptPtidej Team
 
Thesis+of+nesrine+abdelkafi.ppt
Thesis+of+nesrine+abdelkafi.pptThesis+of+nesrine+abdelkafi.ppt
Thesis+of+nesrine+abdelkafi.pptPtidej Team
 

More from Ptidej Team (20)

From IoT to Software Miniaturisation
From IoT to Software MiniaturisationFrom IoT to Software Miniaturisation
From IoT to Software Miniaturisation
 
Presentation
PresentationPresentation
Presentation
 
Presentation
PresentationPresentation
Presentation
 
Presentation
PresentationPresentation
Presentation
 
Presentation by Lionel Briand
Presentation by Lionel BriandPresentation by Lionel Briand
Presentation by Lionel Briand
 
Manel Abdellatif
Manel AbdellatifManel Abdellatif
Manel Abdellatif
 
Azadeh Kermansaravi
Azadeh KermansaraviAzadeh Kermansaravi
Azadeh Kermansaravi
 
Mouna Abidi
Mouna AbidiMouna Abidi
Mouna Abidi
 
CSED - Manel Grichi
CSED - Manel GrichiCSED - Manel Grichi
CSED - Manel Grichi
 
Cristiano Politowski
Cristiano PolitowskiCristiano Politowski
Cristiano Politowski
 
Will io t trigger the next software crisis
Will io t trigger the next software crisisWill io t trigger the next software crisis
Will io t trigger the next software crisis
 
MIPA
MIPAMIPA
MIPA
 
Thesis+of+laleh+eshkevari.ppt
Thesis+of+laleh+eshkevari.pptThesis+of+laleh+eshkevari.ppt
Thesis+of+laleh+eshkevari.ppt
 
Thesis+of+nesrine+abdelkafi.ppt
Thesis+of+nesrine+abdelkafi.pptThesis+of+nesrine+abdelkafi.ppt
Thesis+of+nesrine+abdelkafi.ppt
 
Medicine15.ppt
Medicine15.pptMedicine15.ppt
Medicine15.ppt
 
Qrs17b.ppt
Qrs17b.pptQrs17b.ppt
Qrs17b.ppt
 
Icpc11c.ppt
Icpc11c.pptIcpc11c.ppt
Icpc11c.ppt
 
Icsme16.ppt
Icsme16.pptIcsme16.ppt
Icsme16.ppt
 
Msr17a.ppt
Msr17a.pptMsr17a.ppt
Msr17a.ppt
 
Icsoc15.ppt
Icsoc15.pptIcsoc15.ppt
Icsoc15.ppt
 

Recently uploaded

Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...kalichargn70th171
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 

Recently uploaded (20)

Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 

Sbst16 tooldemo.ppt

  • 1. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh Introduction JTExpert JTExpert Results Conclusions JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh Department of Computer and Software Engineering ´Ecole Polytechnique de Montr´eal, Qu´ebec, Canada SBST, May 16th, 2016, Austin, TX, USA Pattern Trace Identification, Detection, and Enhancement in Java SOftware Cost-effective Change and Evolution Research Lab
  • 2. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh 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 / 15
  • 3. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh 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 / 15
  • 4. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh 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 / 15
  • 5. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh 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 / 15
  • 6. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh 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 / 15
  • 7. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh 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 / 15
  • 8. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh 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 / 15
  • 9. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh 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 / 15
  • 10. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh 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 / 15
  • 11. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh 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 / 15
  • 12. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh Introduction JTExpert The key idea behind JTExpert Example: How does JTExpert generate a test candidate? JTExpert Results Conclusions JTExpert The key idea behind JTExpert Exploring relevant sequences Methods that may modify a data member or can reach the test target; A static analysis can determine the relevant methods. 5 / 15
  • 13. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh Introduction JTExpert The key idea behind JTExpert Example: How does JTExpert generate a test candidate? JTExpert Results Conclusions JTExpert The key idea behind JTExpert . Requirements To analyze To extract (I) How to instantiate the class under test and each required argument ? Constructors; Factory methods; Data Members; Derived Classes (SubClasses). Set of means-of-instantiation. (II) A sequence of method calls to make the class under test in a relevant state. Data Member1 Data Member2 . . . Data Memberm State Modifier1 State Modifier2 . . . State Modifierm (III) A method that can reach the test target. Method Under Test Public Methods caller 6 / 15
  • 14. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh 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 } 7 / 15
  • 15. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh 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 7 / 15
  • 16. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh 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() 7 / 15
  • 17. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh 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 7 / 15
  • 18. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh 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 7 / 15
  • 19. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh 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 7 / 15
  • 20. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh 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 7 / 15
  • 21. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh 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 7 / 15
  • 22. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh 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 7 / 15
  • 23. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh 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 7 / 15
  • 24. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh 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 7 / 15
  • 25. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh Introduction JTExpert JTExpert Results Overall Analysis Conclusions JTExpert at the Third Unit Testing Tool Competition: Results 8 / 15
  • 26. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh Introduction JTExpert JTExpert Results Overall Analysis Conclusions JTExpert Results Overall Average Coverage 56% line coverage; 49% branch coverage; 36% mutation coverage; 931 points and was ranked third. Reasons Uncompilable test-case suites (-2.15%); Bad Time Management (-2% and -123 points as a penalty); Mutation Coverage Measure (Defect4j, -9%). 9 / 15
  • 27. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh Introduction JTExpert JTExpert Results Overall Analysis Conclusions JTExpert Results Overall Average Coverage 56% line coverage; 49% branch coverage; 36% mutation coverage; 931 points and was ranked third. Reasons Uncompilable test-case suites (-2.15%); Bad Time Management (-2% and -123 points as a penalty); Mutation Coverage Measure (Defect4j, -9%). If we fixed these issues before the competition, then the score would be 1196; 9 / 15
  • 28. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh Introduction JTExpert JTExpert Results Overall Analysis Conclusions JTExpert Results Analysis Coverage versus Score Metrics JTExpert Evosuite T3 Randoop Line Coverage 56.34 % 60.79 % 48.74 % 47.92 % Score 166.43 181.54 128.74 129.85 Branch Coverage 49.09 % 48.51 % 41.98 % 38.49 % Score 284.31 309.37 224.81 201.65 Mutant Coverage 35.51 % 33.50 % 37.56 % 25.99 % Score 334.08 360.86 319.94 248.92 10 / 15
  • 29. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh Introduction JTExpert JTExpert Results Overall Analysis Conclusions JTExpert Results Analysis Coverage versus Score Metrics JTExpert Evosuite T3 Randoop Line Coverage 56.34 % 60.79 % 48.74 % 47.92 % Score 166.43 181.54 128.74 129.85 Branch Coverage 49.09 % 48.51 % 41.98 % 38.49 % Score 284.31 309.37 224.81 201.65 Mutant Coverage 35.51 % 33.50 % 37.56 % 25.99 % Score 334.08 360.86 319.94 248.92 The score does not reflect the coverage. 10 / 15
  • 30. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh Introduction JTExpert JTExpert Results Overall Analysis Conclusions JTExpert Results Analysis The number of test cases Metrics JTExpert Evosuite T3 Randoop Test Cases # 76,407 88,531 194,193 14,013,583 Rank 1 2 3 4 JTExpert is the best in terms of the # of test cases; With the smallest test-cases suite, JTExpert could reach the best branch coverage and it is the second in terms of mutant coverage and line coverage. If we generated more test cases, then it would be possible to increase our mutation coverage. 11 / 15
  • 31. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh Introduction JTExpert JTExpert Results Overall Analysis Conclusions JTExpert Results Analysis Penalties Metrics JTExpert Evosuite T3 Randoop Uncompilable # 37 13 0 5728 Rank 3 2 1 4 Broken test # 3,220 224 8,010 190,493 Rank 2 1 3 4 Time # (h) 104.14 96.63 63.54 126.98 Rank 3 2 1 4 Penalty -123.15 -25.79 -17.26 -72.81 The list of metrics above significantly penalized our final score. 12 / 15
  • 32. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh Introduction JTExpert JTExpert Results Overall Analysis Conclusions JTExpert Results Analysis New Metric Metrics JTExpert Evosuite T3 Randoop Fail test # 404 451 482 359 Rank 3 2 1 4 Score 269.33 300.67 321.33 239.33 The new metric, Fail, above decided the final score because it allows 4 points for each fail detected. a Bug in Defect4j Defect4j considers a test case to reveal an actual error if its execution fails on a buggy version of the CUT regardless the reason why it failed. Many empty test-case suites wrongly considered as revealing actual errors. A manual analysis of the log files revealed that some test cases got 4 points for wrong alerts. 13 / 15
  • 33. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh Introduction JTExpert JTExpert Results Conclusions Conclusions Different internal and external factors negatively affected our score and ranking Some bugs in JTExpert; The way the score is computed; The bug detected in Defect4J. The SBST Contest 2016 provides a unique opportunity to compare JTExpert to other tools and to identify its limitations. 14 / 15
  • 34. JTExpert at the Fourth Unit Testing Tool Competition Abdelilah Sakti, Gilles Pesant, and Yann-Ga¨el Gu´eh´eneuc Presented by: Mohammed Sayagh Introduction JTExpert JTExpert Results Conclusions Thank you, Questions? Thank you Questions? 15 / 15