Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
OO Integration Testing
Chapter 18
IOO–2
What assumption is made for integration testing?
IOO–3
What assumption is made for integration testing? Assume unit level testing is complete
IOO–4
What choices are there for unit testing?
IOO–5
What choices are there for unit testing? For OO have two choices for unit
What are they?
IOO–6
What choices are there for unit testing? For OO have two choices for unit
Method is a unit Class is a unit
IOO–7
What does integration testing entail? If method is a unit?
???
IOO–8
What does integration testing entail? If method is a unit?
Need to integrate within the class Why?
IOO–9
What does integration testing entail? If method is a unit?
Need to integrate within the class Occurs with classes that have multiple designers /
implementers
IOO–10
What does integration testing entail? If method is a unit?
Need to integrate within the class Does occur with classes that have multiple
designers / implementers What else?
IOO–11
What does integration testing entail? If method is a unit?
Need to integrate within the class Does occur with classes that have multiple
designers / implementers Need to integrate classes
IOO–12
What does integration testing entail? If class is a unit?
???
IOO–13
What does integration testing entail? If class is a unit?
Need to un-flatten classes
IOO–14
What does integration testing entail? If class is a unit?
Need to un-flatten classes What else?
IOO–15
What does integration testing entail? If class is a unit?
Need to un-flatten classes Need to remove test methods
What else?
IOO–16
What does integration testing entail? If class is a unit?
Need to un-flatten classes Need to remove test methods Need to integrate classes
IOO–17
What considerations are there with integrationtesting?
IOO–18
What considerations are there with integrationtesting? Static considerations
IOO–19
What considerations are there with integrationtesting? Static considerations
What else?
IOO–20
What considerations are there with integrationtesting? Static considerations Dynamic considerations
IOO–21
What information do we need for staticconsiderations?
IOO–22
What information do we need for staticconsiderations? Class definitions
IOO–23
What information do we need for staticconsiderations? Class definitions
Where are they?
IOO–24
What information do we need for staticconsiderations? Class definitions
Program text
IOO–25
What information do we need for staticconsiderations? Class definitions
Program text What else?
IOO–26
What information do we need for staticconsiderations? Class definitions
Program text Static model
IOO–27
What information do we need for staticconsiderations? Class definitions
Program text Static model
Consists of what?
IOO–28
What information do we need for staticconsiderations? Class definitions
Program text Static model
Inheritance and uses structure
IOO–29
What tests do we base on static considerations?
IOO–30
What tests do we base on static considerations? Address polymorphism statically
IOO–31
What tests do we base on static considerations? Address polymorphism statically
What do we do?
IOO–32
What tests do we base on static considerations? Address polymorphism statically
Select a test for each polymorphic context
IOO–33
What information do we need for dynamicconsiderations? Dynamic view is more challenging
IOO–34
What information do we need for staticconsiderations? Dynamic model
IOO–35
What information do we need for staticconsiderations? Dynamic model
Consists of what?
IOO–36
What information do we need for staticconsiderations? Dynamic model
Finite state machines – Petri nets
IOO–37
What information do we need for staticconsiderations? Dynamic model
Finite state machines – Petri nets What else?
IOO–38
What information do we need for staticconsiderations? Dynamic model
Finite state machines – Petri nets Class communication – message passing
IOO–39
What information do we need for staticconsiderations? Dynamic model
Finite state machines – Petri nets Class communication – message passing
What else?
IOO–40
What information do we need for staticconsiderations? Dynamic model
Finite state machines – Petri nets Class communication – message passing Use cases – scenarios
What else?
IOO–41
What information do we need for staticconsiderations? Dynamic model
Finite state machines – Petri nets Class communication – message passing Use cases – scenarios
Statecharts – are not useful
IOO–42
How do we show class communications?
IOO–43
How do we show class communications? Collaboration diagrams
IOO–44
How do we show class communications? Collaboration diagrams
What else?
IOO–45
How do we show class communications? Collaboration diagrams Sequence diagrams
IOO–46
What are collaboration diagrams?
IOO–47
What are collaboration diagrams? Annotated call graphs – Figure 18.1
IOO–48
What are collaboration diagrams? Annotated call graphs – Figure 18.1
What types of integration do they support?
IOO–49
How do we show class communications? Collaboration diagrams
Annotated call graph – Figure 18.1 Supports
Pair-wise integration strategy Neighbourhood integration strategy
IOO–50
What are sequence diagrams?
IOO–51
What are sequence diagrams? Finite state machines with time axis – Figure 18.2
IOO–52
What are sequence diagrams? Finite state machines with time axis – Figure 18.2
What are the states?
IOO–53
What are sequence diagrams? Finite state machines with time axis – Figure 18.2
States Classes – regular grain Methods – fine grain
IOO–54
What are sequence diagrams? Finite state machines with time axis – Figure 18.2
States Classes – regular grain Methods – fine grain
What are the transitions?
IOO–55
What are sequence diagrams? Finite state machines with time axis – Figure 18.2
States Classes – regular grain Methods – fine grain
Transitions correspond to sending messages What are they analogous to?
IOO–56
What are sequence diagrams? Finite state machines with time axis – Figure 18.2
States Classes – regular grain Methods – fine grain
Transitions correspond to sending messages Close analogy with MM-paths
IOO–57
What types of integration strategies are there?
IOO–58
What types of integration strategies are there? Pair-wise
Figure 13.6
Neighbourhood Figure 13.7
IOO–59
What is the problem with pair-wise integration?
IOO–60
What is the problem with pair-wise integration? Too much extra work with stubs and drivers
IOO–61
What is the problem with neighbourhoodintegration?
IOO–62
What is the problem with neighbourhoodintegration? Some neighbourhoods may include most classes
Some neighbourhoods may be only two classes
See Figure 18.1
IOO–63
What is the problem with neighbourhoodintegration? Some neighbourhoods may include most classes Some neighbourhoods may be only two classes What do we do?
IOO–64
What is the problem with neighbourhoodintegration? Some neighbourhoods may include most classes Some neighbourhoods may be only two classes What do we do?
Get a better definition
IOO–65
What is a better definition than a neighbourhood?
IOO–66
What is a better definition than a neighbourhood? Centers of a graph
Ultra-center
IOO–67
What is a better definition than a neighbourhood? Centers of a graph
Ultra-center What properties does an ultra-center have?
IOO–68
What is a better definition than a neighbourhood? Centers of a graph
Ultra-center Minimize maximum distance to other nodes Neighbourhood grows from an ultra-center Analogy with ripples from dropping an object into
water
IOO–69
What is a better definition than a neighbourhood? Centers of a graph
Ultra-center Minimize maximum distance to other nodes Neighbourhood grows from an ultra-center Analogy with ripples from dropping an object into
water What are the advantages / disadvantages?
IOO–70
What is a better definition than a neighbourhood? Centers of a graph
Ultra-center Minimize maximum distance to other nodes Neighbourhood grows from an ultra-center Analogy with ripples from dropping an object into
water What are the advantages / disadvantages?
Less stubs Less diagnostic precision
IOO–71
What is an MM-path in OO?
IOO–72
What is an MM-path in OO? A sequence of method executions linked by messages
IOO–73
What is an MM-path in OO? A sequence of method executions linked by messages
How is an execution path constructed?
IOO–74
What is an MM-path in OO? A sequence of method executions linked by messages
Start at any class by sending a message Keep going until message quiescence is reached End at return from original message
IOO–75
What is an MM-path in OO? A sequence of method executions linked by messages
Start at any class by sending a message Keep going until message quiescence is reached
What is this? End at return from original message
IOO–76
What is an MM-path in OO? A sequence of method executions linked by messages
Start at any class by sending a message Keep going until message quiescence is reached
At a class that does not send any messages End at return from original message
See Figures 18.3, 18.4, 18.5
IOO–77
What is the highest integration level?
IOO–78
What is the highest integration level? Classes that implement an atomic system function
IOO–79
What is an atomic system function?
IOO–80
What is an atomic system function? An MM-path
Stimulus / response pair of port-level events
IOO–81
What is an atomic system function? An MM-path
Stimulus / response pair of port-level events What does it begin and end with?
IOO–82
What is an atomic system function? An MM-path
Stimulus / response pair of port-level events Begins with an input port event
Event quiescence Ends with an output port event
Event quiescence
IOO–83
What good are atomic system functions?
IOO–84
What good are atomic system functions? Addresses event-driven nature of OO programs
At the boundary of integration and system testing
IOO–85
Why do we use directed graphs?
IOO–86
Why do we use directed graphs? Directed graph makes it possible to be analytical in
choosing test cases
IOO–87
OO-calendar analysis
How many test cases are there?
IOO–88
OO-calendar analysis
How many test cases are there? Cyclomatic complexity is 23
IOO–89
OO-calendar analysis
How many test cases are there? Cyclomatic complexity is 23
Implies 23 basis paths to test Can we do better?
IOO–90
OO-calendar analysis
How many test cases are there? Cyclomatic complexity is 23
Implies 23 basis paths to test
Lower bound could be 3 test cases
IOO–91
OO-calendar analysis
How many test cases are there? Cyclomatic complexity is 23
Implies 23 basis paths to test
Lower bound could be 3 test cases What are they?
IOO–92
OO-calendar analysis
How many test cases are there? Cyclomatic complexity is 23
Implies 23 basis paths to test
Lower bound could be 3 test cases Start at each of the three statements in routine
testIt
IOO–93
OO-calendar analysis
How many test cases are there? Cyclomatic complexity is 23
Implies 23 basis paths to test
Lower bound could be 3 test cases Start at each of the three statements in routine
testIt What is the problem?
IOO–94
OO-calendar analysis
How many test cases are there? Cyclomatic complexity is 23
Implies 23 basis paths to test
Lower bound could be 3 test cases Start at each of the three statements in routine
testIt What is the problem?
Depends upon choice of test cases, which could missleap year related cases
IOO–95
OO-calendar analysis
Depends upon choice of test cases, which could missleap year related cases
What do we need to do?
IOO–96
OO-calendar analysis
Depends upon choice of test cases, which could missleap year related cases
Need to cover every message
IOO–97
OO-calendar analysis
Depends upon choice of test cases, which could missleap year related cases
Need to cover every message
What is a good way to do this?
IOO–98
OO-calendar analysis
OO-calendar analysis Depends upon choice of test cases, which could miss
leap year related cases Need to cover every message What is a good way to do this?
The test cases identified in decision table testing(Table 7.16) would give a good integration testsuite
Look for test cases to cover every message inFigure 18.3
IOO–99
Are MM-paths sufficient?
IOO–100
Data flow testing
Are MM-paths sufficient? Like DD-paths, they are insufficient
IOO–101
Data flow testing
Are MM-paths sufficient? Like DD-paths, they are insufficient
Why?
IOO–102
Data flow testing
Are MM-paths sufficient? Like DD-paths, they are insufficient Data values add complexity
IOO–103
Data flow testing
Are MM-paths sufficient? Like DD-paths, they are insufficient Data values add complexity
From where does the complexity come?
IOO–104
Data flow testing
Are MM-paths sufficient? Like DD-paths, they are insufficient Data values add complexity
Come from inheritance Come from stages of message passing
IOO–105
Data flow testing
Are MM-paths sufficient? Like DD-paths, they are insufficient Data values add complexity
Come from inheritance Come from stages of message passing
What else?
IOO–106
Data flow testing
Are MM-paths sufficient? Like DD-paths, they are insufficient Data values add complexity
Come from inheritance Come from stages of message passing
Program graphs are basis but are too simple What do we need?
IOO–107
Data flow testing
Are MM-paths sufficient? Like DD-paths, they are insufficient Data values add complexity
Come from inheritance Come from stages of message passing
Program graphs are basis but are too simple Need event and message driven Petri nets
IOO–108
Event & Message driven Petri nets (EMDPN)
P – set of port events input output
D – set of data places
M – message send/return places Output for sender Input for receiver
IOO–109
EMDPN – 2
T – set of transitions Represent a method execution path
In – set of edges to transitions (P ∪ D ∪ M) ↔ T
It is a relation between places and transitions If deterministic then it is a function from places to
transitions
Out – set of edges from transitions T ↔ (P ∪ D ∪ M)
IOO–110
Message send/receive places
Capture notion of inter-object messages They are a sink of a method execution path in the
sending object They are a source to a method execution path in the
receiving object The return is a sink of a method execution path in the
receiving object The return is a source to a method execution path in
the sending object
See Figures 18.7
IOO–111
DU-paths
Define / use paths Focus on connectivity Ignore types of nodes
IOO–112
Inheritance-induced data flow
Begin with a data place
End with a data place
Data places alternate with isA transitions isA transitions are degenerate execution paths
Implement inheritance
See Figure 18.8
IOO–113
Message-induced data flow
Set of transitions Start with defining transition
Variable is defined in the module execution path End with use transition
Variable is used in the module execution path
Can be definition clear or not definition clear
See Figure 18.9&
Section 18.3.3 for an example path
IOO–114
Slices
Useful if executable Difficult to do in OO environment
Can be used for desk checking for fault location