TY - JOUR
T1 - A survey on data-flow testing
AU - Su, Ting
AU - Wu, Ke
AU - Miao, Weikai
AU - Pu, Geguang
AU - He, Jifeng
AU - Chen, Yuting
AU - Su, Zhendong
N1 - Publisher Copyright:
© 2017 ACM.
PY - 2017/3
Y1 - 2017/3
N2 - Data-flow testing (DFT) is a family of testing strategies designed to verify the interactions between each program variable's definition and its uses. Such a test objective of interest is referred to as a def-use pair. DFT selects test data with respect to various test adequacy criteria (i.e., data-flow coverage criteria) to exercise each pair. The original conception of DFT was introduced by Herman in 1976. Since then, a number of studies have been conducted, both theoretically and empirically, to analyze DFT's complexity and effectiveness. In the past four decades, DFT has been continuously concerned, and various approaches from different aspects are proposed to pursue automatic and efficient data-flow testing. This survey presents a detailed overview of data-flow testing, including challenges and approaches in enforcing and automating it: (1) it introduces the data-flow analysis techniques that are used to identify def-use pairs; (2) it classifies and discusses techniques for data-flow-based test data generation, such as search-based testing, random testing, collateral-coverage-based testing, symbolic-execution-based testing, and model-checking-based testing; (3) it discusses techniques for tracking data-flow coverage; (4) it presents several DFT applications, including software fault localization, web security testing, and specification consistency checking; and (5) it summarizes recent advances and discusses future research directions toward more practical data-flow testing.
AB - Data-flow testing (DFT) is a family of testing strategies designed to verify the interactions between each program variable's definition and its uses. Such a test objective of interest is referred to as a def-use pair. DFT selects test data with respect to various test adequacy criteria (i.e., data-flow coverage criteria) to exercise each pair. The original conception of DFT was introduced by Herman in 1976. Since then, a number of studies have been conducted, both theoretically and empirically, to analyze DFT's complexity and effectiveness. In the past four decades, DFT has been continuously concerned, and various approaches from different aspects are proposed to pursue automatic and efficient data-flow testing. This survey presents a detailed overview of data-flow testing, including challenges and approaches in enforcing and automating it: (1) it introduces the data-flow analysis techniques that are used to identify def-use pairs; (2) it classifies and discusses techniques for data-flow-based test data generation, such as search-based testing, random testing, collateral-coverage-based testing, symbolic-execution-based testing, and model-checking-based testing; (3) it discusses techniques for tracking data-flow coverage; (4) it presents several DFT applications, including software fault localization, web security testing, and specification consistency checking; and (5) it summarizes recent advances and discusses future research directions toward more practical data-flow testing.
KW - Algorithms
KW - Coverage criteria
KW - Coverage tracking
KW - D.2.4 [Software/Program Verification]: Model checking
KW - D.2.5 [Testing and Debugging]: Testing tools, Symbolic execution
KW - Data-flow analysis
KW - Data-flow testing
KW - Experimentation
KW - Reliability
KW - Test data generation
UR - https://www.scopus.com/pages/publications/85017178095
U2 - 10.1145/3020266
DO - 10.1145/3020266
M3 - 文章
AN - SCOPUS:85017178095
SN - 0360-0300
VL - 50
JO - ACM Computing Surveys
JF - ACM Computing Surveys
IS - 1
M1 - 5
ER -