Learning objectives • Understand the basic principles undelying A&T techniques • Grasp the motivations and applicability of the Basic Principles main principles (c) 2007 Mauro Pezzè & Michal Young Ch 3, slide 1 (c) 2007 Mauro Pezzè & Michal Young Ch 3, slide 2 Sensitivity: better to fail every time Main A&T Principles than sometimes • General engineering principles: • Consistency helps: – Partition: divide and conquer – a test selection criterion works better if every selected test provides the same result, i.e., if the – Visibility: making information accessible program fails with one of the selected tests, it fails – Feedback: tuning the development process with all of them (reliable criteria) • Specific A&T principles: – run time deadlock analysis works better if it is – Sensitivity: better to fail every time than sometimes machine independent, i.e., if the program deadlocks – Redundancy: making intentions explicit when analyzed on one machine, it deadlocks on every machine – Restriction: making the problem easier (c) 2007 Mauro Pezzè & Michal Young Ch 3, slide 3 (c) 2007 Mauro Pezzè & Michal Young Ch 3, slide 4
Redundancy: making intentions explicit Partition: divide and conquer • Hard testing and verification problems can be • Redundant checks can increase the capabilities of catching specific faults early or more handled by suitably partitioning the input efficiently. space: – Static type checking is redundant with respect to – both structural and functional test selection criteria dynamic type checking, but it can reveal many type identify suitable partitions of code or specifications mismatches earlier and more efficiently. (partitions drive the sampling of the input space) – Validation of requirement specifications is – verification techniques fold the input space redundant with respect to validation of the final according to specific characteristics, grouping software, but can reveal errors earlier and more homogeneous data together and determining efficiently. partitions – Testing and proof of properties are redundant, but are often used together to increase confidence (c) 2007 Mauro Pezzè & Michal Young Ch 3, slide 5 (c) 2007 Mauro Pezzè & Michal Young Ch 3, slide 6 Restriction: making the problem easier Visibility: Judging status • The ability to measure progress or status • Suitable restrictions can reduce hard (unsolvable) problems to simpler (solvable) against goals problems • X visibility = ability to judge how we are doing on X, e.g., schedule visibility = “Are we ahead or behind schedule,” – A weaker spec may be easier to check: it is quality visibility = “Does quality meet our objectives?” impossible (in general) to show that pointers are – Involves setting goals that can be assessed at each used correctly, but the simple Java requirement that pointers are initialized before use is simple to stage of development enforce. • The biggest challenge is early assessment, e.g., assessing – A stronger spec may be easier to check: it is specifications and design with respect to product quality impossible (in general) to show that type errors do • Related to observability not occur at run-time in a dynamically typed – Example: Choosing a simple or standard internal language, but statically typed languages impose data format to facilitate unit testing stronger restrictions that are easily checkable. (c) 2007 Mauro Pezzè & Michal Young Ch 3, slide 7 (c) 2007 Mauro Pezzè & Michal Young Ch 3, slide 8
Feedback: tuning the development Summary process • The discipline of test and analysis is • Learning from experience: Each project characterized by 6 main principles: provides information to improve the next – Sensitivity: better to fail every time than sometimes • Examples – Redundancy: making intentions explicit – Checklists are built on the basis of errors revealed in – Restriction: making the problem easier the past – Partition: divide and conquer – Error taxonomies can help in building better test – Visibility: making information accessible selection criteria – Feedback: tuning the development process – Design guidelines can avoid common pitfalls • They can be used to understand andvantages and limits of different approaches and compare different techniques (c) 2007 Mauro Pezzè & Michal Young Ch 3, slide 9 (c) 2007 Mauro Pezzè & Michal Young Ch 3, slide 10
Recommend
More recommend