Whole Test Suite Generation
read more
Citations
The Oracle Problem in Software Testing: A Survey
A Hitchhiker's guide to statistical tests for assessing randomized algorithms in software engineering
Sapienz: multi-objective automated testing for Android applications
DeepGauge: multi-granularity testing criteria for deep learning systems
Fairness testing: testing software for discrimination
References
An Introduction to Probability Theory and Its Applications.
An introduction to probability theory
An Introduction to Probability Theory
DART: directed automated random testing
Related Papers (5)
Frequently Asked Questions (10)
Q2. What have the authors stated for future works in "Whole test suite generation" ?
However, the EVOSUITE approach could be easily applied to procedural software as well, although further research is needed to assess the potential benefits in such a context.
Q3. How can the authors calculate the branch distance for a given predicate?
The branch distance for any given execution of a predicate can be calculated by applying a recursively defined set of rules (see [30], [34] for details).
Q4. What are some examples of infeasible branches?
Other examples of infeasible branches are given by private methods that are not called in any public methods, dead code, or methods of abstract classes that are overridden in all concrete subclasses without calling the abstract super-class.
Q5. What is the way to minimize test suites?
Before presenting the result to the user, test suites are minimized using a simple minimization algorithm [5] which attempts to remove each statement one at a time until all remaining statements contribute to the coverage; this minimization reduces both the number of test cases as well as their length, such that removing any statement in the resulting test suite will reduce its coverage.
Q6. How can one extend the sequence to cover all the branches?
Once EVOSUITE is able to generate a test sequence that covers that difficult branch, this sequence can be extended (e.g., by adding function calls at its end) or copied in another test case in the test suite (e.g., through the crossover operator) to make it easier to cover the other nested branches.
Q7. What is the probability of sampling a test case?
When a test case representation is complex and it is of variable length (as it happens in their case, see Section 3.2), it is often not possible to sample test cases with uniform distribution (i.e., each test case having the same probability of being sampled).
Q8. What is the threat to external validity regarding the generalization to other types of software?
Although the authors used both open source projects and industrial software as case studies, there is the threat to external validity regarding the generalization to other types of software, which is common for any empirical analysis.
Q9. Why are the statements of the second part appended one at a time?
The statements of the second part are appended one at a time similarly to the insertion described in Section 3.5.2, except that whenever possible dependencies are satisfied using existing values.
Q10. What could be explained by the fact that, when EVOSUITE is worse on a?
It could be explained by the fact that, when EVOSUITE is worse on a specific SUT, it is only worse by little, whereas when it is better, it is better by a larger quantity.