7. 7
public class AClass {
public int count = 0;
public void count(int i) {
if (i >= 10) {
count++;
}
}
public void reset() {
count = 0;
}
}
Code coverage is not enough
@Test
public void bossSaysMustHaveCodeCoverage() {
AClass a = new AClass();
a.count(0);
a.count(9)
a.count(11);
}
8. 8
public class AClass {
public int count = 0;
public void count(int i) {
if (i >= 10) {
count++;
}
}
public void reset() {
count = 0;
}
}
Test is better with assertions
@Test
public void bossSaysMustHaveAssertions() {
AClass a = new AClass();
a.count(0);
assertEquals(0, a.count)
a.count(12);
assertEquals(1, a.count)
}
9. 9
public class AClass {
public int count = 0;
public void count(int i) {
if (i = 10) {
count++;
}
}
public void reset() {
count = 0;
}
}
Mutation testing ensure test quality
@Test
public void bossSaysMustHaveAssertions() {
AClass a = new AClass();
a.count(0);
assertEquals(0, a.count)
a.count(12);
assertEquals(1, a.count)
}
// The test failed
// Mutant is killed
10. 10
public class AClass {
public int count = 0;
public void count(int i) {
if (i > 10) {
count++;
}
}
public void reset() {
count = 0;
}
}
Mutation testing ensure test quality
@Test
public void bossSaysMustHaveAssertions() {
AClass a = new AClass();
a.count(0);
assertEquals(0, a.count)
a.count(12);
assertEquals(1, a.count)
}
// The test suite is green
// Mutant is not killed
12. 12
DSpot for tests generation
Pull request
DEV
● Gradle => Build and run tests
● Sonar => Check test coverage and quality gates
● DSpot => Generate non regression tests
13. 13
Descartes to ensure test quality
Pull request
DEV
● Gradle => Build and run tests
● Sonar => Check test coverage and quality gates
● Descartes => Check tests quality