Learning Objectives
By the end of this lesson you will be able to:
- Distinguish physical boundaries (data type limits) from business boundaries (specification rules)
- Identify implicit boundaries that aren't stated in the specification
- Apply BVA to both types of boundaries
Two Kinds of Boundaries
Not all boundaries come from the specification document. Some are imposed by the underlying technology.
Business Boundaries
These come from the requirements: "Age must be between 18 and 70." The developer wrote this range deliberately. It can be tested directly with BVA.
Physical Boundaries
These come from the data types used to store values:
- A form field uses a 32-bit integer → maximum value is 2,147,483,647
- A price field uses a Double → precision limit around 15–17 significant digits
- A text field is stored in a VARCHAR(255) column → maximum length is 255
Physical boundaries are often invisible in the specification. No requirements document says "the loan amount must not exceed 2,147,483,647 — because that's what an Int32 can hold." Yet that boundary exists and can be violated.
Why Physical Boundaries Matter
Physical limits are dangerous precisely because they're invisible. A business analyst writes "the system shall accept loan amounts from $1 to $1,000,000." No one notices that the amount is stored in a 32-bit integer, and $1,000,000 is well within Int32 range.
But if someone tests $2,200,000,000 (a valid test for a wealthy client in some markets), the Int32 overflows and the calculation silently returns a wrong number.
The specification boundary was honored. The physical boundary was violated. A tester who only tests the specification boundary misses this entirely.
How to Find Physical Boundaries
- Ask about the data types: "What type is this field in the database?" is a legitimate testing question.
- Infer from the UI: A text field with
maxlength="10"tells you the input is limited to 10 characters. - Test beyond the spec: If the spec says 0–1,000,000, also test 2,147,483,647 and 2,147,483,648. The first is Int32 max; the second should overflow.
- Read error messages: "Value too large for column" is a database-layer physical boundary error.
Composite Boundaries
Some inputs have multiple boundaries stacked together:
- A form field has a UI maxlength (visual boundary)
- The HTTP request has a maximum body size (network boundary)
- The application has input validation (business boundary)
- The database has a column type limit (physical boundary)
A thorough tester tests all four layers, not just the first visible one.
Pro Tip: When a specification doesn't mention an upper limit ("the system accepts numbers"), this is almost certainly a physical boundary situation. Test Int32 max, Int64 max, and Double max explicitly.
Key Takeaways
- Business boundaries come from requirements; physical boundaries come from data type limits
- Physical boundaries are often invisible in specifications but real in code
- Always test beyond the spec range to discover physical limits
- Multiple boundary layers may exist for a single input field