Web: assisted with templates and printing Advanced Software Engineering: Software Testing COMP...

56
Web: http://www.megadatasys.com assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3) Sada Narayanappa Anneliese Andrews Thomas Thelin Carina Andersson

Transcript of Web: assisted with templates and printing Advanced Software Engineering: Software Testing COMP...

Page 1: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Web: http://www.megadatasys.com assisted with templates and printing

Advanced Software Engineering: Software TestingCOMP 3705(L3)

Sada Narayanappa

Anneliese Andrews Thomas Thelin

Carina Andersson

Page 2: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 2

Lecture Chapter 10 (Lab 3)

– Software inspections– Fault content estimation

Chapter 5 (Lab 4)– White-box testing techniques

Page 3: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 3

Definitions

•Software•Source code•All related artifacts – design docs etc.

•Testing •Revealing defects •Dynamic - Execution•Static - Reviews

Page 4: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 4

Why Review? Main objective

– Detect faults Other objectives

– Inform– Educate– Learn from (others) mistakes

Faults affect software quality negatively

Page 5: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 5

Types of Reviews Formal/Informal Technical/Managerial When does it occur

– Colleague ask the other– Formally

Types– Inspection– Walkthrough

Benefits of Reviews:

• Increased productivity

• Higher customer satisfaction

• Teaching tool for junior staff

• Identification of reusable assets

Page 6: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 6

What to inspect?

Implementation

Analysis &Requirements

Design Integration & Function test

System Test

Inspection

Inspection

Inspection

Inspection

Page 7: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 7

Relative cost of faults

1-2

5

10

Maintenance 200

20

50

Source: Davis, A.M., “Software Requirements: analysis and specification”, 1990

Page 8: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 8

How did it start?

Fagan inspections (IBM, early 1970’s, Checklist) Phases

– Overview, Preparation, Meeting, Rework, Follow-upFault searching at meeting! – Synergy

Roles– Author (designer), reader (coder), tester, moderator

Classification– Major and minor

Page 9: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 9

How did it start? Fagan 1976

– Inspections detected 82% of the faults– Unit testing detected 18% of the faults– Productivity was increased by 23%

Page 10: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 10

Getting the best from inspections The author

– How do you react?– ”… is in the hot seat”

The development team– Better prepared – Feedback– Communication

Page 11: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 11

Getting the best from inspections The inspection team

– Critical thinking– Ability to detect omissions– Who should participate in inspections?

Cost-effective verification– Minimising cost of correction– Is it cost-effective?

Page 12: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 12

Inspections Objective/Goals:

– Detect faults– Collect data– Communicate information

Roles– Moderator– Reviewers (Inspectors)– Presenter– Author

Elements– Planned, structural meeting– Preparation important– Team – 3-6 people

Disadvantages– Short-term cost

Attentions to:– Quality– Adherence to standards– Testability – Traceability– Anything else ….?

Page 13: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 13

Walkthroughs Objective/Goals:

– Detect faults– Become familiar with the product

Roles– Presenter (author)– Reviewers (Inspectors)

Elements– Planned meeting– Team – 2-7 people– Brainstorm

Disadvantage– Find fewer faults

Page 14: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 14

Cognitive View Process

– Comprehension – overview or preparation– Fault searching – preparation or meeting

Inexperienced reviewers– Concrete representation (syntax)

Experienced reviewers– Abstract representation (semantic)– Load less detailed information

Page 15: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 15

Reading Techniques– Ad hoc– Checklist– Active Design Review– Defect-based reading– Perspective-based reading– Usage-based reading

Page 16: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 16

Active design review Active design review (1990)

– Forces reviewers to actively inspect– Question-based

e.g. how can this be implemented

Page 17: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 17

Defect-based Reading

Page 18: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 18

Perspective-based Reading

Scenarios Purpose

– Decrease overlap– Improved effectiveness

Designer

Tester

User

Page 19: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 19

Usage-Based Reading

Model of usage

Design

Page 20: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 20

Inspection Techniques N-fold inspections (1993)

– N independent groups inspect the document– Small groups

Phased inspections (1985)– Two or several inspection sessions– With or without fault correction in-between

Page 21: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 21

Inspection Techniques Stepwise abstraction (1982)

– Code– Decompose the code to subprograms– Each subprogram perform one function

Usability inspections– Focus on end user

e.g. can learn, availability, can understand– Several sub-techniques

e.g. Cognitive walk-through

Page 22: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 22

Inspections

Estimation

Estimation

Individual inspection Meeti

ng

Page 23: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 23

Capture-recapture

Page 24: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 24

Capture - Recapture

Page 25: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 25

Presenting the Information

Diagram with N, D, N-D, Reviewer data

2

0

2

6

3

2

1

Reviewer 1

0

5

10

15

20

25

N D N-D R1 R2 R3

Overlap Diagram

^

^ ^

^

89

5

Reviewer 2

Reviewer 3

Page 26: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 26

Capture-Recapture Models Degree of freedom

– Models – Estimators

Four basic models used for inspections Prerequisites for all models

– All reviewers work independently of each other– It is not allowed to inject or remove faults during inspection

Page 27: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 27

Prerequisites

Model 1, M0Reviewer 1

Reviewer 2

Reviewer 3 Detection probabilities

Fault number

Model 3, MtReviewer 1

Reviewer 2

Reviewer 3 Detection probabilities

Fault number

Model 2, MhReviewer 1

Reviewer 2

Reviewer 3 Detection probabilities

Fault number

Model 4, MthReviewer 1

Reviewer 2

Reviewer 3 Detection probabilities

Fault number

Page 28: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 28

Testing Approaches

requirements

input

events

output

Black Box Testing White Box Testing

Page 29: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 29

There are many possible paths!

loop < 20x

If-then-else

Selective Testing

Exhaustive testing

Page 30: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 30

a selected path

Control flow Control flow testingtesting

Data flow testingData flow testing

Loop testingLoop testing

Fault-based testingFault-based testing

Selective:Selective:

Selective testing

Page 31: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 31

Control flow – coverage

Statement coverage

Decision coverage

Condition coverage

Decision/condition coverage

Multiple condition coverage

1 Each statement is executed at least once Y Y Y Y Y

2 Each decision takes on all possible outcomes at least once

Y Y Y

3 Each condition in a decision takes on all possible outcomes at least once

Y Y Y

4 All possible combinations of condition outcomes in each decision occur at least once

Y

Page 32: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 32

Statement coverage Execute each statement at least once

Tools are used to monitor execution

Requirement may be:

– no dead code

Page 33: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 33

Decision/Branch coverage McCabe cyclomatic

The number of independent paths needed

to cover all paths at least once in a program Count number of conditional expressions.

If compound conditional expressions,add one per compound item.

Visualize by drawing a flow graph

Alternative way: CC = #(edges) - #(nodes) +2 if-then-else

while-loop

case-of

Page 34: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 34

McCabe cyclomaticControl complexity vs Data complexity, an example:

case A is when "One"=> :=1; when "Two"=> :=2; when "Three"=> :=3; when "Four"=> :=4; when "Five"=> :=5;end Case

CC = 5

Strings : array (1..4) of STRING:= ("One","Two","Three","Four","Five"); i:=1; loop exit when Strings(i)=A; i:=i+1;

end loop;

CC = 2

Page 35: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 35

Test all possible conditions in a program A condition in a program may contain:

– Boolean operators and variables– Relational operators– Arithmetic expressions– ….

Condition Coverage

Page 36: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 36

Decision / Condition coverage

Decision

1. A = 2; B = 300 (True)

2. A = 12; B = 300 (False)

Condition (Decision/Condition)

1. A = 2; B = 300 (True)

2. A = 12; B = 200 (False)

Multiple condition

1. A = 2; B = 200 (False)

2. A = 12; B = 200 (False)

3. A = 2; B = 300 (True)

4. A=12; B=300 (True)

If A<10 and B>250 then …

Page 37: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 37

Example (Decision coverage)

void f() {if(count > 10){ fixed_count = fixed_count + count; done = 1;} else if(count >5){ fixed_count --;

} else { fixed_count = count * 4;}

}

void f() {if(count > 10){ fixed_count = fixed_count + count; done = 1;} else if(count >5){ fixed_count --;

} else { fixed_count = count * 4;}

}

11

22

33

88

44

55 66

77

Page 38: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 38

Flow Graph

11

22

33

88

44

55 66

77

if(count > 10)

void f()

fixed_count = fixed_count + count;done = 1;

if(count >5)

fixed_count --;

fixed_count = count * 4;

return;

Page 39: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 39

11

22

33

88

44

55 66

77

Decision Coverage Independent paths:

(a) 1, 2, 3, 8

(b) 1, 2, 4, 6, 7, 8

(c) 1, 2, 4, 5, 7, 8 Test cases:

(a) count 13

(b) count 8

(c) count 2

Page 40: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 40

Example programThe liability procedure:procedure liability (age, sex, married, premium);begin premium := 500; if ((age < 25) and (sex = male) and (not married)) then premium := premium + 1500; else begin if (married or (sex = female)) then premium := premium – 200; if ((age > 45) and (age < 65)) then premium := premium – 100; end;end;

Page 41: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 41

Statement coverage

There are only two statements in this program, and any combinationof inputs will provide coverage for both statements.

Different definitions!!!

Statement coverage Age Sex Married Test case

Page 42: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 42

Decision/Branch coverage

Decision coverage

Age Sex Married

Test case

IF-1 < 25 Male False (1) 23 M F

IF-1 < 25 Female False (2) 23 F F

IF-2 * Female * (2)

IF-2 >= 25 Male False (3) 50 M F

IF-3 <= 45 Female * (2)

IF-3 > 45, < 65 * * (3)

Page 43: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 43

Condition coverageDecision

coverageAge Sex Marrie

dTest

case

IF-1 < 25 Female False (1) 23 F F

IF-1 >= 25 Male True (2) 30 M T

IF-2 * Male True (2)

IF-2 * Female False (1)

IF-3 <= 45 * * (1)

IF-3 > 45 * * (3) 70 F F

IF-3 < 65 * * (2)

IF-3 >= 65 * * (3)

Page 44: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 44

Data Flow Testing Identifies paths in the program that go from the assignment of a value to a

variable to the use of such variable, to make sure that the variable is properly used.

Definitions– Def – assigned or changed– Uses – utilized (not changed)

Computation: (c-use) e.g. right-hand side of an assignment, an index of an array, parameter of a function.

Predicate: (p-use) branching the execution flow, e.g. in an if statement, while statement, for statement.

Example: All def-use paths (DU) requires that each DU chain is covered at least once Goal is to cover all Def-Use Paths

Page 45: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 45

Data Flow Testing – Example

[1] void k() {[2] x = 11;[3] if (p(cond1)) {[4] y = x + 1;[5] } else if (q(cond2)) {[6] w = x + 3;[7] } else {[8] w = y + 1;[9] }[10]}

[1] void k() {[2] x = 11;[3] if (p(cond1)) {[4] y = x + 1;[5] } else if (q(cond2)) {[6] w = x + 3;[7] } else {[8] w = y + 1;[9] }[10]}

Considering x, there are two DU paths:

(a) [2]-[4](b) [2]-[6]

We need therefore to derive test cases to match the following conditions:

(a) k() is executed and p(cond1) is true

(b) k() is executed and p(cond1) is false and q(cond2) is true

Page 46: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 46

simple loop

nested loops

concatenated loops

unstructured loops

Loop testing

Page 47: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 47

Loop testing: simple loops

Minimum conditions - simple loops1. skip the loop entirely2. only one pass through the loop3. two passes through the loop4. m passes through the loop m < n5. (n-1), n, and (n+1) passes through the loop

where n is the maximum number of allowable passes

Page 48: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 48

Nested loops Extend simple loop testing Reduce the number of tests:

– start at the innermost loop; set all other loops to minimum values– conduct simple loop test; add out of range or excluded values– work outwards while keeping inner nested loops to typicaltypical values– continue until all loops have been tested

Page 49: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 49

Concatenated loops Same strategies as simple loops if the loops counters are

independent Same strategies as nested loops if the loops counters depend on

each other:

int k;for (k=0;k<10;k++k=0;k<10;k++) {

w();if p(m) break;

}for (;k<10;k++;k<10;k++) {

r();}

Page 50: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 50

Mutation testing (fault-based testing)

A method for evaluation of testing effectiveness1. Mutate the program using the mutation operators

2. Run test suite on mutants

3. Obtain statistics on live and dead mutants

4. Create more test cases and iterate 2-4 until sufficient number of mutants are killed

Page 51: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 51

Example mutation operators Relational operator replacement Logical operator replacement Arithmetic operator replacement Unary operator removal/insertion Comparable constant replacement Comparable variable replacement Comparable array replacement

Page 52: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 52

Examplenbrs = new int[range]

public int max(int[] a) {

int imax := 0;

for (int i = 1; i < range; i++)

if a[i] > a[imax]

imax:= i;

return imax;

}

a[0] a[1] a[2]

TC1 1 2 3

TC2 1 3 2

TC3 3 1 2

Page 53: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 53

Relational operator mutantnbrs = new int[range]

public int max(int[] a) {

int imax := 0;

for (int i = 1; i < range; i++)

if a[i] >= a[imax]

imax:= i;

return imax;

}

a[0] a[1] a[2]

TC1 1 2 3

TC2 1 3 2

TC3 3 1 2

Changed From:

a[i] > a[imax]

Page 54: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 54

Variable operator mutantnbrs = new int[range]

public int max(int[] a) {

int imax := 0;

for (int i = 1; i < range; i++)

if i > a[imax]

imax:= i;

return imax;

}

a[0] a[1] a[2]

TC1 1 2 3

TC2 1 3 2

TC3 3 1 2

Changed From:

a[i] > a[imax]

Page 55: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 55

Variable operator mutantnbrs = new int[range]

public int max(int[] a) {

int imax := 0;

for (int i = 0; i < range; i++)

if a[i] > a[imax]

imax:= i;

return imax;

}

a[0] a[1] a[2]

TC1 1 2 3

TC2 1 3 2

TC3 3 1 2

Changed From:

i = 1

Page 56: Web:  assisted with templates and printing Advanced Software Engineering: Software Testing COMP 3705(L3)

Advanced Software Engineering 56

Why is white-box testing not enough? Missing features

– Missing code Timing and concurrency issues Different states of the software

– Astronomical amount of different paths through the software– Different paths can reveal different defects

Variations of input conditions Variations of data Qualities

– Performance– Robustness– Reliability– Usability– …