83
Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references and other internet resources: •Ian Sommerville, Software Engineering (Seventh Edition), Addison-Wesley, 2004. •Roger Pressman, Software Engineering, A Practitioner Approach, 6th ed., McGraw Hill, 2005.

Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

  • View
    250

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 1

Software Engineering

Software Testing

The material is this presentation is based on the following references and other internet resources:

•Ian Sommerville, Software Engineering (Seventh Edition), Addison-Wesley, 2004.

•Roger Pressman, Software Engineering, A Practitioner Approach, 6th ed., McGraw Hill, 2005.

Page 2: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 2

Objectives• To discuss the distinctions between validation

testing and defect testing

• To describe the principles of system and component testing

• To describe strategies for generating system test cases

• To understand the essential characteristics of tool used for test automation

Page 3: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 3

Topics covered• System testing

• Component testing

• Test case design

• Test automation

Page 4: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 4

Testability• Operability—it operates cleanly• Observability—the results of each test case are

readily observed• Controllability—the degree to which testing can be

automated and optimized• Decomposability—testing can be targeted• Simplicity—reduce complex architecture and logic to

simplify tests• Stability—few changes are requested during testing• Understandability—of the design

Page 5: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 5

What is a “Good” Test?

• A good test has a high probability of finding an errorA good test has a high probability of finding an error

• A good test is not redundant.A good test is not redundant.

• A good test should be “best of breed” A good test should be “best of breed”

• A good test should be neither too simple nor too complexA good test should be neither too simple nor too complex

• A good test has a high probability of finding an errorA good test has a high probability of finding an error

• A good test is not redundant.A good test is not redundant.

• A good test should be “best of breed” A good test should be “best of breed”

• A good test should be neither too simple nor too complexA good test should be neither too simple nor too complex

Page 6: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 6

What Testing Shows

errors

requirements conformance

performance

an indicationof quality

Page 7: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 7

Who Tests the Software?

DeveloperUnderstands the system but, will test "gently“ and, is driven by "delivery"

independent testerMust learn about the system, but, will attempt to break it and, is driven by quality

Page 8: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 8

Testing phases

Componenttesting

Systemtesting

Software developer Independent testing team

Page 9: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 9

Testing Strategy• We begin by ‘testing-in-the-small’ and move toward ‘testing-

in-the-large’

• For conventional software

– The module (component) is our initial focus

– Integration of modules follows

• For OO software

– our focus when “testing in the small” changes from an individual module (the conventional view) to an OO class that encompasses attributes and operations and implies communication and collaboration

Page 10: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 10

Testing Strategyunit test integration

test

systemtest

validationtest

Page 11: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 11

The testing process• Component testing

– Testing of individual program components;

– Usually the responsibility of the component developer (except sometimes for critical systems);

– Tests are derived from the developer’s experience.

• System testing– Testing of groups of components integrated to create a

system or sub-system;

– The responsibility of an independent testing team;

– Tests are based on a system specification.

Page 12: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 12

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

Page 13: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 13

Testing process goals• Validation testing

– To demonstrate to the developer and the system customer that the software meets its requirements.

– A successful test shows that the system operates as intended.

• Defect testing– To discover faults or defects in the software where its

behavior is incorrect or not in conformance with its specification.

– A successful test is a test that makes the system perform incorrectly and so exposes a defect in the system.

Page 14: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 14

The software testing process

Design testcases

Prepare testdata

Run programwith test data

Compare resultsto test cases

Testcases

Testdata

Testresults

Testreports

Page 15: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 15

Testing policies• Only exhaustive testing can show a program is free

from defects. However, exhaustive testing is impossible,

• Testing policies define the approach to be used in selecting system tests:– All functions accessed through menus should be tested;

– Combinations of functions accessed through the same menu should be tested;

– Where user input is required, all functions must be tested with correct and incorrect input.

Page 16: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 16

Exhaustive Testing

loop < 20 Xloop < 20 X

Page 17: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 17

Selective Testing

loop < 20 Xloop < 20 X

Selected pathSelected path

Page 18: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 18

Component testing• Component or unit testing is the process of

testing individual components in isolation.

• It is a defect testing process.

• Components may be:– Individual functions or methods within an object;

– Object classes with several attributes and methods;

– Composite components with defined interfaces used to access their functionality.

Page 19: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 19

Unit Testing

test cases

results

Software engineer

moduleto betested

Page 20: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 20

Unit Testing

modulemoduleto beto betestedtested

Interfacelocal data structuresboundary conditionsindependent pathserror handling paths

test cases

results

Page 21: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 21

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 localised.

Page 22: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 22

Interface testing• 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.

Page 23: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 23

Interface testing

B

C

Testcases

A

Page 24: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 24

Interface types• Parameter interfaces

– Data passed from one procedure to another.

• Shared memory interfaces– Block of memory is shared between procedures or

functions.

• Procedural interfaces– Sub-system encapsulates a set of procedures to be called by

other sub-systems.

• Message passing interfaces– Sub-systems request services from other sub-systems

Page 25: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 25

Interface testing guidelines• Design tests so that parameters to a called procedure

are at the extreme ends of their ranges.

• Always test pointer parameters with null pointers.

• Design tests which cause the component to fail.

• Use stress testing in message passing systems.

• In shared memory systems, vary the order in which components are activated.

Page 26: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 26

Integration Testing Strategies

Options:• the “big bang”

approach• an incremental

construction strategy

Page 27: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 27

Integration testing• Involves building a system from its components and

testing it for problems that arise from component interactions.

• Top-down integration– Develop the skeleton of the system and populate it with

components.

• Bottom-up integration– Integrate infrastructure components then add functional

components.

• To simplify error localisation, systems should be incrementally integrated.

Page 28: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 28

Top Down Integration

AA

BB

CC

DD EE

FF GG

top module is tested with stubs

stubs are replaced one at a time, "depth first"

as new modules are integrated, some subset of tests is re-run

Page 29: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 29

Bottom-Up Integration

drivers are replaced one at atime, "depth first"

worker modules are grouped intobuilds and integrated

AA

BB

CC

DD EE

FF GG

clustercluster

Page 30: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 30

Sandwich Testing

Top modules aretested with stubs

Worker modules are grouped intobuilds and integrated

AA

BB

CC

DD EE

FF GG

cluster

Page 31: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 31

System testing• Involves integrating components to create a system or

sub-system.

• May involve testing an increment to be delivered to the customer.

• Two phases:– Integration testing - the test team have access to the system

source code. The system is tested as components are integrated.

– Release testing - the test team test the complete system to be delivered as a black-box.

Page 32: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 32

Object-Oriented Testing• begins by evaluating the correctness and consistency of the

OOA and OOD models

• testing strategy changes

– the concept of the ‘unit’ broadens due to encapsulation

– integration focuses on classes and their execution across a ‘thread’ or in the context of a usage scenario

– validation uses conventional black box methods

Page 33: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 33

OOT Strategy• class testing is the equivalent of unit testing

– operations within the class are tested– the state behavior of the class is examined

• integration applied three different strategies– thread-based testing—integrates the set of classes

required to respond to one input or event– use-based testing—integrates the set of classes

required to respond to one use case– cluster testing—integrates the set of classes

required to demonstrate one collaboration

Page 34: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 34

Incremental integration testing

T3

T2

T1

T4

T5

A

B

C

D

T2

T1

T3

T4

A

B

C

T1

T2

T3

A

B

Test sequence 1 Test sequence 2 Test sequence 3

Page 35: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 35

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.

Page 36: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 36

Black-box testing

IeInput test data

OeOutput test results

System

Inputs causinganomalousbehaviour

Outputs which revealthe presence ofdefects

Page 37: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 37

Testing guidelines• Testing guidelines are hints for the testing team to

help them choose tests that will reveal defects in the system– Choose inputs that force the system to generate all error

messages;

– Design inputs that cause buffers to overflow;

– Repeat the same input or input series several times;

– Force invalid outputs to be generated;

– Force computation results to be too large or too small.

Page 38: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 38

Use cases• Use cases can be a basis for deriving the tests

for a system. They help identify operations to be tested and help design the required test cases.

• From an associated sequence diagram, the inputs and outputs to be created for the tests can be identified.

Page 39: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 39

Test case design• Involves designing the test cases (inputs and

outputs) used to test the system.

• The goal of test case design is to create a set of tests that are effective in validation and defect testing.

• Design approaches:– Requirements-based testing;– Partition testing;– Structural testing.

Page 40: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 40

OOT—Test Case DesignBerard [BER93] proposes the following approach:

1. Each test case should be uniquely identified and should be explicitly associated with the class to be tested,

2. The purpose of the test should be stated,

3. A list of testing steps should be developed for each test and should contain [BER94]:

a list of specified states for the object that is to be tested

b. a list of messages and operations that will be exercised as a consequence of the test

c. a list of exceptions that may occur as the object is tested

d. a list of external conditions (i.e., changes in the environment external to the software that must exist in order to properly conduct the test)

e. supplementary information that will aid in understanding or implementing the test.

Page 41: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 41

Test Case Design

OBJECTIVE to uncover errors

CRITERIA in a complete manner

CONSTRAINT with a minimum of effort and time

Page 42: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 42

Requirements based testing• A general principle of requirements

engineering is that requirements should be testable.

• Requirements-based testing is a validation testing technique where you consider each requirement and derive a set of tests for that requirement.

Page 43: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 43

Software Testing

Methods

Strategies

white-boxmethods

black-box methods

Page 44: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 44

Black-Box Testing

requirementsrequirements

eventseventsinputinput

outputoutput

Page 45: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 45

Black-Box Testing• How is functional validity tested?• How is system behavior and performance tested?• What classes of input will make good test cases?• Is the system particularly sensitive to certain input

values?• How are the boundaries of a data class isolated?• What data rates and data volume can the system

tolerate?• What effect will specific combinations of data have

on system operation?

Page 46: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 46

Equivalence Partitioning

useruserqueriesqueries

mousemousepickspicks

outputoutputformatsformats

promptsprompts

FKFKinputinput

datadata

Page 47: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 47

Boundary Value Analysis

useruserqueriesqueries

mousemousepickspicks

outputoutputformatsformats

promptsprompts

FKFKinputinput

datadata

outputoutputdomaindomaininput domaininput domain

Page 48: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 48

Partition testing• 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 or domain where the program behaves in an equivalent way for each class member.

• Test cases should be chosen from each partition.

Page 49: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 49

Equivalence partitioning

System

Outputs

Invalid inputs Valid inputs

Page 50: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 50

Equivalence partitions

Between 10000 and 99999Less than 10000 More than 99999

999910000 50000

10000099999

Input values

Between 4 and 10Less than 4 More than 10

34 7

1110

Number of input values

Page 51: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 51

Search routine specificationprocedure Search (Key : ELEM ; T: SEQ of ELEM; Found : in out BOOLEAN; L: in out ELEM_INDEX) ;

Pre-condition-- the sequence has at least one elementT’FIRST <= T’LAST

Post-condition-- the element is found and is referenced by L( Found and T (L) = Key)

or -- the element is not in the array( not Found and

not (exists i, T’FIRST >= i <= T’LAST, T (i) = Key ))

Page 52: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 52

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.

Page 53: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 53

OOT Methods: Random Testing• Random testing

– identify operations applicable to a class– define constraints on their use– identify a minimum test sequence– generate a variety of random (but valid) test

sequences

Page 54: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 54

OOT Methods: Partition Testing• Partition Testing

– reduces the number of test cases required to test a class in much the same way as equivalence partitioning for conventional software

– state-based partitioning• categorize and test operations based on their ability to change the

state of a class

– attribute-based partitioning• categorize and test operations based on the attributes that they use

– category-based partitioning• categorize and test operations based on the generic function each

performs

Page 55: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 55

Sample Equivalence Classes• Valid dataValid data

– user supplied commandsuser supplied commands– responses to system promptsresponses to system prompts– file namesfile names• computational datacomputational data

• physical parametersphysical parameters• bounding valuesbounding values• initiation valuesinitiation values

• output data formattingoutput data formatting• responses to error messagesresponses to error messages• graphical data (e.g., mouse picks)graphical data (e.g., mouse picks)

• Invalid dataInvalid data– data outside bounds of the programdata outside bounds of the program– physically impossible dataphysically impossible data– proper value supplied in wrong placeproper value supplied in wrong place

Page 56: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 56

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.

• Test with sequences of zero length.

Page 57: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 57

Search routine - input partitions

Page 58: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 58

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).

Page 59: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 59

Structural testing

Componentcode

Testoutputs

Test data

DerivesTests

Page 60: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 60

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.• Input array has a single value.• Input array has an even number of values.• Input array has an odd number of values.

Page 61: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 61

Binary search equiv. partitions

Mid-point

Elements < Mid Elements > Mid

Equivalence class boundaries

Page 62: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 62

Binary search - test cases

Page 63: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 63

White-Box Testing

... our goal is to ensure that all statements and conditions havebeen executed at least once ...

Page 64: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 64

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.

Page 65: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 65

Binary search flow graph

elemArray [mid] != key

elemArray [mid] > key elemArray [mid] < key

1

2

3

4

5

6

7

8

9

14 10

11

12 13

bottom > top while bottom <= topbottom > top

elemArray[mid] = key

Page 66: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 66

Independent paths• 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 14

• 1, 2, 3, 4, 5, 14

• 1, 2, 3, 4, 5, 6, 7, 11, 12, 5, …

• 1, 2, 3, 4, 6, 7, 2, 11, 13, 5, …

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

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

Page 67: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 67

Why Cover?• logic errors and incorrect assumptions are

inversely proportional to a path's execution probability

• we often believe that a path is not likely to be executed; in fact, reality is often counter intuitive

• typographical errors are random; it's likely that untested paths will contain some

Page 68: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 68

Basis Path Testing

First, we compute the cyclomatic complexity:

or

number of enclosed areas + 1

In this case, V(G) = 4

number of simple decisions + 1

Page 69: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 69

Cyclomatic Complexity

A number of industry studies have indicated that the higher V(G), the higher the probability or errors.

V(G)V(G)

modulesmodules

modules in this range are modules in this range are more error pronemore error prone

Page 70: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 70

Basis Path Testing

Next, we derive the Next, we derive the independent paths:independent paths:

Since V(G) = 4,Since V(G) = 4,there are four pathsthere are four paths

Path 1: 1,2,3,6,7,8Path 1: 1,2,3,6,7,8Path 2: 1,2,3,5,7,8Path 2: 1,2,3,5,7,8Path 3: 1,2,4,7,8Path 3: 1,2,4,7,8Path 4: 1,2,4,7,2,4,...7,8Path 4: 1,2,4,7,2,4,...7,8

Finally, we derive testFinally, we derive testcases to exercise these cases to exercise these paths.paths.

11

22

3344

55 66

77

88

Page 71: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 71

Basis Path Testing Notes

you don't need a flow chart, you don't need a flow chart, but the picture will help when but the picture will help when you trace program pathsyou trace program paths

count each simple logical test, count each simple logical test, compound tests count as 2 or compound tests count as 2 or moremore

basis path testing should be basis path testing should be applied to critical modulesapplied to critical modules

Page 72: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 72

Control Structure Testing• Condition testing — a test case design method

that exercises the logical conditions contained in a program module

• Data flow testing — selects test paths of a program according to the locations of definitions and uses of variables in the program

Page 73: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 73

Loop Testing

Nested Nested LoopsLoops

ConcatenatedConcatenated Loops Loops Unstructured Unstructured

LoopsLoops

Simple Simple looploop

Page 74: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 74

Loop Testing: Simple Loops

• Minimum conditions—Simple LoopsMinimum conditions—Simple Loops

• skip the loop entirely

• only one pass through the loop

• two passes through the loop

• m passes through the loop m < n

• (n-1), n, and (n+1) passes through the loop

where n is the maximum number of allowable passes

Page 75: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 75

Loop Testing: Nested LoopsNested LoopsNested Loops

Start at the innermost loop. Set all outer loops to their minimum iteration parameter values.

Test the min+1, typical, max-1 and max for the innermost loop, while holding the outer loops at their minimum values.

Move out one loop and set it up as in step 2, holding all other loops at typical values. Continue this step until the outermost loop has been tested.

Page 76: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 76

Loop Testing: Nested Loops (cont.)

Concatenated Loops

If the loops are independent of one another

then treat each as a simple loop

else* treat as nested loops

endif*

Page 77: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 77

Release testing• The process of testing a release of a system that will

be distributed to customers.

• Primary goal is to increase the supplier’s confidence that the system meets its requirements.

• Release testing is usually black-box or functional testing– Based on the system specification only;

– Testers do not have knowledge of the system implementation.

Page 78: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 78

Performance testing• Part of release testing may involve testing the

emergent properties of a system, such as performance and reliability.

• Performance tests usually involve planning a series of tests where the load is steadily increased until the system performance becomes unacceptable.

Page 79: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 79

Stress testing• Exercises the system beyond its maximum design

load. Stressing the system often causes defects to come to light.

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

• Stress testing is particularly relevant to distributed systems that can exhibit severe degradation as a network becomes overloaded.

Page 80: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 80

Test automation• Testing is an expensive process phase. Testing

workbenches provide a range of tools to reduce the time required and total testing costs.

• Systems such as Junit support the automatic execution of tests.

• Most testing workbenches are open systems because testing needs are organisation-specific.

• They are sometimes difficult to integrate with closed design and analysis workbenches.

Page 81: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 81

A testing workbench

Dynamicanalyser

Programbeing tested

Test resultsTest

predictions

Filecomparator

Executionreport

Simulator

Sourcecode

Testmanager

Test data Oracle

Test datagenerator

Specification

Reportgenerator

Test resultsreport

Page 82: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 82

Key points• Testing can show the presence of faults in a system; it

cannot prove there are no remaining faults.

• Component developers are responsible for component testing; system testing is the responsibility of a separate team.

• Integration testing is testing increments of the system; release testing involves testing a system to be released to a customer.

• Use experience and guidelines to design test cases in defect testing.

Page 83: Software Engineering Software Testing Slide 1 Software Engineering Software Testing The material is this presentation is based on the following references

Software Engineering Software Testing Slide 83

Key points• Interface testing is designed to discover defects in the

interfaces of composite components.

• Equivalence partitioning is a way of discovering test cases - all cases in a partition should behave in the same way.

• Structural analysis relies on analysing a program and deriving tests from this analysis.

• Test automation reduces testing costs by supporting the test process with a range of software tools.