- Boundary value analysis
Boundary value analysis is a
software testing design technique used to determine test cases coveringoff-by-one error s.Introduction
Testing experience has shown that the boundaries of input ranges to a software component are likely to contain defects. For instance: a function that takes an integer between 1 and 12, representing a month between January to December, might contain a check for this range:A common programming error is to check an incorrect range e.g. starting the range at 0 by writing:For more complex range checks in a program this may be a problem which is not so easily spotted as in the above simple example.
Applying boundary value analysis
To set up boundary value analysis test cases, the tester first determines which boundaries are at the interface of a software component. This is done by applying the
equivalence partitioning technique. For the aboveexample, the month parameter would have the following partitions:... -2 -1 0 1 .............. 12 13 14 15 ..... --------------|-------------------|--------------------- invalid partition 1 valid partition invalid partition 2
To apply boundary value analysis, a test case at each side of the boundary between two partitions is selected. In the above example this would be 0 and 1 for the lower boundary as well as 12 and 13 for the upper boundary. Each of these pairs consists of a "clean" and a "negative" test case. A "clean" test case should lead to a valid result. A "negative" test case should lead to specified error handling such as the limiting of values, the usage of a substitute value, or a warning. Boundary value analysis can result in three test cases for each boundary; for example if n is a boundary, test cases could include n-1, n, and n+1.
A further set of boundaries has to be considered when test cases are set up. A solid testing strategy also has to consider the natural boundaries of the data types used in the program. If working with signed values, for example, this may be the range around zero (-1, 0, +1). Similar to the typical range check faults, there tend to be weaknesses in programs in this range. e.g. this could be a division by zero problem where a zero value may occur although the programmer always thought the range started at 1. It could be a sign problem when a value turns out to be negative in some rare cases, although the programmer always expected it to be positive. Even if this critical natural boundary is clearly within an equivalence partition it should lead to additional test cases checking the range around zero. A further natural boundary is the natural lower and upper limit of the data type itself. E.g. an unsigned 8-bit value has the range of 0 to 255. A good test strategy would also check how the program reacts at an input of -1 and 0 as well as 255 and 256.
The tendency is to relate boundary value analysis more to so called
black box testing , which is strictly checking a software component at its interfaces, without consideration of internal structures of the software. But looking closer at the subject, there are cases where it applies also towhite box testing .After determining the necessary test cases with equivalence partitioning and subsequent boundary value analysis, it is necessary to define the combinations of the test cases when there are multiple inputs to a software component.
External Links
* To generate pairs and boundary-interactions, www.testersdesk.com is a free online source
Wikimedia Foundation. 2010.