Improving Structural Testing of Object-Oriented Programs via Integrating Evolutionary Testing and Symbolic Execution

Abstract

Achieving high structural coverage such as branch coverage in object-oriented programs is an important and yet challenging goal due to two main challenges. First, some branches involve complex program logics and generating tests to cover them requires deep knowledge of the program structure and semantics. Second, covering some branches requires special method sequences to lead the receiver object or non-primitive arguments to specific desirable states. Previous work has developed the symbolic execution technique and the evolutionary testing technique to address these two challenges, respectively. However, neither technique was designed to address both challenges at the same time. To address the respective weaknesses of these two previous techniques, we propose a novel framework called Evacon that integrates evolutionary testing (used to search for desirable method sequences) and symbolic execution (used to generate desirable method arguments). We have implemented our framework and applied it to test 13 classes previously used in evaluating white-box test generation tools. The experimental results show that the tests generated using our framework can achieve higher branch coverage than the ones generated by evolutionary testing, symbolic execution, or random testing within the same amount of time.

DOI: 10.1109/ASE.2008.40

Extracted Key Phrases

6 Figures and Tables

01020200920102011201220132014201520162017
Citations per Year

111 Citations

Semantic Scholar estimates that this publication has 111 citations based on the available data.

See our FAQ for additional information.

Cite this paper

@article{Inkumsah2008ImprovingST, title={Improving Structural Testing of Object-Oriented Programs via Integrating Evolutionary Testing and Symbolic Execution}, author={Kobi Inkumsah and Tao Xie}, journal={2008 23rd IEEE/ACM International Conference on Automated Software Engineering}, year={2008}, pages={297-306} }