0% found this document useful (0 votes)
175 views32 pages

Module14-Integration Testing

Integration testing involves testing interfaces and interactions between separately tested units. There are several approaches to integration testing, including functional decomposition, call graph, and path-based testing. Functional decomposition breaks the system into independent task units in a hierarchy. Call graph-based testing uses the graph of calls between units. Approaches include pair-wise and neighborhood testing. Path-based testing focuses on interactions between units rather than just interfaces.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
175 views32 pages

Module14-Integration Testing

Integration testing involves testing interfaces and interactions between separately tested units. There are several approaches to integration testing, including functional decomposition, call graph, and path-based testing. Functional decomposition breaks the system into independent task units in a hierarchy. Call graph-based testing uses the graph of calls between units. Approaches include pair-wise and neighborhood testing. Path-based testing focuses on interactions between units rather than just interfaces.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 32

Integration Testing

Beyond unit testing


Testing in the V-Model
Requirements Acceptance
Customer test
Developer
Architectural System test
Design

Detailed Integration test


Design Functional
(BB)
Module Structural
Unit test (WB)
implementation

2
Testing stages
 Unit testing
 Testing of individual components
 Integration testing
 Testing to expose problems arising from the combination
of components
 System testing
 Testing the complete system prior to delivery
 Acceptance testing
 Testing by users to check that the system satisfies
requirements. Sometimes called alpha testing

3
Layered Tests

http://www-128.ibm.com/developerworks/java/library/j-aopwork11/
4
Integration Testing
 Testing the interfaces and interactions
among separately tested units
 Three different approaches
 Based on functional decomposition
 Based on call graph
 Based on paths

5
Functional Decomposition
 Functional Decomposition is defined as a
method in which a problem is broken up into
several independent task units, or functions,
which can be run either sequentially and in a
synchronous call-reply manner or
simultaneously on different processors
 This method is used during planning, analysis
and design, and creates a functional
hierarchy for the software

6
Example functional decomposition
Functional Decomposition of the SATM System

A 10 B C

D E 11 12 13 14 15 16 17 F 22

2 3 4 5 6 7 8 9 18 19 20 21 23 24 25 26 27

Table 1: SATM Units and Abbreviated Names Unit Level Unit Nam
Unit Level Unit Name B 1.3 Terminal Sense & Control
1 1 SATM System 14 1.3.1 Screen Driver
A 1.1 Device Sense & Control 7
15 1.3.2 Key Sensor
Top-Down Integration
 Top-down integration strategy focuses on
testing the top layer or the controlling
subsystem first (i.e. the main, or the root of
the call tree)
 The general process in top-down integration
strategy is to gradually add more subsystems
that are referenced/required by the already
tested subsystems when testing the
application
 Do this until all subsystems are incorporated
into the test
8
Top-Down Integration
 Special code is needed to do the testing
 Test stub
 A program or a method that simulates the
input-output functionality of a missing
subsystem by answering to the
decomposition sequence of the calling
subsystem and returning back simulated
data

9
Top-Down Integration

Top Subtree
(Sessions 1-4)

Second Level Subtree


(Sessions 12-15)

Botom Level Subtree


(Sessions 38-42)
Top-Down Integration Issues
 Writing stubs can be difficult especially when
parameter passing is complex. Stubs must
allow all possible conditions to be tested
 Possibly a very large number of stubs may be
required, especially if the lowest level of the
system contains many functional units
 One solution to avoid too many stubs:
Modified top-down testing strategy
 Test each layer of the system decomposition
individually before merging the layers
 Disadvantage of modified top-down testing: Both,
11
stubs and drivers are needed
Bottom-Up Integration
 Bottom-Up integration strategy focuses on
testing the units at the lowest levels first
 Gradually includes the subsystems that
reference/require the previously tested
subsystems
 This is done repeatedly until all subsystems
are included in the testing
 Special driver code is needed to do the
testing
 The driver is a “fake” routine that requires a
subsystem and passes a test case to it
12
Bottom-Up Integration

Bottom Level Subtree


(Sessions 13-17)

Second Level Subtree


(Sessions 25-28)

Top Subtree
(Sessions 29-32)
Bottom-Up Integration Issues
 Not optimal strategy for functionally
decomposed systems:
 Tests the most important subsystem (UI) last
 More useful for integrating object-oriented
systems
 Drivers may be more complicated than stubs
 Less drivers than stubs are typically required

14
Sandwich Integration
 Combines top-down strategy with
bottom-up strategy
 Less stub and driver development effort
 Added difficulty in fault isolation

15
Sandwich Integration
Call Graph-Based Integration
 The basic idea is to use the call graph instead
of the decomposition tree

 The call graph is a directed, labeled graph

 Two types of call graph based integration


testing
 Pair-wise Integration Testing
 Neighborhood Integration Testing

17
Call Graph of the SATM System
5
1
7

20

21 22

9 16

4
10

13
12

11 17 18 19 23
24

26
27 25

6 8 2 3
14 15
Pair-Wise Integration
 The idea behind Pair-Wise integration testing
is to eliminate the need for developing
stubs/drivers
 The objective is to use actual code instead of
stubs/drivers
 In order not to deteriorate the process to a
big-bang strategy, we restrict a testing
session to just a pair of units in the call graph
 The result is that we have one integration
test session for each edge in the call graph
19
Some Pair-wise Integration Sessions
5
1
7

20

21 22

9 16

4
10

12 13

11 17 18 19 23
24

26
27 25

6 8 2 3
14 15
Neighbourhood Integration
 We define the neighbourhood of a node in a
graph to be the set of nodes that are one
edge away from the given node
 In a directed graph means all the immediate
predecessor nodes and all the immediate
successor nodes of a given node
 Neighborhood Integration Testing reduces the
number of test sessions
 Fault isolation is harder

21
Two Neighborhood Integration Sessions
5
1
7

20

21 22

9 16

4
10

13
12

11 17 18 19 23
24

26
27 25

6 8 2 3
14 15
Pros and Cons of Call-Graph
Integration
 Call graph based integration techniques move
towards a behavioral basis
 Aim to eliminate / reduce the need for
drivers/stubs
 Closer to a build sequence
 Neighborhoods can be combined to create
“villages”
 Suffer from the fault isolation problem
especially for large neighborhoods
 Nodes can appear in several neighborhoods
23
Path-Based Integration
 The basic motivation is to combine structural
and behavioral type of testing for integration
testing as we did for unit testing
 The basic idea is to focus on interactions
among system units rather than merely to
test interfaces among separately developed
and tested units
 In this respect, interface-based testing is
structural while interaction-based is
behavioral
24
Extended Concepts (1)
 Source node:
 a program statement fragment at which program
execution begins or resumes.
 for example the first “begin” statement in a
program.
 also, immediately after nodes that transfer control
to other units.
 Sink node:
 a statement fragment at which program execution
terminates.
 the final “end” in a program as well as statements
that transfer control to other units.
25
Extended Concepts (2)
 Module execution path:
 a sequence of statements that begins with a
source node and ends with a sink node with no
intervening sink nodes.
 Message:
 a programming language mechanism by which
one unit transfers control to another unit.
 usually interpreted as subroutine invocations
 the unit which receives the message always
eventually returns control to the message source.

26
MM-Paths
 MM-Path:
 an interleaved sequence of module
execution paths and messages.
 we can describe sequences of module
execution paths that include transfers of
control among separate units.
 MM-paths always represent feasible
execution paths, and these paths cross unit
boundaries.

27
MM-Path Example
4
1 A B 1 C
1

3 2
2 3
2
3 4
3 4

5
4 5
6

In module A nodes 1 and 5 are source nodes while


nodes 4 and 6 are sink nodes.
<1,2,4> and <1,2,3,6> are module execution paths
An MM-path is shown in bold
28
Module execution paths

 The complete list of module execution


paths:

MEP(A,1) = <1,2,3,6> MEP(B,1) = <1,2>


MEP(A,2) = <1,2,4> MEP(B,2) = <3,4>
MEP(A,3) = <5,6> MEP(C,1) = <1,2,4,5>
MEP(C,2) = <1,3,4,5>

29
MM-Path Graph
 Given a set of units their MM-Path graph is
the directed graph in which
 nodes are module execution paths
 edges correspond to messages and returns from
one unit to another
 The definition is with respect to a set of units
 It directly supports composition of units and
composition-based integration testing

30
MM-Path Graph Example
MEP(A,2)

MEP(B,1)

MEP(A,1) MEP(C,1)

MEP(B,2)
MEP(C,2)
MEP(A,3)

The MM-Path graph for our example.


The solid arrows indicate messages and the corresponding
returns are indicated by dotted arrows.
31
Pros and cons of path-based
integration
 Path-based integration is closely
coupled with actual system behaviour
 There is a significant effort involved in
identifying MM-Paths
 No need for stub and driver
development

32

You might also like