The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Interprocedural slicing using dependence graphs
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Object-oriented software engineering
Object-oriented software engineering
A Markov Chain Model for Statistical Software Testing
IEEE Transactions on Software Engineering
An extensible program representation for object-oriented software
ACM SIGPLAN Notices
Software engineering (5th ed.)
Software engineering (5th ed.)
Slicing object-oriented software
Proceedings of the 18th international conference on Software engineering
A Unified Framework for Coupling Measurement in Object-Oriented Systems
IEEE Transactions on Software Engineering
Incorporating varying test costs and fault severities into test case prioritization
ICSE '01 Proceedings of the 23rd International Conference on Software Engineering
Prioritizing Test Cases For Regression Testing
IEEE Transactions on Software Engineering
Test Case Prioritization: A Family of Empirical Studies
IEEE Transactions on Software Engineering
Compiler Design Handbook: Optimizations and Machine Code Generation
Compiler Design Handbook: Optimizations and Machine Code Generation
Engineering Software Under Statistical Quality Control
IEEE Software
Operational Profiles in Software-Reliability Engineering
IEEE Software
Optimal Resource Allocation and Reliability Analysis for Component-Based Software Applications
COMPSAC '02 Proceedings of the 26th International Computer Software and Applications Conference on Prolonging Software Life: Development and Redevelopment
Dynamic Metrics for Object Oriented Designs
METRICS '99 Proceedings of the 6th International Symposium on Software Metrics
Slicing Objects Using System Dependence Graphs
ICSM '98 Proceedings of the International Conference on Software Maintenance
Using Coupling Measurement for Impact Analysis in Object-Oriented Systems
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
Dynamic Coupling Measurement for Object-Oriented Software
IEEE Transactions on Software Engineering
Software Reliability Engineering: More Reliable Software Faster and Cheaper
Software Reliability Engineering: More Reliable Software Faster and Cheaper
The extended operational profile model for usage-based software testing
The extended operational profile model for usage-based software testing
Prioritize Code for Testing to Improve Code Coverage of Complex Software
ISSRE '05 Proceedings of the 16th IEEE International Symposium on Software Reliability Engineering
Code-coverage guided prioritized test generation
Information and Software Technology
Practical Priorities in System Testing
IEEE Software
Cleanroom Software Engineering
IEEE Software
IEEE Transactions on Software Engineering
A User-Oriented Software Reliability Model
IEEE Transactions on Software Engineering
Software Structure Metrics Based on Information Flow
IEEE Transactions on Software Engineering
Experiments with test case prioritization using relevant slices
Journal of Systems and Software
Optimizing preventive service of software products
IBM Journal of Research and Development
Code-based prioritization: a pre-testing effort to minimize post-release failures
Innovations in Systems and Software Engineering
Hi-index | 0.00 |
Even after thorough testing, a few bugs still remain in a program with moderate complexity. These residual bugs are randomly distributed throughout the code. We have noticed that bugs in some parts of a program cause frequent and severe failures compared to those in other parts. Then, it is necessary to take a decision about what to test more and what to test less within the testing budget. It is possible to prioritize the methods and classes of an object-oriented program according to their potential to cause failures. For this, we propose a program metric called influence metric to find the influence of a program element on the source code. First, we represent the source code into an intermediate graph called extended system dependence graph. Then, forward slicing is applied on a node of the graph to get the influence of that node. The influence metric for a method m in a program shows the number of statements of the program which directly or indirectly use the result produced by method m. We compute the influence metric for a class c based on the influence metric of all its methods. As influence metric is computed statically, it does not show the expected behavior of a class at run time. It is already known that faults in highly executed parts tend to more failures. Therefore, we have considered operational profile to find the average execution time of a class in a system. Then, classes are prioritized in the source code based on influence metric and avemge execution time. The priority of an element indicates the potential of the element to cause failures. Once all program elements have been prioritized, the testing effort can be apportioned so that the elements causing frequent failures will be tested thoroughly. We have conducted experiments for two well-known case studies - Library Management System and Trading Automation System -- and successfully identified critical elements in the source code of each case study. We have also conducted experiments to compare our scheme with a related scheme. The experimental studies justify that our approach is more accurate than the existing ones in exposing critical elements at the implementation level.