As software evolves, test suite augmentation techniques may be used to identify which part of the program needs to be tested due to code changes and how to generate these new test cases for regression testing. However, existing techniques focus exclusively on sequential software, without considering concurrent software in which multiple threads may interleave with each other during the execution and thus lead to a combinatorial explosion. To fill the gap, we propose ConTesa, the first test suite augmentation tool for concurrent software. The goal is to generate new test cases capable of exercising both code changes and the thread interleavings affected by these code changes. At the center of ConTesa is a two-pronged approach. First, it judiciously reuses the current test inputs while amplifying their interleaving coverage using random thread schedules. Then, it leverages an incremental symbolic execution technique to generate more test inputs and interleavings, to cover the new concurrency-related program behaviors. We have implemented ConTesa and evaluated it on a set of real-world multithreaded Linux applications. Our results show that it can achieve a significantly high interleaving coverage and reveal more bugs than state-of-the-art testing techniques.
|Number of pages||15|
|Journal||IEEE Transactions on Software Engineering|
|State||Published - Apr 1 2020|
Bibliographical noteFunding Information:
This work was supported in part by the U.S. National Science Foundation (NSF) under grants CCF-1652149 and CCF-1722710 and the Office of Naval Research (ONR) under grant N00014-17-1-2896.
© 1976-2012 IEEE.
- Regression testing
- concurrent programming
- dynamic analysis
- symbolic execution
ASJC Scopus subject areas