Systematic, specification-based methodology that uses an informal functional specification to produce a formal test specification.
Integrates Equivalence Testing, Boundary Value Analysis, and adds a few refinements.
Consists of:
- Identification of categories
- Partitioning each category into choices
- Creating test frames as selection of choices
- Creating test cases
Steps
- Decompose the specification into functional units that can be independently tested
- Examine each functional unit to identify parameters and environmental conditions
- Find categories for each parameter & environmental condition (OS, array sizes, browsers, etc)
- Subdivide categories further into choices in the same way that we do equivalence partitioning (this is just what values a category can be)
- Determine constraints among the choices
- How do they interact, and how does the occurrence of one choice affect the existence of another. Are there any restrictions
- We also rule out conditions that cause an error, or categories that can be adequately tested with one test case
- This reduces the total amount of frames so we don’t have a ton of frames
- Create test frames (which are a set of choices, one from each category for all allowable combinations of choices)
- Create test cases
Using Choices
All combinations
- One value for every choice of every parameter must be used with one value of every possible choices of every other category Each choice
- This is a weaker criterion, one value from each choice for each category must be used at least in one test case Base choice
- This is a compromise, a base choice is chosen for each category to from the first base test
- Subsequent tests are chosen by holding all but one base choice constant and forming choice combinations by covering all non-base choices of the selected category (seems to be one category)
- Then repeat for each category The point of all this is to reduce the total amount of tests (since tests are expensive)