35
Barbara Russo SwSE - Software and Systems Engineering Research Group 1 Basic Principles of analysis and testing software

Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

Barbara RussoSwSE - Software and Systems Engineering Research Group

1

Basic Principles of analysis and testing software

Page 2: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

2

Basic principles of analysis and testing

Page 3: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

3

Sensitivity

Page 4: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

4

Sensitivity

Page 5: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

5

Example in Java

Page 6: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

6

Example in Java

Page 7: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

7

Fail fast

Page 8: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

8

Two scenarios

Page 9: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

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

Page 10: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

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

Page 11: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

11

Fail safe

Page 12: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

12

Fail safe

Page 13: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

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

Page 14: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

14

Output

Page 15: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

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

Page 16: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

16

Other examples in testing

Page 17: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

17

Redundancy

Page 18: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

18

Redundancy

Page 19: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

19

Examples

Page 20: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

20

Restriction

Page 21: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

21

Substituting principle

Page 22: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

22

Examples

Page 23: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

24

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

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

} }

}

Example

Page 24: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

25

Example

Page 25: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

26

Example

Page 26: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

27

Partition

Page 27: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

28

Example

Page 28: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

29

Example

Page 29: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

30

userqueries

numericaldata

output format requests

responsesto prompts

command key input

mouse picks on menuPartitioning is basedon input conditions

Equivalence partitioning

Page 30: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

32

Visibility

Page 31: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

33

Models

Page 32: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

34

Control Flow Graphs

Page 33: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

35

Feedback

Page 34: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

36

Examples

Page 35: Basic Principles of analysis and testing softwarerusso/SRT/Testing/04.BasicPrinciplesTestin… · 2 • As in any engineering discipline, techniques of software analysis and testing

37

Examples