Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2...

Preview:

Citation preview

Barbara RussoSwSE - Software and Systems Engineering Research Group

1

Basic Principles of analysis and testing software

2

Basic principles of analysis and testing

3

Sensitivity

4

Sensitivity

5

Example in Java

6

Example in Java

7

Fail fast

8

Two scenarios

9

/* import what you need*/public class FailFastExample{

public static void main(String[] args){Map<String,String> premiumPhone = new HashMap<String,String>();premiumPhone.put("Apple", "iPhone");premiumPhone.put("HTC", "HTC one");premiumPhone.put("Samsung","S5");Iterator iterator = premiumPhone.keySet().iterator();while (iterator.hasNext()){

System.out.println(premiumPhone.get(iterator.next()));premiumPhone.put("Sony", "Xperia Z");

}} }

Example

10

iPhone Exception in thread "main" java.util.ConcurrentModificationException

at java.util.HashMap$HashIterator.nextEntry(Unknown Source)at java.util.HashMap$KeyIterator.next(Unknown Source)at FailFastExample.main(FailFastExample.java:xx)

Output

11

Fail safe

12

Fail safe

13

/* import what you need*/public class FailSafeExample{

public static void main(String[] args{ ConcurrentHashMap<String,String> premiumPhone = new

ConcurrentHashMap<String,String>();premiumPhone.put("Apple", "iPhone");premiumPhone.put("HTC", "HTC one");premiumPhone.put("Samsung","S5");Iterator iterator = premiumPhone.keySet().iterator();while (iterator.hasNext()) {

System.out.println(premiumPhone.get(iterator.next()));premiumPhone.put("Sony", "Xperia Z"); }

}

Example

14

Output

15

Differences

Fail Fast Iterator Fail Safe Iterator

Throw ConcurrentModification Exception

Yes No

Clone object No Yes

Memory Overhead No Yes

Examples HashMap,Vector,ArrayList,HashSet

CopyOnWriteArrayList,ConcurrentHashMap

16

Other examples in testing

17

Redundancy

18

Redundancy

19

Examples

20

Restriction

21

Substituting principle

22

Examples

24

static void questionable(){int k; for(int i=0; i<10;i++){

if(someCondition(i)){ k=0;

} }

}

Example

25

Example

26

Example

27

Partition

28

Example

29

Example

30

userqueries

numericaldata

output format requests

responsesto prompts

command key input

mouse picks on menuPartitioning is basedon input conditions

Equivalence partitioning

32

Visibility

33

Models

34

Control Flow Graphs

35

Feedback

36

Examples

37

Examples

Recommended