Download presentation
Presentation is loading. Please wait.
1
1 PASTE’07 Discovering Accurate Interclass Test Dependence Weilei Zhang, Barbara Ryder Department of Computer Science Rutgers University
2
2 PASTE’07 Motivation ● Class testing is very important for OO testing It corresponds with the classic definition of unit testing by exercising a relatively small software component via a driver ● Most classes in the system are interdependent, and there is test dependence between classes ● An accurate knowledge of ICTD (InterClass Test Dependence) is desired Important in deciding class integration test order ● Dependence cycles/SCCs causes complication Helpful to parallelize integration test activities Can be useful for program understanding and software visualization
3
3 PASTE’07 Existing works on ICTD ● Briand, et al (TSE 2003) ● Milanova, et al (ICSM 2002) ● Hanh, et al (ECOOP 2001) ● Labiche, et al (ICSE 2000) ● Tai and Daniels (JOOP 1999) ● Kung, et al (JOOP 1995) ORD-based
4
4 PASTE’07 ORD-Based Definition For ICTD ● Causes for ICTD: Inheritance Aggregation Association Polymorphism A B CD As I Ag ● B is test dependent on A, C and D ● Transitive closure of the above
5
5 PASTE’07 Contributions ● To propose and formalize a new definition for ICTD in order to prune out the spurious dependences Semantics-based definition ● To give a practical algorithm to approximate the definition Method-level dependence analysis ● To implement the algorithm and evaluate the results
6
6 PASTE’07 Motivating Examples ● specjbb benchmark class DeliveryHandler{ public void handleDelivery(DeliveryTransaction deliveryTransaction){ deliveryTransaction.process(); deliveryTransaction.display(outFile); } } DeliveryHandler DeliveryTransaction As ● Cases when ICTD does not exist though there is association No reference during run-time (Milanova et al ICSM 2002) No method calls (Stack & its containees) Only calls to inherited methods (HashMap & its containees) Methods called but no impact on the caller (the above in specjbb) The spurious ICTD causes a fake dependence cycle.
7
7 PASTE’07 Semantics-based Definition of ICTD ● There is test dependence from class A to class B, if there is a statement s in a method callable on an A object and a statement t in a method declared in B, such that: s may have visible side effects (i.e., s may either write to the external memory or return a value), and s is semantically dependent on t while testing class A
8
8 PASTE’07 Approximation Algorithm ● Turing-incomputable -> dependence analysis ● Statement-level granularity dependence analysis is too costly Approximate at method-level granularity dependence ● Three causes for method dependence: Caller uses return value of callee Callee is control-dependent on caller Side effect: one method writes to the same memory region that another method reads ● Propagate dependences on the call graph w=x.foo()
9
9 PASTE’07 Side Effect write read class Method Other calls Call and return “useful” value Heap Data CUT Algorithm Illustration
10
10 PASTE’07 Side Effect write read Methods Callable on CUT class Method Heap Data CUT Other calls Call and return “useful” value Algorithm Illustration
11
11 PASTE’07 Side Effect write read Methods Callable on CUT class Method Heap Data CUT Other calls Call and return “useful” value Algorithm Illustration
12
12 PASTE’07 Side Effect write read Methods Callable on CUT class Method Heap Data CUT Other calls Call and return “useful” value Algorithm Illustration
13
13 PASTE’07 Side Effect write read Methods Callable on CUT class Method Heap Data CUT Other calls Call and return “useful” value Algorithm Illustration
14
14 PASTE’07 Side Effect write read Methods Callable on CUT class Method Heap Data CUT Other calls Call and return “useful” value Algorithm Illustration
15
15 PASTE’07 Side Effect write read Methods Callable on CUT class Method Heap Data CUT Other calls Call and return “useful” value Algorithm Illustration
16
16 PASTE’07 Analysis Configurations ● The proposed algorithm is parameterized by the choice of program analyses to calculate the call graph and side effect information ● For analysis configuration applied: VTA: variable type analysis (call graph not constructed on the fly) 0CFA: 0-CFA (call graph constructed on the fly) OB: 1-object-sensitive points-to analysis OBR: OB+R (a data reachability algorithm to resolve library call-backs and construct accurate application call graphs)
17
17 PASTE’07 ICTD Reduction Rate wrt. ORD-based Definition
18
18 PASTE’07 Size of Dependence Cycles ORDVTA0CFAOBOBR compress(128)6,4,45,3333 jess(163)147,4139969490 raytrace(41)18,4,2168,477 db(20)106500 Javac(184)169161 142134 mpegaudio(60)44376,3,200 mtrt(41)18,4,2168,477 jack(69)447,6,2,27,4,2,277 jbb(104)79493,3,22,22
19
19 PASTE’07 Objective-Sensitive Analysis Metrics: output_properly(){…this.wrap()…} AsciiMetrics overrides Method wrap(). Metrics AsciiMetrics I Metrics: output_properly() Metrics: wrap() AsciiMetrics: wrap() Methods reachable from Metrics Methods reachable from AsciiMetrics Context-insensitive CG
20
20 PASTE’07 Objective-Sensitive Analysis Metrics: output_properly(){…this.wrap()…} AsciiMetrics overrides Method wrap(). Metrics AsciiMetrics I [m, Metrics: output_properly()] [m,Metrics: wrap()][am,AsciiMetrics: wrap()] Methods reachable from Metrics Methods reachable from AsciiMetrics Object-sensitive CG [am, Metrics: output_properly()] PLDI’07 Sridharan, Fink, Bodik: context-sensitive dependence analysis is too costly and “did not provide much realistic usage” for thin slicing. Method-level dependence calculation makes context-sensitive dependence analysis more practical and it is very useful in our study in ICTD.
21
21 PASTE’07 Conclusions ● A new semantics-based accurate definition for interclass test dependence ● An approximate algorithm and implementation A great number of spurious dependences are removed Dependence cycles are determined accurately in 6 out of 7 benchmarks amenable to code inspection. Method-level dependence propagation makes object-sensitive dependence analysis more practical Object-sensitive analysis is key to achieve accurate results for dependence cycles
22
22 PASTE’07 Thanks ! Questions?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.