Boundary Value Analysis (BVA) is a test data selection technique (Functional Testing technique) where the extreme values are chosen. Boundary values include maximum, minimum, just inside/outside boundaries, typical values, and error values. The hope is that, if a system works correctly for these special values then it will work correctly for all values in between.* Extends equivalence partitioning
* Test both sides of each boundary
* Look at output boundaries for test cases too
* Test min, min-1, max, max+1, typical values

* BVA focuses on the boundary of the input space to identify test cases
* Rational is that errors tend to occur near the extreme values of an input variable


There are two ways to generalize the BVA techniques:1. By the number of variables
For n variables: BVA yields 4n + 1 test cases.2. By the kinds of ranges
Generalizing ranges depends on the nature or type of variables* NextDate has a variable Month and the range could be defined as {Jan, Feb, …Dec}
* Min = Jan, Min +1 = Feb, etc.
* Triangle had a declared range of {1, 20,000}
* Boolean variables have extreme values True and False but there is no clear choice for the remaining three values

Advantages of Boundary Value Analysis
1. Robustness Testing - Boundary Value Analysis plus values that go beyond the limits
2. Min - 1, Min, Min +1, Nom, Max -1, Max, Max +1
3. Forces attention to exception handling
4. For strongly typed languages robust testing results in run-time errors that abort normal execution

Limitations of Boundary Value Analysis
BVA works best when the program is a function of several independent variables that represent bounded physical quantities

1. Independent Variables

NextDate test cases derived from BVA would be inadequate: focusing on the boundary would not leave emphasis on February or leap years
Dependencies exist with NextDate's Day, Month and Year
Test cases derived without consideration of the function2. Physical Quantities
An example of physical variables being tested, telephone numbers - what faults might be revealed by numbers of 000-0000, 000-0001, 555-5555, 999-9998, 999-9999?