@inproceedings{FSE21_ObjectSeed,
author = {Lin, Yun and Ong, You Sheng and Sun, Jun and Fraser, Gordon and Dong, Jin Song},
title = {Graph-Based Seed Object Synthesis for Search-Based Unit Testing},
year = {2021},
isbn = {9781450385626},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3468264.3468619},
doi = {10.1145/3468264.3468619},
abstract = {Search-based software testing (SBST) generates tests using search algorithms guided
by measurements gauging how far a test case is away from exercising a coverage goal.
The effectiveness of SBST largely depends on the continuity and monotonicity of the
fitness landscape decided by these measurements and the search operators. Unfortunately,
the fitness landscape is challenging when the function under test takes object inputs,
as classical measurement hardly provide guidance for constructing legitimate object
inputs. To overcome this problem, we propose test seeds, i.e., test code skeletons
of legitimate objects which enable the use of classical measurements. Given a target
branch in a function under test, we first statically analyze the function to build
an object construction graph that captures the relation between the operands of the
target method and the states of their relevant object inputs. Based on the graph,
we synthesize test template code where each "slot" is a mutation point for the search
algorithm. This approach can be seamlessly integrated with existing SBST algorithms,
and we implemented EvoObj on top of EvoSuite. Our experiments show that EvoObj outperforms
EvoSuite with statistical significance on 2750 methods over 103 open source Java projects
using state-of-the-art SBST algorithms.},
booktitle = {Proceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering},
pages = {1068–1080},
numpages = {13},
keywords = {object oriented, code synthesis, software testing, search-based},
location = {Athens, Greece},
series = {ESEC/FSE 2021}
}