Ingegneria del Software II

49
Lecturer : Henry Muccini and Vittorio Cortellessa Computer Science Department University of L'Aquila - Italy [email protected] [email protected] [www.di.univaq.it/muccini ]–[www.di.univaq.it/cortelle ] Course : Ingegneria del Software II academic year: 2004-2005 Course Web-site: [www.di.univaq.it/ingegneria2/ ] 12.Regression Testing

Transcript of Ingegneria del Software II

Page 1: Ingegneria del Software II

Lecturer:Henry Muccini and Vittorio Cortellessa

Computer Science Department University of L'Aquila - Italy

[email protected][email protected][www.di.univaq.it/muccini] – [www.di.univaq.it/cortelle]

Course:

Ingegneria del Software IIacademic year: 2004-2005

Course Web-site: [www.di.univaq.it/ingegneria2/]

12.Regression Testing

Page 2: Ingegneria del Software II

2SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Copyright Notice

» The material in these slides may be freely reproduced and distributed, partially or totally, as far as an explicit reference or acknowledge to the material author is preserved.

Henry Muccini

Page 3: Ingegneria del Software II

3SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Acknowledgment

» This work is joined with the University of California, Irvine (Debra J. Richardson and M. Dias)

» Thanks to Lihua Xu and to the ROSATEA group at the University of California, Irvine for their contribution on this research

Page 4: Ingegneria del Software II

4SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Agenda

» Definition and Techniques

» Regression Test Selection Techniques

» Spec-based Regression Testing approaches

» SA-based Regression Testing

Page 5: Ingegneria del Software II

5SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

What is Regression Test

» Maintenance activity

» Performed on modified programs

» Attempts to validate modified software and ensure that modifications are correct

Page 6: Ingegneria del Software II

6SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

» Test modified software and provide a certain confidence that no new errors are introduced into previously tested code.

» Given program P and P’, T is a test suite for P. Aregression testing technique:

- provides a certain confidence that P’ is still correct with respect to a set of test T’, which is a subset of T;

- Helps to identify new test cases for T’.

» Different Techniques:

- Retest all

- Selective Retest (Regression Test Selection)

Regression Testing

Page 7: Ingegneria del Software II

7SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

» Select T’, subset of T and relevant for P’;

» Test P’ with respect to T’;

» If necessary, create T’’, to test new functionality/structure in P’;

» Test P’ with respect to T’’;

» Create T’’’, a new test suite and test history;

Regression Test Selection technique

Page 8: Ingegneria del Software II

8SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Traditional (Selective) Regression Testing

» Traditional Regression:

- We have a program P

- We select a set of tests T to be applied to P

- We test P with T

- P is modified in P’

- Select T’ in T, a set of tests to execute on P’

- Test P’ with T’

- If necessary, create T’’, a set of new tests for P’ and test P’ with T’’

XClient

ClientA ClientB

ClientC

P

Set of tests T

XClient, v2

ClientA, v2 ClientB, v2

ClientC, v2

P’

Set of tests T’, subset of T

Page 9: Ingegneria del Software II

9SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Selective Retest

1. Identify the modifications of P with P’.

2. Select T’, a subset of T, based on the result of step 1.

3. Test P’ with T’, establishing (P’)’s correctness with respect to T’.

4. If necessary, create a set of new tests T’’, to test the new, modified and untested portion of P’.

5. Test P’ with T’’, establishing (P’)’s correctness with respect to T’’.

6. The test suite for P’, thus, is T’ & T’’.

Page 10: Ingegneria del Software II

10SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

How they usually implement Regression testing» Given P, an instrumented version P1 is created to store

information on P’s execution

» P is (usually) represented as a flow graph

» Tests T are run over P1

» For each t in T, P1 stores information on the portion of code executed by running t (test history)

» P becomes P’

» The flow graph of P’ is built

» t in T will be in T’ if the portion of modified code affects t- that is, if t in the test history of P executes a portion of code

modified in P’, then t needs to be run again on P’

Provide an example

Page 11: Ingegneria del Software II

11SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Regression Test Selection Techniques

Page 12: Ingegneria del Software II

12SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

In other terms…

P code

Class x(){

m1, m2}

Class y {

m3 }

Class z {

m4}

TestSuite

Test History(obtained by code instrumentation)

The methods “reached” by executing the test cases

T1 = m1 + m3

T2 = m2+m3+m4

P’ code

Class x(){

m1’, m2}

Class y {

m3 }

Class z {

m4}

Since test T1visits method m1and m1 is changed,then test againP’ with respect toT1

T2 does not needto be re-executed

P is usually representedby a graph

Page 13: Ingegneria del Software II

13SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Regression Test Selection Techniques

Page 14: Ingegneria del Software II

14SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Regression Test Selection Techniques

» Control-Flow- Based Regression Test

- Control-Flow-Based regression test traverses corresponding paths in G and G’.

- If finds any sink of edge has been changed, then selects the tests that executed the edge in G.

» TestTube

- Based on code entities

- They maintain a function trace list produced by each test case, and expand it to entity trace list.

- To find the changes of the entities, they define that an entity consists of a sequence of tokens for each execution, and the entity considered to be changed if one of these tokens changed.

- tends to choose more tests than Control-Flow-based techniques

Page 15: Ingegneria del Software II

15SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Regression Test Selection Techniques

» Incremental Program Testing

- It uses program slicing

- If a statement in P’ have no corresponding statements in P and/or the behaviors of the same statement in P and P’ are not equivalent, then this statement should be considered to be affected

» Domain-Based Regression Testing

- a little bit different from the others

- First update domain by defining the modifications of the commandlanguages, then update test suite and select regression test suite based on the subdomains

Page 16: Ingegneria del Software II

16SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Spec-based Regression Testing

Page 17: Ingegneria del Software II

17SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Overview (not required for the exam)

» Dependent Relations

A. Firewall: (static) control dependent/ inheritance, aggregation, association… [kung95]

B. FDG: function dependent (+data members)[wu99][wu00]

C. CSIG: control + data flow (spec. + Impl.) [BeydedaGruhn]

D. DejaVu: (CFG control flow) [harrold01nov]

Page 18: Ingegneria del Software II

18SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Background

» A Safe, Efficient Regression Test Selection Technique (Gregg Rothermel, Mary Jean Harrold)

- Source code à Control Flow Graph

node: statement

edge: flow of control between statement

- Compare by edge

Page 19: Ingegneria del Software II

19SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Background» Testing of object-oriented programs based on finite state machines

(H.S. Hong)

- Source code à Class State Machine

transitions: (source, target, event, guard, action)

» Techniques for Testing Component-Based Software (Ye Wu, Dai Pan, Mei-Hwa Chen)

- Component Interaction Graph (CIG): interactions and dependence relationships among components

> Interfaces nodes: basic access, via which components are activated> Events nodes: the event from the calling interface to the called interface> Context dependence edges: similar to control flow dependence relationship> Content dependence edges: data dependence relationship (regression test for

OOP)

Page 20: Ingegneria del Software II

20SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

A. Developing an Object-Oriented Software Testing and Maintenance Environment (David Kung, Jerry Gao)

• ORD (Object Relation Diagram)

– inheritance, aggregation, association…

– Test order

• BBD (Block Branch Diagram)

– Function invocation

– Test path

• OSD (Object State Diagram)

– State behavior for object class

[kung95]

Page 21: Ingegneria del Software II

21SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

B. Regression Testing on Object-Oriented Programs (Ye Wu, Mei-Hwa Chen)

• AFDG:

– Affected Function Dependence Graph

– Affected variable / functions, function dependence relations

• FCG:

– Function Calling Graph

– Test case execution history of each test case

AFDG FCG

RTs

CFG P’

[wu99]

Page 22: Ingegneria del Software II

22SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

C. Integrating White- and Black-Box Techniques for Class-Level Regression Testing (Sami Beydeda)

• CSM: Class State Machine

• CSIG: Class Specification Implementation Graph

– Prototype: each event within transitions of CSM

– CCFG: Class Control Flow Graph (for each prototype/method)

• Method implementation graph• Method specification graph

– Data-flow: black-box testing cases

• Regression testing

– White-box: compare by node

– Black-box: by edge

CSM

Prototype

CCFG Data-flow(Def-use)

CSIG TestCases

RegressionTest cases

CSIG’

[BeydedaGruhn]

Page 23: Ingegneria del Software II

23SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

D. Using Component Metadata to Support the Regression Testing of Component-based Software (Mary Jean Harrold)» Code-based

- Metadata à branch coverage for T.

- DejaVu (CFG)

» Spec-based

- Test frame: test specification for functional unit

- Metadata à Test frame coverage for T.

- DejaVu (at least one of the paths in test frame associate changed statement)

[harrold01nov]

Page 24: Ingegneria del Software II

24SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

SA-based Regression Testing

Page 25: Ingegneria del Software II

25SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Why?

» Motivations and Goals:

- To reduce the testing effort during architecture or codemaintenance

- To handle the “architectural drift”

- To maximize benefits in using Software Architecture

Page 26: Ingegneria del Software II

26SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Why?» Because changes in P may effect only a small set of

architectural interactions, and we do not want to retest everything

» “… the use of software architecture for regression testing activities has the potential for a bigger impact on the cost of software than those techniques that focus only on development testing.” [Harrold_Rosatea98]

» “We need to develop techniques that can be applied to … the …architecture, to assist in selective retest of the software. These techniques will let us identify existing test cases that can be used to retest the software. These techniques will also let us identify those parts of the modified software for which new testcases are required.” [Harrold_FOSE2000]

Page 27: Ingegneria del Software II

27SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

SA-based Regression Testing (1/2)» Assumption:

- we have the Software Architecture,

- some architectural tests SAT,

- the P code and

- a function mapping map(SAT,P) à CTp that produces the code-level tests

- we run the CTp tests over P and evaluate the P conformance to SA

» We may change SA in SA’ or P in P’

Page 28: Ingegneria del Software II

28SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

SA-based Regression Testing [SARTE Project]

Test Reuse

Test Reuse

Test Reuse

Page 29: Ingegneria del Software II

29SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Goal 1

» Goal 1: Test Conformance of a Modified Implementation P' to the initial SA:

- Context:

> Given a software architecture specification for S, and an implementation P, we first gain confidence that P correctly implements S.

> P' modifies P: some components are modified, and/or some new components are introduced.

- Goal: Test the conformance of P' with respect to S, while reusing previous test information for selective regression testing, thereby reducing the test cases that must be retested.

Page 30: Ingegneria del Software II

30SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Goal 2

» Test Conformance of an Evolved Software Architecture

- Context:

> P correctly implements the SA S

> S is modified into S’, adding or removing components

> A modified implementation P' may have been also developed.

- Goal: Test the conformance of P (or P‘) with respect to S', while reusing previous test information for selective RT, thereby reducing the test cases that must be retested.

Page 31: Ingegneria del Software II

31SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Activity Diagram of our Sa-based Regression Testing approach

Page 32: Ingegneria del Software II

32SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Goal 1

Page 33: Ingegneria del Software II

33SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Considerations

» Differences with respect to traditional code-based RT techniques:

- the oracle in SA-based RT is the software architecture specification itself.

> In fact, when t1 is run on P', the test fails if its execution does not allow the expected behavior to be reproduced

- Moreover, code-level test cases are always driven by well formalized functional and structural architectural requirements.

Page 34: Ingegneria del Software II

34SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Advantages

» i) as in traditional RT, we reduce the size of the test suite for P', eliminating all those tests which do not need to be reapplied to P', and

» ii) when conformance faults are detected, we can gather information on how to adjust the initial architecture.

Page 35: Ingegneria del Software II

35SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Goal 2 Idea» Compare the two architectural specifications to identify

changed/unchanged portions of the SA.

» Both structural and behavioral changes are taken into account.

- In particular, the LTSs for S and S'' are compared, and differences are identified in the two graphs (using a sort of ``Diff" algorithm).

» In a fashion similar to traditional code-based RT, whenever an ATC traverses a path in the SA LTS which has been modified in the S'' LTS, then it needs to be retested in S''.

Page 36: Ingegneria del Software II

36SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Goal 2

Page 37: Ingegneria del Software II

37SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Experiment 1: Elevator System» The approach has been applied to the Elevator case study

- Architecture in the C2 style

- Implemented using the C2 framework

» Tool support:

- The SA is formally specified using the C2 specification language and FSP.

- A behavioral model of the system is automatically produced from the FSP specification, using the LTSA tool.

Page 38: Ingegneria del Software II

38SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Elevator SA

BuildingPanel

ElevatorPanel1

ElevatorADT1

ElevatorPanel1

ElevatorADT1

Scheduler

ElevatorPanel2

ElevatorADT2

BuildingPanel

Elevator SystemVersion 1

Elevator SystemVersion 2

Page 39: Ingegneria del Software II

39SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Experiment 1

- The abstraction over the LTS behavioral model is realized again in FSP.

- The mapping between architectural tests and code-level tests is provided for by the C2 Framework.

- Test cases are run over the code using the Argus-I environment.

- The selective regression testing step is supported by the DejaVOO tool.

Page 40: Ingegneria del Software II

40SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

BuildingPanel

ElevatorPanel1

ElevatorADT1

Elevator SystemVersion 1

ElevatorADT1

Architectural “Paths” (Scenarios)

BuildingPanel

addCall (x,dir)

callAttended (x)

Path #1: BP sends Call; ADT1 attends Call

ElevatorADT1ElevatorPanel1

addCall (x)

callAttended (x)

Path #2: EP1 sends Call; ADT1 attends Call

Test Cases

TC1: BP.addCall(1,up); ADT1(1,up)TC2: BP.addCall(1,up); ADT1(2,up)TC3: BP.addCall(1,up); ADT1(2,down)TC4: BP.addCall(2,up); ADT1(1,up)TC5: BP.addCall(2,up); ADT1(2,down)TC6: BP.addCall(2,up); ADT1(3,down)TC7: BP.addCall(2,down); ADT1(1,up)TC8: BP.addCall(2,down); ADT1(2,up)TC9: BP.addCall(2,down); ADT1(3,up)TC10: BP.addCall(3,down); ADT1(4,down)TC11: BP.addCall(3,down); ADT1(3,down)TC12: BP.addCall(3,down); ADT1(2,down)

TC1: EP1.addCall(1); ADT1(1,up)TC2: EP1.addCall(1); ADT1(2,up)TC3: EP1.addCall(1); ADT1(2,down)TC4: EP1.addCall(2); ADT1(1,up)TC5: EP1.addCall(2); ADT1(2,down)TC6: EP1.addCall(3); ADT1(2,down)

Architectural Paths = 2

Path #1 – Test Cases

Path #2 – Test Cases

Page 41: Ingegneria del Software II

41SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Elevator SystemVersion 2

Architectural “Paths” (Scenarios)

Test Cases

Architectural Paths = 4ElevatorPanel1

ElevatorADT1

Scheduler

ElevatorPanel2

ElevatorADT2

BuildingPanel

Path #1: BP sends Call; ADT1 attends Call

SchedulerBuildingPanel

addCall (x,dir)

callAttended (x)

ElevatorADT1 ElevatorADT2

getDistanceToCall (x,dir)

getDistanceToCall (x,dir)

distanceToCall (x,1)

distanceToCall (x,1)

addCall (x,dir)

callAttended (x)

Page 42: Ingegneria del Software II

42SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Elevator System v2 test cases

Path #3: EP1 sends Call; ADT1 attends Call

Path #4: EP2 sends Call; ADT2 attends Call(analogous to path #3)

ElevatorADT1ElevatorPanel1

addCall (x)

callAttended (x)

Path #2: BP sends Call; ADT2 attends Call

Page 43: Ingegneria del Software II

43SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

SchedulerBuildingPanel

addCall (x,dir)

callAttended (x)

ElevatorADT1 ElevatorADT2

getDistanceToCall (x,dir)

getDistanceToCall (x,dir)

distanceToCall (x,1)

distanceToCall (x,1)

addCall (x,dir)

callAttended (x)

SchedulerBuildingPanel

addCall (x,dir)

callAttended (x)

ElevatorADT1 ElevatorADT2

getDistanceToCall (x,dir)

getDistanceToCall (x,dir)

distanceToCall (x,1)

distanceToCall (x,1)

addCall (x,dir)

callAttended (x)

Elevator System - Version 1Architectural Paths = 2

Elevator System - Version 2Architectural Paths = 4 (or 3?)

Path #1: BP sends Call; ADT1 attends Call

Path #2: EP1 sends Call; ADT1 attends Call

ElevatorADT1BuildingPanel

addCall (x,dir)

callAttended (x)

ElevatorADT1BuildingPanel

addCall (x,dir)

callAttended (x)

Path #1: BP sends Call; ADT1 attends Call

ElevatorADT1ElevatorPanel1

addCall (x)

callAttended (x)

ElevatorADT1ElevatorPanel1

addCall (x)

callAttended (x)

Path #3: EP1 sends Call; ADT1 attends Call

ElevatorADT1ElevatorPanel1

addCall (x)

callAttended (x)

ElevatorADT1ElevatorPanel1

addCall (x)

callAttended (x)

Path #4: EP2 sends Call; ADT2 attends Call

Path #2: BP sends Call; ADT2 attends CallSchedulerBuildingPanel

addCall (x,dir)

callAttended (x)

ElevatorADT1 ElevatorADT2

getDistanceToCall (x,dir)

getDistanceToCall (x,dir)

distanceToCall (x,1)

distanceToCall (x,1)

addCall (x,dir)

callAttended (x)

SchedulerBuildingPanel

addCall (x,dir)

callAttended (x)

ElevatorADT1 ElevatorADT2

getDistanceToCall (x,dir)

getDistanceToCall (x,dir)

distanceToCall (x,1)

distanceToCall (x,1)

addCall (x,dir)

callAttended (x)

Don’t needto retest!

Needto retest!

Architecture-Based Regression Testing

TC1: BP.addCall(1,up); ADT1(1,up)TC2: BP.addCall(1,up); ADT1(2,up)TC3: BP.addCall(1,up); ADT1(2,down)TC4: BP.addCall(2,up); ADT1(1,up)TC5: BP.addCall(2,up); ADT1(2,down)TC6: BP.addCall(2,up); ADT1(3,down)TC7: BP.addCall(2,down); ADT1(1,up)TC8: BP.addCall(2,down); ADT1(2,up)TC9: BP.addCall(2,down); ADT1(3,up)TC10: BP.addCall(3,down); ADT1(4,down)TC11: BP.addCall(3,down); ADT1(3,down)TC12: BP.addCall(3,down); ADT1(2,down)

TC5: EP1.addCall(2); ADT1(2,down)

TC1: EP1.addCall(1); ADT1(1,up) TC2: EP1.addCall(1); ADT1(2,up)TC3: EP1.addCall(1); ADT1(2,down)TC4: EP1.addCall(2); ADT1(1,up)

TC6: EP1.addCall(3); ADT1(2,down)TC5: EP1.addCall(2); ADT1(2,down)

TC1: EP1.addCall(1); ADT1(1,up) TC2: EP1.addCall(1); ADT1(2,up)TC3: EP1.addCall(1); ADT1(2,down)TC4: EP1.addCall(2); ADT1(1,up)

TC6: EP1.addCall(3); ADT1(2,down)

Page 44: Ingegneria del Software II

44SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Experiment 2: the Cargo Router example

Page 45: Ingegneria del Software II

45SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Architecture(s) of the Cargo Router

Graphics Binding (GB)

CargoRouter(CR)

PortArtist (PA)

VehicleArtist (VA)

NextShipment (NS)

Cargo Router, Version 1

WarehouseArtist (WA)

Port(P)

Vehicle(V)

Warehouse(W)

CargoRouter2(CR2)

PortArtist2 (PA2)

VehicleArtist2 (VA2)

Translator (T)

WarehouseArtist2 (WA2)

Cargo Router, Version 2

Clock(C)

PlannerArtist(PlA)

Planner (P)Bus1

Bus2

Bus2A Bus2B

Bus3ABus3

Bus4

Bus3C

a) b)

Note: In Version2, the connection (*)is replaced with the connections (**)

(*)(**)

(**)

Page 46: Ingegneria del Software II

46SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Architectural Test Case

Page 47: Ingegneria del Software II

47SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

Related Topics

» Regression Testing

- Many many papers on code-based regression testing

- Very few (only two) papers on specification-based regression testing

» SA-level Dependence Analysis

» Code-level Dependence Analysis

» SA-based Testing

Page 48: Ingegneria del Software II

48SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

References» Mary Jean Harrold, Testing Evolving Software. Journal of Systems and

software, vol. 47, number 2-3, pp.173-181, July 1999.

» Mary Jean Harrold, Testing: A Roadmap. In Future of Software Engineering, 22nd International Conference on Software Engineering, June 2000.

» Anneliese von Mayrhauser, Richard T. Mraz, Jeff Walls, Domain Based Regression Testing. Dept. of Computer Science, Colorado State University.

» Gregg Rothermel and Mary Jean Harrold, Proc. Of the Conf. On Software Maintenance, Montreal, CA, September 1993, pages 358-367.

» Yih-Farn Chen, David S. Rosenblum and Kiem-Phong Vo, TestTube: A System for Selective Regression Testing. Software Engineering Research Department, AT&T Bell Laboratories, NJ.

» Samuel Bates and Susan Horwitz, Incremental Program Testing Using Program Dependence Graphs, University of Wisconsin-Madison.

Page 49: Ingegneria del Software II

49SEA Group

© 2005 by H. Muccini and V. Cortellessa / Ingegneria del Software IISEA Group

References (Con’t)» Todd L. Graves, Mary Jean Harrold, Jung-Min Kim, Adam

Porter and Gregg Rothermel, An Empirical Study of Regression Test Selection Techniques, ACM Transactions on Software Engineering and Methodology (to appear).

» David Binkley, The Application of Program Slicing to Regression Testing, Loyola College, Maryland.

» Mary Jean Harrold, Architecture-Based Regression Testing of Evolving Systems, The Ohio State University.