Learning objectives of this chapter: Understand rationale and basic approach for systematic combinatorial testing, learn how to apply some representative combinatorial approaches, understand key differences and similarities among the approaches. | Combinatorial testing (c) 2007 Mauro Pezzè & Michal Young Ch 11, slide 1 Learning objectives • Understand rationale and basic approach for systematic combinatorial testing • Learn how to apply some representative combinatorial approaches – Category-partition testing – Pairwise combination testing – Catalog-based testing • Understand key differences and similarities among the approaches – and application domains for which they are suited (c) 2007 Mauro Pezzè & Michal Young Ch 11, slide 2 Combinatorial testing: Basic idea • Identify distinct attributes that can be varied – In the data, environment, or configuration – Example: browser could be “IE” or “Firefox”, operating system could be “Vista”, “XP”, or “OSX” • Systematically generate combinations to be tested – Example: IE on Vista, IE on XP, Firefox on Vista, Firefox on OSX, . • Rationale: Test cases should be varied and include possible “corner cases” (c) 2007 Mauro Pezzè & Michal Young Ch 11, slide 3 Key ideas in combinatorial approaches • Category-partition testing – separate (manual) identification of values that characterize the input space from (automatic) generation of combinations for test cases • Pairwise testing – systematically test interactions among attributes of the program input space with a relatively small number of test cases • Catalog-based testing – aggregate and synthesize the experience of test designers in a particular organization or application domain, to aid in identifying attribute values (c) 2007 Mauro Pezzè & Michal Young Ch 11, slide 4 Category partition (manual steps) 1. Decompose the specification into independently testable features – for each feature identify • • parameters environment elements – for each parameter and environment element identify elementary characteristics (categories) 2. Identify relevant values – for each characteristic (category) identify (classes of) values • • • • normal values boundary values special values error values 3. .