The C programming language
Axiomatizing software test data adequacy
IEEE Transactions on Software Engineering
IEEE Transactions on Software Engineering
Reducing the effects of infeasible paths in branch testing
TAV3 Proceedings of the ACM SIGSOFT '89 third symposium on Software testing, analysis, and verification
Software testing techniques (2nd ed.)
Software testing techniques (2nd ed.)
Unconstrained edges and their application to branch analysis and testing of programs
Journal of Systems and Software
A meaningful bound for branch testing
ISSTA '94 Proceedings of the 1994 ACM SIGSOFT international symposium on Software testing and analysis
The causes and effects of infeasible paths in computer programs
ICSE '85 Proceedings of the 8th international conference on Software engineering
A fast algorithm for finding dominators in a flowgraph
ACM Transactions on Programming Languages and Systems (TOPLAS)
Flow Analysis of Computer Programs
Flow Analysis of Computer Programs
Unconstrained duals and their use in achieving all-uses coverage
ISSTA '96 Proceedings of the 1996 ACM SIGSOFT international symposium on Software testing and analysis
Towards a structural load testing tool
ISSTA '96 Proceedings of the 1996 ACM SIGSOFT international symposium on Software testing and analysis
Reducing and estimating the cost of test coverage criteria
Proceedings of the 18th international conference on Software engineering
Architecture-based software testing
ISAW '96 Joint proceedings of the second international software architecture workshop (ISAW-2) and international workshop on multiple perspectives in software development (Viewpoints '96) on SIGSOFT '96 workshops
Feasible test path selection by principal slicing
ESEC '97/FSE-5 Proceedings of the 6th European SOFTWARE ENGINEERING conference held jointly with the 5th ACM SIGSOFT international symposium on Foundations of software engineering
Automatic test data generation using constraint solving techniques
Proceedings of the 1998 ACM SIGSOFT international symposium on Software testing and analysis
An applicable test data generation algorithm for domain errors
Proceedings of the 1998 ACM SIGSOFT international symposium on Software testing and analysis
Automatic interoperability test generation for source-to-source translators
Proceedings of the 1998 ACM SIGSOFT international symposium on Software testing and analysis
All-du-path coverage for parallel programs
Proceedings of the 1998 ACM SIGSOFT international symposium on Software testing and analysis
False path analysis based on hierarchical control representation
Proceedings of the 11th international symposium on System synthesis
Empirical research in software engineering: a workshop
ACM SIGSOFT Software Engineering Notes
Efficient coverage testing using global dominator graphs
Proceedings of the 1999 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Stress-Based and Path-Based Fault Injection
IEEE Transactions on Computers
A static measure of a subset of intra-procedural data flow testing coverage based on node coverage
CASCON '99 Proceedings of the 1999 conference of the Centre for Advanced Studies on Collaborative research
Method for designing and placing check sets based on control flow analysis of programs
ISSRE '96 Proceedings of the The Seventh International Symposium on Software Reliability Engineering
Program Segmentation for Controlling Test Coverage
ISSRE '97 Proceedings of the Eighth International Symposium on Software Reliability Engineering
Using Spanning Sets for Coverage Testing
IEEE Transactions on Software Engineering
Structural Testing Based on Minimum Kernels
Proceedings of the conference on Design, Automation and Test in Europe - Volume 2
On structurally testing Java programs effectively
Proceedings of the 3rd international symposium on Principles and practice of programming in Java
System Test Planning of Software: An Optimization Approach
IEEE Transactions on Software Engineering
An efficient method to generate feasible paths for basis path testing
Information Processing Letters
A rigorous approach towards test case generation
Information Sciences: an International Journal
Code based analysis for object-oriented systems
Journal of Computer Science and Technology
Integration testing in software product line engineering: a model-based technique
FASE'07 Proceedings of the 10th international conference on Fundamental approaches to software engineering
Using model checking for reducing the cost of test generation
FATES'04 Proceedings of the 4th international conference on Formal Approaches to Software Testing
Dependence testing: extending data flow testing with control dependence
TestCom'05 Proceedings of the 17th IFIP TC6/WG 6.1 international conference on Testing of Communicating Systems
Control flow analysis of UML 2.0 sequence diagrams
ECMDA-FA'05 Proceedings of the First European conference on Model Driven Architecture: foundations and Applications
VSTTE'12 Proceedings of the 4th international conference on Verified Software: theories, tools, experiments
Automatic generation of basis test paths using variable length genetic algorithm
Information Processing Letters
Hi-index | 0.01 |
Branch testing a program involves generating a set of paths that will cover every arc in the program flowgraph, called a path cover, and finding a set of program inputs that will execute every path in the path cover. This paper presents a generalized algorithm that finds a path cover for a given program flowgraph. The analysis is conducted on a reduced flowgraph, called a ddgraph, and uses graph theoretic principles differently than previous approaches. In particular, the relations of dominance and implication which form two trees of the arcs of the ddgraph are exploited. These relations make it possible to identify a subset of ddgraph arcs, called unconstrained arcs, having the property that a set of paths exercising all the unconstrained arcs also cover all the arcs in the ddgraph. In fact, the algorithm has been designed to cover all the unconstrained arcs of a given ddgraph: the paths are derived one at a time, each path covering at least one as yet uncovered unconstrained arc. The greatest merits of the algorithm are its simplicity and its flexibility. It consists in just visiting recursively in combination the dominator and the implied trees, and is flexible in the sense that it can derive a path cover to satisfy different requirements, according to the strategy adopted for the selection of the unconstrained arc to be covered at each recursive iteration. This feature of the algorithm can be employed to address the problem of infeasible paths, by adopting the most suitable selection strategy for the problem at hand. Embedding of the algorithm into a software analysis and testing tool is recommended.