Input Domain Testing

Input domain testing applies black-box techniques to systematically select test inputs based on specifications, without access to source code. These techniques partition the vast input space into manageable, meaningful subsets.


What is Input Domain Testing?

The input domain is the set of all possible inputs to a program. For most systems, exhaustive testing is impossible—even a simple function with two 32-bit integers has over 18 quintillion combinations.

Input domain testing addresses this by:

  • Partitioning inputs into equivalence classes
  • Focusing on boundaries where faults cluster
  • Systematically combining conditions and parameters

“The assumption is that inputs that belong to the same sub-domain trigger similar behaviour, and therefore it is sufficient to select one input from each sub-domain.” [1]


The Positive Test Bias Problem

Research by Teasley et al. [2] revealed a critical insight:

Testers naturally gravitate toward inputs they expect to work.

Experiment findings:

  • Group rewarded for finding bugs → found significantly more bugs
  • Group penalized for false alarms → missed many real faults
Mindset Outcome
“Prove it works” Misses edge cases
“Find where it breaks” Better fault detection

Implication: Negative testing (invalid inputs) must be explicitly planned—it won’t happen naturally.


Core Techniques

flowchart LR
    subgraph "Input Domain Techniques"
        EP["Equivalence<br>Partitioning"]
        BVA["Boundary Value<br>Analysis"]
        DT["Decision<br>Tables"]
        CTM["Classification<br>Tree Method"]
        CT["Combinatorial<br>Testing"]
    end

    SPEC[Specification] --> EP
    EP --> BVA
    EP --> DT
    EP --> CTM
    CTM --> CT
    DT --> CT
    BVA --> TC[Test Cases]
    DT --> TC
    CT --> TC
    CTM --> TC

Equivalence Partitioning

Divide inputs into classes where all values behave similarly:

  • Weak EP: One test per partition (single-fault assumption)
  • Strong EP: All partition combinations (interaction testing)
  • Category-Partition Method: Systematic 6-step process

Boundary Value Analysis

Test at partition boundaries where faults cluster:

  • ON/OFF points: Formal boundary testing strategy
  • Fault types: Closure, shift, tilt, missing, extra
  • Formulas: 4k+1 basic, 6k+1 robust

Decision Tables

Systematically test condition combinations:

  • 8-step method: Beizer’s systematic process
  • Consolidation: Reduce tests with don’t-care values
  • Checksum verification: Ensure completeness

Classification Tree Method

Systematic test design using graphical trees and combination tables:

  • Tree notation: Composition (“consists of”) and classification (“is a kind of”) nodes
  • Combination table: Direct, visual test case specification
  • Constraint handling: Dependency rules for eliminating infeasible combinations

Combining Techniques

Integrate techniques for comprehensive coverage:

  • 90% finding: Most faults from 1-2 way interactions
  • Selection guide: Match technique to problem type
  • Integration pattern: EP → BVA → DT → Combinatorial

Technique Selection Guide

Situation Primary Technique Why
Discrete input categories Equivalence Partitioning Groups similar behaviors
Numeric ranges with boundaries Boundary Value Analysis Faults cluster at edges
Multiple conditions → actions Decision Tables Forces complete coverage
Many parameters, interactions Combinatorial Testing Catches interaction faults
Hierarchical parameters, many aspects Classification Tree Method Visual tree structure, constraint handling
Complex business logic EP + DT combination Partitions + rule coverage

Key Statistics

90%</div>

of faults from 1-2 way interactions</div>

4k+1</div>

BVA tests for k variables</div>

6-way</div>

maximum interaction ever observed</div>


Integration with Other Testing

Input domain testing complements structural (white-box) coverage:

Approach Focus Finds
Input Domain (Black-box) What should be tested Missing functionality
Code Coverage (White-box) What has been tested Unexecuted code

Best practice: Use input domain techniques to design tests, then measure structural coverage to find gaps.


Topics in This Section


Further Reading


References

  1. P. Ammann and J. Offutt, Introduction to Software Testing, 2nd ed. Cambridge University Press, 2016.
  2. B. Teasley, L. M. Leventhal, C. R. Mynatt, and D. S. Rohlman, “Why Software Testing is Sometimes Ineffective: Two Applied Studies of Positive Test Strategy,” Journal of Applied Psychology, vol. 79, no. 1, pp. 142–155, 1994.

Disclaimer: AI is used for text summarization, polishing and explaining. Authors have verified all facts and claims. In case of an error, feel free to file an issue.


Table of contents


This site uses Just the Docs, a documentation theme for Jekyll.