4. Subdomains

The input space is divided into regions usually called subdomains, each containing a set of inputs. The subdomains together exhaust the input space – that is, every input is in at least one subdomain. The criterion used here is that there be at least one test case from each subdomain.

The intuition behind subdomains is two-fold:

  1. It’s an easy way (at least conceptually) to determine if a test suite is good enough.

  2. We hope that by requiring a case from each subdomain, we will drive testing into regions of the input space most likely to find bugs

In the best case, a subdomain is revealing: This means that every test case in it either causes the program to fail or to succeed.

In practice, it’s very hard to get revealing subdomains. But by careful choice of subdomains it’s possible to have at least some subdomains whose error rate – the proportion of inputs that lead to bad outputs – is much higher than the average error rate for the input space as a whole.