Boundary Value Testing is based on the idea that - Bugs are more likely to occur at the “boundaries” of input ranges than in the middle.

Boundary Value Weak test design uses the following inputs

  • Minimum (min)
  • Just above minimum (min+)
  • A nominal value (nom, a typical or middle value within the valid range)
  • Just below maximum (max-)
  • Maximum (max)

Knowledge in Assumptions of Blackbox Testing is required.

Basic types of boundary value test

Equivalence partitioning can be applied with different assumptions based on whether fault interaction is expected and whether invalid inputs are possible.

NormalRobust
Weak(best case)
Strong(worst case)
  • Weak Normal: Best case
    • Weak: No interactions between parameters
    • Normal: Only valid input values are considered, you are not dealing with complex invalid input
  • Strong Robust: Worst case
    • Strong: Interactions between parameters
    • Robust: You have to consider invalid inputs

Single parameter weak normal boundary value

In this test case design, we assume:

  • Weak: Each parameter is independent, only one input value causes bug at a time
  • Normal: Only valid value is tested

Say we have a single parameter x1, which is valid in some range [a, b] . That is, a ≤ x1 ≤ b. So, we will have the following values for x1.

  • min: a
  • min+: a+1 (or with smallest delta, a + delta)
  • nom: a < nom < b
  • max-: b-1(or with smallest delta b - delta)
  • max: b

For example:

a = 10
b = 20
So, valid range: 10 ≤ x1 ≤ 20

Test inputs to use:

LabelValueExplanation
min10Lower boundary
min+11Just above lower boundary
nominal15A mid-range value (a < nom < b)
max-19Just below upper boundary
max20Upper boundary

Single parameter weak robust boundary value

In this test case design, we assume:

  • Weak: Each parameter is independent, only one input value causes bug at a time
  • Robust: Invalid value exists

In this case, invalid values are allowed, so we have to test values out of bound

  • min-: a-1 (or with smallest delta, a - delta)
  • min: a
  • min+: a+1 (or with smallest delta, a + delta)
  • nom: a < nom < b
  • max-: b-1(or with smallest delta b - delta)
  • max: b
  • max+: b+1 (or with smallest delta b + delta)

Two parameter weak normal boundary value

In this test case design, we assume:

  • Weak: Only one input causes a fault at a time, so we only vary one parameter at a time, and keep the other at a nominal value.
  • Normal: All inputs are valid

Let’s say the function takes two inputs: x1 and x2, where:

  • 10 ≤ x1 ≤ 20
  • 100 ≤ x2 ≤ 200 We only vary one parameter at a time (test boundary value of each input independently), while holding the other input at its nominal (typical) value. We choose:
  • For x1: min = 10, min+ = 11, nom = 15, max- = 19, max = 20
  • For x2: min = 100, min+ = 101, nom = 150, max- = 199, max = 200 Step 1: Hold x2 at nominal (150), vary x1 across boundaries
Testx1x2Notes
110150min
211150min+
315150nom
419150max-
520150max+
Step 2: Hold x1 at nominal (15), vary x2 across boundaries
Testx1x2Notes
615100min
715101min+
815150nom
915199max-
1015200max+

Two parameter weak robust boundary value

In this test case design, we assume:

  • Weak: Only one input causes a fault at a time, so we only vary one parameter at a time, and keep the other at a nominal value.
  • Robust: Invalid value exists, in addition to valid boundary values

Similar to previous test case design, let’s say the function takes two inputs: x1 and x2, where:

  • 10 ≤ x1 ≤ 20
  • 100 ≤ x2 ≤ 200

This time, we test both valid and invalid boundary values for each parameter individually, while keeping the other parameter at a valid nominal value. We choose:

  • For x1: invalid below min = 9, min = 10, min+ = 11, nom = 15, max- = 19, max = 20, invalid above max = 21
  • For x2: invalid below min = 99, min = 100, min+ = 101, nom = 150, max- = 199, max = 200, invalid above max = 201

Step 1: Hold x2 at nominal (150), vary x1

Testx1x2Notes
19150Invalid (below min)
210150Valid (min)
311150Valid (min+)
415150Valid (nom)
519150Valid (max-)
620150Valid (max)
721150Invalid (above max)
Step 2: Hold x1 at nominal (15), vary x2
Testx1x2Notes
81599Invalid (below min)
915100Valid (min)
1015101Valid (min+)
1115150Valid (nom)
1215199Valid (max-)
1315200Valid (max)
1415201Invalid (above max)

Two parameter strong normal boundary value

  • Strong: All combinations of boundary values are tested together. That means we vary both parameters simultaneously at their boundary value.
  • Normal: Only valid values are used (no invalid inputs).

Input ranges:

  • x1: 10 ≤ x1 ≤ 20
  • x2: 100 ≤ x2 ≤ 200

We use only valid boundary values for both parameters:

  • For x1: min = 10, min+ = 11, nom = 15, max- = 19, max = 20
  • For x2: min = 100, min+ = 101, nom = 150, max- = 199, max = 200

We then test all combinations of the boundary values of x1 and x2 together.

Testx1x2Notes
110100Both at minimum
210101x1 at min, x2 at min+
310150x1 at min, x2 at nom
410199x1 at min, x2 at max-
510200x1 at min, x2 at max
611100x1 at min+, x2 at min
711101x1 at min+, x2 at min+
811150x1 at min+, x2 at nom
911199x1 at min+, x2 at max-
1011200x1 at min+, x2 at max
1115100x1 at nom, x2 at min
1215101x1 at nom, x2 at min+
1315150x1 and x2 both at nom
1415199x1 at nom, x2 at max-
1515200x1 at nom, x2 at max
1619100x1 at max-, x2 at min
1719101x1 at max-, x2 at min+
1819150x1 at max-, x2 at nom
1919199x1 at max-, x2 at max-
2019200x1 at max-, x2 at max
2120100x1 at max, x2 at min
2220101x1 at max, x2 at min+
2320150x1 at max, x2 at nom
2420199x1 at max, x2 at max-
2520200Both at maximum

Two parameter strong robust boundary value

  • Strong: All combinations of boundary values are tested together. That means we vary both parameters simultaneously at their boundary value.
  • Robust: Includes invalid values beyond the defined valid range.

Input Ranges:

  • x1: 10 ≤ x1 ≤ 20

  • x2: 100 ≤ x2 ≤ 200

  • For x1: invalid below min = 9, min = 10, min+ = 11, nom = 15, max- = 19, max = 20, invalid above max = 21

  • For x2: invalid below min = 99, min = 100, min+ = 101, nom = 150, max- = 199, max = 200, invalid above max = 201

Testx1x2Notes
1999Both invalid (below min)
29100x1 invalid, x2 at min
39101x1 invalid, x2 at min+
49150x1 invalid, x2 at nom
59199x1 invalid, x2 at max-
69200x1 invalid, x2 at max
79201x1 invalid, x2 invalid (above max)
81099x1 at min, x2 invalid
910100Both at min
1010101x1 at min, x2 at min+
1110150x1 at min, x2 at nom
1210199x1 at min, x2 at max-
1310200x1 at min, x2 at max
1410201x1 at min, x2 invalid
151199x1 at min+, x2 invalid
1611100x1 at min+, x2 at min
1711101Both valid (min+, min+)
1811150Valid (min+, nom)
1911199Valid (min+, max-)
2011200Valid (min+, max)
2111201x1 valid, x2 invalid
221599x1 at nom, x2 invalid
2315100x1 at nom, x2 at min
2415101x1 at nom, x2 at min+
2515150Both nominal
2615199x1 nom, x2 at max-
2715200x1 nom, x2 at max
2815201x1 nom, x2 invalid
291999x1 at max-, x2 invalid
3019100x1 at max-, x2 at min
3119101Valid
3219150Valid
3319199Valid
3419200Valid
3519201x2 invalid
362099x1 at max, x2 invalid
3720100x1 at max, x2 at min
3820101Valid
3920150Valid
4020199Valid
4120200Both at max
4220201x1 valid, x2 invalid
432199x1 invalid, x2 invalid
4421100x1 invalid, x2 at min
4521101x1 invalid, x2 at min+
4621150x1 invalid, x2 at nom
4721199x1 invalid, x2 at max-
4821200x1 invalid, x2 at max
4921201Both invalid (above max)

Back to parent page: Software Testing

Web_and_App_Development Software_Testing Blackbox_Testing SOFT3202 Boundary_Value_Test_Design

Two way testing

If at most p parameters interact to cause a fault:

  • Number of test cases needed =

Where:

  • n = total parameters
  • k = values per parameter
  • p = number of interacting parameters you want to test