Inputs and outputs are grouped into partitions containing similar values. Unit tests are written to cover at least one value from each partition.