MSeqGen: Object-Oriented Unit-Test Generation via Mining Source Code
An objective of unit testing is to achieve high structural coverage of the code under test. Achieving high structural coverage of object-oriented code requires desirable method-call sequences that create and mutate objects. These sequences help generate target
object states such as argument or receiver object states (in short as target states) of a method under test. Automatic generation of sequences for achieving target states is often challenging due to a large search space of possible sequences. On the other
hand, code bases that use object types (such as argument or receiver object types) include sequences that can be used to assist automatic test-generation approaches in achieving target states. In this paper, we propose a novel approach, called MSeqGen, that
mines code bases and extracts sequences related to receiver or argument object types of a method under test. Our approach uses these extracted sequences to enhance two state-of-the-art test-generation approaches: random testing and dynamic symbolic execution.
We conduct two evaluations to show the effectiveness of our approach. Using sequences extracted by our approach, we show that a random testing approach achieves 8.69% (with a maximum of 20% for one namespace) higher branch coverage and a dynamic-symbolic-execution-based
approach achieves 17.4% (with a maximum of 22.45% for one namespace) higher branch coverage than without using our approach. Such an improvement is signiﬁcant as the branches that are not covered by these state-of-the-art approaches are generally quite difficult