Defect testing Testing programs to establish the presence of system defects 

advertisement

Defect testing

Testing programs to establish the presence of system defects

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 1

The testing process

Component testing

Integration testing

• Includes integration of subsystems, of systems, acceptance testing

In OO development, boundary is less clear

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 4

20.1 Defect testing

The goal of defect testing is to discover defects in programs

A successful defect test is a test which causes a program to behave in an anomalous way

Tests show the presence not the absence of defects

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 6

The defect testing process

Design test cases

Test cases

Prepare test data

Test data

Run program with test data

Test results

Compare results to test cases

Test reports

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 7

Black-box testing

An approach to testing where the program is considered as a ‘black-box’

The program test cases are based on the system specification

Test planning (developing test cases) can begin early in the software process

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 10

Equivalence partitioning

Input data and output results often fall into different classes where all members of a class are related

Each of these classes is an equivalence partition where the program behaves in an equivalent way for each class member

Test cases should be chosen from each partition

Slide 12 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20

E.g. Equivalence partitioning

Partition system inputs and outputs into

‘equivalence sets’

• If input is a 5-digit integer between 10,000 and 99,999, equivalence partitions are <10,000, 10,000-99, 999 and >

100, 000

Choose test cases around the midpoint of partitions and at the boundary of these sets

• 5000,50000,150000

• 00000, 09999, 10000, 99999, 100000

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 14

Equivalence partitions

3

4 7 10

11

Less than 4 Between 4 and 10

Number of input values

9999

10000 50000

More than 10

100000

99999

Less than 10000

Input values

©Ian Sommerville 2000

Between 10000 and 99999 More than 99999

Software Engineering, 6th edition. Chapter 20 Slide 15

Search routine - input partitions

Inputs which conform to the pre-conditions

Inputs where a pre-condition does not hold

Inputs where the key element is a member of the array

Inputs where the key element is not a member of the array

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 17

Other Testing guidelines

(sequences)

Test software with sequences which have only a single value

Use sequences of different sizes in different tests

Derive tests so that the first, middle and last elements of the sequence are accessed

Spec doesn’t say that the sequence is ordered, so don’t assume that it is

Slide 18 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20

Search routine - input partitions

Array

Single value

Single value

More than 1 value

More than 1 value

More than 1 value

More than 1 value

Eleme nt

In sequence

Not in sequence

First element in sequence

Last element in sequence

Middle eleme nt in sequence

Not in sequence

Inp ut sequence (

T

)

17

17

17, 29, 21, 23

41, 18, 9, 31, 30, 16, 45

17, 18, 21, 23, 29, 41, 38

21, 23, 29, 33, 38

©Ian Sommerville 2000

Key (

Key

) Output (

Found, L

)

17

0

17

45

23

25 true, 1 false, ??

true, 1 true, 7 true, 4 false, ??

Software Engineering, 6th edition. Chapter 20 Slide 19

Structural testing

Sometime called white-box testing

Derivation of test cases according to program structure. Knowledge of the program is used to identify additional test cases

Objective is to exercise all program statements

(not all path combinations)

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 20

class BinSearch {

// This is an encapsulation of a binary s earch function that takes an array of

// ordered objects and a key a nd returns an object with 2 attributes namely

// index - the value of the array index

// found - a boolean indicating whether or not the key is in the array

// An object is returned because it is not possible in J ava to pass bas ic types by

// reference to a function and so return two values

// the key is -1 if the element is not found

{ public static void search ( int key, i nt [] elemArray, Result r ) int bottom = 0 ; int top = elemArray.length - 1 ; int mid ; r.found = fals e ; r.index = -1 ;

{ while ( bottom <= top )

{ mid = (top + bottom) / 2 ; if (elemArray [mid] == key) r.index = mid ; r.found = true ; return ;

} // if part

{ else if (elemArray [mid] < key) bottom = mid + 1 ; else top = mid - 1 ;

} // s earch

} //BinSearch

}

} //while loop

Binary search (Java)

Binary search equiv. partitions

Equivalence class boundaries

Elements < Mid Elements > Mid

Mid-point

Slide 23 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20

Binary search - equiv. partitions

Pre-conditions satisfied, key element in array

Pre-conditions satisfied, key element not in array

Pre-conditions unsatisfied, key element in array

Pre-conditions unsatisfied, key element not in array

Key found in center, top, or bottom

Input array has a single value

Input array has an even number of values

Input array has an odd number of values

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 24

Path testing

The objective of path testing is to ensure that the set of test cases is such that each path through the program is executed at least once

The starting point for path testing is a program flow graph that shows nodes representing program decisions and arcs representing the flow of control

Statements with conditions are therefore nodes in the flow graph

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 26

bottom > top

8

9

1 while bottom <= top

2

3 if (elemArray [mid] == key

4

5

(if (elemArray [mid]< key

6

7

Binary search flow graph

Cyclomatic complexity

The number of tests to test all control statements equals the cyclomatic complexity

Cyclomatic complexity equals number of conditions in a program + 1

Useful if used with care. Does not imply adequacy of testing.

Although all paths are executed, all combinations of paths are not executed

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 29

Independent paths

Test cases should be derived so that all of these paths are executed

1, 2, 3, 8, 9

1, 2, 3, 4, 6, 7, 2, 8, 9

1, 2, 3, 4, 5, 7, 2, 8, 9

A dynamic program analyser may be used to check that paths have been executed

Slide 30 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20

Integration testing

Tests complete systems or subsystems composed of integrated components

Integration testing should be black-box testing with tests derived from the specification

Main difficulty is localizing errors

Incremental integration testing reduces this problem

Slide 31 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20

Incremental integration testing

A

T1

A

T1

A B

T2

T2 B

T3

B C

T3

C

T4

D

Test sequence

1

©Ian Sommerville 2000

Test sequence

2

Software Engineering, 6th edition. Chapter 20

T1

T2

T3

T4

T5

Test sequence

3

Slide 32

Approaches to integration testing

Top-down testing

Bottom-up testing

In practice, most integration involves a combination of these strategies

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 33

Top-down testing

Level 1

Testing sequence

Level 2

Le vel 2 stubs

Level 1

Level 2 Le vel 2

Le vel 3 stubs

Level 2

. . .

Slide 34 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20

Bottom-up testing

Test drivers

Level N Level N Le vel N Level N Level N

Testing sequence

Test drivers

Level N–1 Level N–1 Level N–1

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 35

Comparing Testing approaches

Architectural validation

• Top-down integration testing is better at discovering errors in the system architecture

System demonstration

• Top-down integration testing allows a limited demonstration at an early stage in the development

Test implementation

• Often easier with bottom-up integration testing

Test observation

• Problems with both approaches. Extra code may be required to observe tests

Bottom up fits well with OO development!

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 36

Interface testing

Takes place when modules or sub-systems are integrated to create larger systems

Objectives are to detect faults due to interface errors or invalid assumptions about interfaces

Particularly important for object-oriented development as objects are defined by their interfaces

Slide 37 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20

Interface testing

Test cases

©Ian Sommerville 2000

A B

C

Software Engineering, 6th edition. Chapter 20 Slide 38

Common Interface errors

Interface misuse

Interface misunderstanding

Timing errors

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 40

Stress testing

Exercises the system up to and beyond its maximum design load.

Stressing the system often causes defects to come to light

Stressing the system tests failure behaviour. Systems should not fail catastrophically. Stress testing checks for unacceptable loss of service or data

Particularly relevant to distributed systems which can exhibit severe degradation as a network becomes overloaded

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 42

20.3 Object-oriented testing

The components to be tested are object classes that are instantiated as objects

Larger grain than individual functions

No obvious ‘top’ to the system for top-down integration and testing

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 43

Testing levels

Testing operations associated with objects

Testing object classes

Testing clusters of cooperating objects

Testing the complete OO system

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 44

Object class testing

Complete test coverage of a class involves

• Testing all operations associated with an object

• Setting and interrogating all object attributes

• Exercising the object in all possible states

Inheritance makes it more difficult to design object class tests as the information to be tested is not localized

Slide 45 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20

Weather station object interface

WeatherStation identifier reportWeather () calibrate (instruments) test () startup (instruments) shutdown (instruments)

Test cases are needed for all operations

Use a state model to identify state transitions for testing

Examples of testing sequences

• Shutdown  Waiting  Shutdown

• Waiting  Calibrating  Testing 

Transmitting  Waiting

• Waiting  Collecting  Waiting 

Summarising  Transmitting  Waiting

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 46

Weather station state diagram

Shutdown startup () shutdown ()

Operation

Waiting calibrate () test ()

Calibrating

Testing calibration OK transmission done test complete clock

Collecting collection done

Transmitting reportWeather ()

Summarising weather summary complete

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 47

Object integration

Levels of integration are less distinct in objectoriented systems

Cluster testing is concerned with integrating and testing clusters of cooperating objects

Identify clusters using knowledge of the operation of objects and the system features that are implemented by these clusters

Slide 48 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20

Approaches to cluster testing

Use-case or scenario testing

Thread testing

Object interaction testing

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 49

Scenario-based testing

Identify scenarios from use-cases and supplement these with interaction (sequence) diagrams that show the objects involved in the scenario

Consider the scenario in the weather station system where a report is generated …

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 50

Collect weather data

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 51

20.4 Testing workbenches

Testing is an expensive process phase. Testing workbenches provide a range of tools to reduce the time required and total testing costs

Most testing workbenches are open systems because testing needs are organization-specific – need tools to be adaptable to your organization and project

Difficult to integrate your project with closed design and analysis workbenches

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 53

A testing workbench

Test data generator

Source code

Dynamic analyser

Test manager

Program being tested

Test data

Test results

Specification

Oracle

Test predictions

Execution report

©Ian Sommerville 2000

Simulator

File comparator

Report generator

Software Engineering, 6th edition. Chapter 20

Test results report

Slide 54

Download