4 research outputs found
Generating Class-Level Integration Tests Using Call Site Information
Search-based approaches have been used in the literature to automate the
process of creating unit test cases. However, related work has shown that
generated unit-tests with high code coverage could be ineffective, i.e., they
may not detect all faults or kill all injected mutants. In this paper, we
propose CLING, an integration-level test case generation approach that exploits
how a pair of classes, the caller and the callee, interact with each other
through method calls. In particular, CLING generates integration-level test
cases that maximize the Coupled Branches Criterion (CBC). Coupled branches are
pairs of branches containing a branch of the caller and a branch of the callee
such that an integration test that exercises the former also exercises the
latter. CBC is a novel integration-level coverage criterion, measuring the
degree to which a test suite exercises the interactions between a caller and
its callee classes. We implemented CLING and evaluated the approach on 140
pairs of classes from five different open-source Java projects. Our results
show that (1) CLING generates test suites with high CBC coverage, thanks to the
definition of the test suite generation as a many-objectives problem where each
couple of branches is an independent objective; (2) such generated suites
trigger different class interactions and can kill on average 7.7% (with a
maximum of 50%) of mutants that are not detected by tests generated at the unit
level; (3) CLING can detect integration faults coming from wrong assumptions
about the usage of the callee class (32 for our subject systems) that remain
undetected when using automatically generated unit-level test suites
Parameterized Object Sensitivity for Points-to Analysis for Java
The goal of points-to analysis for Java is to determine the set of objects pointed to by a reference variable or a reference object field. We present object sensitivity, a new form of context sensitivity for flow-insensitive points-to analysis for Java. The key idea of our approach is to analyze a method separately for each of the object names that represent runtime objects on which this method may be invoked. To ensure flexibility and practicality, we propose a parameterization framework that allows analysis designers to control the tradeo#s between cost and precision in the object-sensitive analysis
The construction of contextual def-use associations for object-oriented systems
This paper describes a program representation and algorithms for realizing a novel structural testing methodology that not only focuses on addressing the complex features of object-oriented languages, but also incorporates the structure of object-oriented software into the approach. The testing methodology is based on the construction of contextual def-use associations, which provide context to each definition and use of an object. Testing based on contextual def-use associations can provide increased test coverage by identifying multiple unique contextual def-use associations for the same context-free association. Such a testing methodology promotes more thorough and focused testing of the manipulation of objects in object-oriented programs. This paper presents a technique for the construction of contextual def-use associations, as well as detailed examples illustrating their construction, an analysis of the cost of constructing contextual def-use associations with this approach, and a description of a prototype testing tool that shows how the theoretical contributions of this work can be useful for structural test coverage