On the Effectiveness of Modular Testing with EvoSuite
New EMOTE technique allows non-target setup calls, improving branch coverage by 15.15%.
A new paper by Elizabeth Dinella tackles a core challenge in automated software testing: how to effectively test individual Java components in isolation. The work focuses on EvoSuite, a popular automated test generator that uses randomized testing. Dinella identifies that EvoSuite's modular testing mode imposes strict restrictions that forbid calls to non-target setup methods, leading to low branch coverage. To address this, she proposes EMOTE (Effective Modular Testing with EvoSuite), which relaxes this restriction by allowing non-target methods to be included in test prefixes—mirroring how developers write fuzz drivers.
EMOTE also modifies EvoSuite's fitness function to prioritize branch coverage contributions from the call chain originating from the target method, ensuring meaningful test generation. Evaluated on a subset of the SF100 benchmark, EMOTE improves coverage of target methods by 15.15%. This represents a significant step forward for modular testing in object-oriented programs, offering a practical way to achieve higher code coverage without sacrificing test relevance. The research has immediate implications for developers using EvoSuite, particularly for regression testing and continuous integration pipelines.
- EMOTE relaxes EvoSuite's ban on non-target setup calls in modular tests.
- Achieves a 15.15% improvement in branch coverage of target methods on the SF100 benchmark.
- Fitness function is modified to focus coverage on the call chain from the target method.
Why It Matters
Higher coverage in automated Java testing means fewer bugs in production, especially for critical modules.