Infeasible Paths Detection Using Static Analysis

Software testing is the process that aims to detect the errors in the software product by using test cases, and to discover the components of the software that are responsible of these errors. The testers need to ensure that every component of the software is tested correctly in order to achieve high coverage in terms of testing one or more of the software aspects such as: code, user interface, etc. Many coverage aspects were proposed in testing research field such as node, edge, edge-pair coverage, prime path coverage, etc. By reading many of these studies, we can notice that they propose many solutions for detecting and discovering infeasible paths. An infeasible path is simply any path that cannot be traversed by test cases. Some of the causes of the infeasible paths are dead codes, correlated predicates with respect to a certain variable (which is one of the main reasons for infeasibility in the software programs) or according to the test cases itself. In this paper, a tool is developed to automatically detect the infeasible paths that may exist in source code and that are caused by the logically inconsistent predicates related to dead codes, and by the correlated conditional statements with respect to a certain variable. Our application tool is evaluated against four source codes, and the experimental results showed that the tool can effectively detect infeasible paths except in the source codes that contain while loop structures.

[1]  Arnaud Gotlieb,et al.  Explanation-Based Generalization of Infeasible Path , 2010, 2010 Third International Conference on Software Testing, Verification and Validation.

[2]  Yan Chen,et al.  A new method of test data generation for branch coverage in software testing based on EPDG and Genetic Algorithm , 2009, 2009 3rd International Conference on Anti-counterfeiting, Security, and Identification in Communication.

[3]  Minh Ngoc Ngo,et al.  Detecting large number of infeasible paths through recognizing their patterns , 2007, ESEC-FSE '07.

[4]  Ho-Yeon Kim,et al.  A Study of Advanced Hybrid Execution Using Reverse Traversal , 2011, 2011 International Conference on Information Management, Innovation Management and Industrial Engineering.

[5]  Martin Schäf,et al.  Joogie: Infeasible Code Detection for Java , 2012, CAV.

[6]  Ting Chen,et al.  Efficient detection and exploitation of infeasible paths for software timing analysis , 2006, 2006 43rd ACM/IEEE Design Automation Conference.

[7]  Robert M. Hierons,et al.  Generating Feasible Transition Paths for Testing from an Extended Finite State Machine (EFSM) , 2009, 2009 International Conference on Software Testing Verification and Validation.

[8]  Bor-Yuh Evan Chang,et al.  Boogie: A Modular Reusable Verifier for Object-Oriented Programs , 2005, FMCO.

[9]  D. Gong,et al.  Automatic detection of infeasible paths in software testing , 2010, IET Softw..

[10]  Javier Tuya,et al.  Automated test data generation using a scatter search approach , 2009, Inf. Softw. Technol..

[11]  Andreas S. Andreou,et al.  Automatic, evolutionary test data generation for dynamic software testing , 2008, J. Syst. Softw..

[12]  Hiralal Agrawal,et al.  Dominators, super blocks, and program coverage , 1994, POPL '94.

[13]  Hee Beng Kuan Tan,et al.  Heuristics-based infeasible path detection for dynamic test data generation , 2008, Inf. Softw. Technol..