Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article

A dependence graph-based representation for test coverage analysis of object-oriented programs

Published: 28 February 2009 Publication History

Abstract

Test coverage analysis is used to determine the extent to which different features of interest are exercised by a given test suite. For object-oriented programs, it involves determining the extent to which features such as inheritance, polymorphism, dynamic binding, etc. are exercised. As object-oriented coverage analysis using only source code or object code is difficult and inefficient, the source code is converted to a suitable intermediate representation for subsequent analysis. We propose a dependence graph-based representation for object-oriented programs, named Call-based Object-Oriented System Dependence Graph (COSDG). COSDG captures the important object-oriented features, provides details of method visibility in a derived class, and differentiates various calling contexts with different type of method call edges: simple, inherited, and polymorphic. We also propose an algorithm to construct COSDG incrementally. Though COSDG has been developed primarily to aid test coverage analysis, it can be used in a variety of other software engineering applications also.

References

[1]
R. V. Binder, Testing Object-Oriented Systems: Models, Patterns, and Tools, ser. Object Technology. Addision-Wesley, 2000.
[2]
J. Ferrante, K. J. Ottenstein, and J. D.Warren, "The program dependence graph and its use in optimization," ACM Transactions on Programming Languages and Systems, vol. 9, no. 3, pp. 319--349, Jul. 1987.
[3]
K. J. Ottenstein, "Data-flow graphs as an intermediate program form," Ph.D. dissertation, Computer Sciences Dept., Purdue University, Lafayette, IN, Aug. 1978.
[4]
S. Horwitz, T. Reps, and D. Binkley, "Interprocedural slicing using dependence graphs," ACM Transactions on Programming Languages and Systems, vol. 12, no. 1, pp. 26--60, Jan. 1990.
[5]
B. G. Ryder, "Constructing the call graph of a program," IEEE Transactions on Software Engineering, vol. SE-5, no. 3, pp. 216--226, May 1979.
[6]
G. Rothermel and M. J. Harrold, "Selecting regression tests for object-oriented software," in Proc. of the International Conference on Software Maintenance - 1994, Victoria, BC, Canada, Sep. 1994, pp. 14--25.
[7]
L. Larsen and M. J. Harrold, "Slicing object-oriented software," in Proc. of the 18th International Conference on Software Engineering, Berlin, Germany, Mar. 1996, pp. 495--505.
[8]
D. Liang and M. J. Harrold, "Slicing objects using system dependence graphs," in Proc. of the IEEE International Conference of Software Maintenance (ICSM '98), Bethesda, Maryland, USA, Nov. 1998, pp. 358--367.
[9]
B. A. Malloy, J. D. McGregor, A. Krishnaswamy, and M. Medikonda, "An extensible program representation for object-oriented software," ACM SIGPLAN Notices, vol. 29, no. 12, pp. 38--47, Dec. 1994.
[10]
M. J. Harrold and G. Rothermel, "A coherent family of analyzable graphical representations for object-oriented software," Department of Computer and Information Science, The Ohio State University, Technical Report OSU-CISRC-11/96-TR60, Nov. 1996.
[11]
J. Zhao, "Applying program dependence analysis to Java software," in Proc. of Workshop on Software Engineering and Database Systems, 1998 International Computer Symposium, Tainan, Taiwan, Dec. 1998, pp. 162--169.
[12]
N. Walkinshaw, M. Roper, and M. Wood, "The Java system dependence graph," in Proc. of the Third IEEE International Workshop on Source Code Analysis and Manipulation, (SCAM '03), Amsterdam, The Netherlands, Sep. 2003, pp. 55--64.
[13]
A. Vincenzi, J. Maldonado, W. Wong, and M. Delamaro, "Coverage testing of Java programs and components," Science of Computer Programming, vol. 56, no. 1-2, pp. 211--230, Apr. 2005.
[14]
H. Agrawal, "Efficient coverage testing using global dominator graphs," in Proc. of the 1999 ACM SIGPLANSIGSOFT workshop on Program Analysis for Software Tools and Engineering (PASTE '99), Toulouse, France, Sep. 1999, pp. 11--20.
[15]
A. Rountev, S. Kagan, and M. Gibas, "Static and dynamic analysis of call chains in Java," in Proc. of the 2004 ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA '04), Boston, Massachusetts, USA, Jul. 2004, Vol. 29 No. 4, pp. 1--11.
[16]
A. Rountev, A. Milanova, and B. G. Ryder, "Fragment class analysis for testing of polymorphism in Java software," IEEE Transactions on Software Engineering, vol. 30, no. 6, pp. 372--387, Jun. 2004.
[17]
E. S. F. Najumudheen, "An intermediate representation for test coverage analysis of object-oriented programs," Indian Institute of Technology, Kharagpur, India, Tech. Rep. IITKGP-CSE-TR-17/2008, Jan. 2008.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM SIGSOFT Software Engineering Notes
ACM SIGSOFT Software Engineering Notes  Volume 34, Issue 2
March 2009
140 pages
ISSN:0163-5948
DOI:10.1145/1507195
Issue’s Table of Contents

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 28 February 2009
Published in SIGSOFT Volume 34, Issue 2

Check for updates

Author Tags

  1. coverage analysis
  2. dependence graph
  3. inheritance
  4. object-oriented program
  5. polymorphism

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)17
  • Downloads (Last 6 weeks)2
Reflects downloads up to 30 Aug 2024

Other Metrics

Citations

Cited By

View all
  • (2023)A Graph-Based Java Projects Representation for Antipatterns DetectionSoftware Architecture10.1007/978-3-031-42592-9_17(250-265)Online publication date: 18-Sep-2023
  • (2020)DG: A program analysis librarySoftware Impacts10.1016/j.simpa.2020.100038(100038)Online publication date: Nov-2020
  • (2019)JavaRelationshipGraphs (JRG)Proceedings of the 2nd International Conference on Software Engineering and Information Management10.1145/3305160.3305173(80-84)Online publication date: 10-Jan-2019
  • (2017)Hierarchical regression test case selection using slicingInternational Journal of Computational Science and Engineering10.1504/IJCSE.2017.08288214:2(179-197)Online publication date: 1-Jan-2017
  • (2017)Regression test suite minimization using integer linear programming modelSoftware: Practice and Experience10.1002/spe.248547:11(1539-1560)Online publication date: 10-Feb-2017
  • (2011)Representing software changes at component level using call graph2011 IEEE Conference on Open Systems10.1109/ICOS.2011.6079286(91-94)Online publication date: Sep-2011
  • (2011)Test coverage analysis based on an object-oriented program modelJournal of Software Maintenance and Evolution: Research and Practice10.1002/smr.47923:7(465-493)Online publication date: 1-Nov-2011
  • (2009)A Dependence Graph-Based Test Coverage Analysis Technique for Object-Oriented ProgramsProceedings of the 2009 Sixth International Conference on Information Technology: New Generations10.1109/ITNG.2009.284(763-768)Online publication date: 27-Apr-2009

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media