TY - GEN
T1 - Precise identification of problems for structural test generation
AU - Xiao, Xusheng
AU - Xie, Tao
AU - Tillmann, Nikolai
AU - De Halleux, Jonathan
PY - 2011
Y1 - 2011
N2 - An important goal of software testing is to achieve at least high structural coverage. To reduce the manual efforts of producing such high-covering test inputs, testers or developers can employ tools built based on automated structural test-generation approaches. Although these tools can easily achieve high structural coverage for simple programs, when they are applied on complex programs in practice, these tools face various problems, such as (1) the external-method-call problem (EMCP), where tools cannot deal with method calls to external libraries; (2) the object-creation problem (OCP), where tools fails to generate method-call sequences to produce desirable object states. Since these tools currently could not be powerful enough to deal with these problems in testing complex programs in practice, we propose cooperative developer testing, where developers provide guidance to help tools achieve higher structural coverage. To reduce the efforts of developers in providing guidance to tools, in this paper, we propose a novel approach, called Covana, which precisely identifies and reports problems that prevent the tools from achieving high structural coverage primarily by determining whether branch statements containing notcovered branches have data dependencies on problem candidates. We provide two techniques to instantiate Covana to identify EMCPs and OCPs. Finally, we conduct evaluations on two open source projects to show the effectiveness of Covana in identifying EMCPs and OCPs.
AB - An important goal of software testing is to achieve at least high structural coverage. To reduce the manual efforts of producing such high-covering test inputs, testers or developers can employ tools built based on automated structural test-generation approaches. Although these tools can easily achieve high structural coverage for simple programs, when they are applied on complex programs in practice, these tools face various problems, such as (1) the external-method-call problem (EMCP), where tools cannot deal with method calls to external libraries; (2) the object-creation problem (OCP), where tools fails to generate method-call sequences to produce desirable object states. Since these tools currently could not be powerful enough to deal with these problems in testing complex programs in practice, we propose cooperative developer testing, where developers provide guidance to help tools achieve higher structural coverage. To reduce the efforts of developers in providing guidance to tools, in this paper, we propose a novel approach, called Covana, which precisely identifies and reports problems that prevent the tools from achieving high structural coverage primarily by determining whether branch statements containing notcovered branches have data dependencies on problem candidates. We provide two techniques to instantiate Covana to identify EMCPs and OCPs. Finally, we conduct evaluations on two open source projects to show the effectiveness of Covana in identifying EMCPs and OCPs.
KW - data dependency
KW - dynamic symbolic execution
KW - problem identification
KW - structural test generation
UR - http://www.scopus.com/inward/record.url?scp=79959869952&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=79959869952&partnerID=8YFLogxK
U2 - 10.1145/1985793.1985876
DO - 10.1145/1985793.1985876
M3 - Conference contribution
AN - SCOPUS:79959869952
SN - 9781450304450
T3 - Proceedings - International Conference on Software Engineering
SP - 611
EP - 620
BT - ICSE 2011 - 33rd International Conference on Software Engineering, Proceedings of the Conference
T2 - 33rd International Conference on Software Engineering, ICSE 2011
Y2 - 21 May 2011 through 28 May 2011
ER -