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:

  1. Identification of categories
  2. Partitioning each category into choices
  3. Creating test frames as selection of choices
  4. Creating test cases

Steps

  1. Decompose the specification into functional units that can be independently tested
  2. Examine each functional unit to identify parameters and environmental conditions
  3. Find categories for each parameter & environmental condition (OS, array sizes, browsers, etc)
  4. Subdivide categories further into choices in the same way that we do equivalence partitioning (this is just what values a category can be)
  5. Determine constraints among the choices
    1. How do they interact, and how does the occurrence of one choice affect the existence of another. Are there any restrictions
    2. We also rule out conditions that cause an error, or categories that can be adequately tested with one test case
    3. This reduces the total amount of frames so we don’t have a ton of frames
  6. Create test frames (which are a set of choices, one from each category for all allowable combinations of choices)
  7. 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)