Domain Testing: Equivalence Partitions with Open and Closed Borders (ISTQB CTAL-TA)
Overview
Domain testing is one of the data-based test techniques in the ISTQB Advanced Level Test Analyst (CTAL-TA) syllabus. It combines equivalence partitioning and boundary value analysis into one model. Input values are grouped into domains (partitions). Each domain is enclosed by borders (boundaries). A border can be either closed or open, and test points are chosen on and off each border.
This guide covers why the technique matters, what open and closed borders are, how to derive ON, OFF, IN and OUT points, and how to answer exam questions about it.
1. Why It Is Important
Many defects cluster at boundaries. Typical causes are:
- writing < instead of <=;
- using the wrong constant (100 instead of 99);
- getting a multi-variable condition slightly wrong.
Domain testing targets these domain errors systematically:
- Closure error: a border is implemented as open when it should be closed, or the reverse (for example, x < 18 coded instead of x <= 18).
- Border shift: the border sits at the wrong value (for example, age >= 19 instead of age >= 18).
- Border tilt: in multi-dimensional domains, the slope of a border is wrong (for example, x + 2y <= 10 instead of x + y <= 10).
- Missing or extra border: a constraint is absent, or one exists that should not.
Understanding open and closed borders lets the Test Analyst choose the smallest set of test points that still reveals these errors. This makes testing both efficient and effective. It also supports clearer requirements reviews, because ambiguous phrases like 'between 1 and 10' are exposed when you must decide whether each border is open or closed.
2. What It Is: Key Concepts
Domain (partition): a set of input values that the system should treat the same way. A domain can be one-dimensional (a single variable, such as age) or multi-dimensional (several variables together, such as x + y <= 10).
Border (boundary): the edge of a domain, defined by a condition such as x >= 18 or x + y <= 10.
Closed border: the border value belongs to the domain. It is expressed with inclusive operators: <= , >= , =.
Example: 18 <= age means 18 is inside the 'adult' domain.
Open border: the border value does not belong to the domain. It is expressed with exclusive operators: < , >.
Example: 0 < price means 0 is not inside the valid price domain.
ON point: a point that lies exactly on the border.
- For a closed border, the ON point is inside the domain.
- For an open border, the ON point is outside the domain.
OFF point: a point as close as possible to the ON point (one smallest increment away) but on the opposite side of membership.
- For a closed border, the OFF point is outside the domain.
- For an open border, the OFF point is inside the domain.
IN point: any point inside the domain that is not on a border (a typical value).
OUT point: any point outside the domain that is not on a border.
Precision (granularity): the smallest meaningful step between values. It is 1 for integers, 0.01 for currency in cents, and so on. The OFF point is always the ON point plus or minus this step.
3. How It Works: Step by Step
Step 1: Identify the input variables and their data types and precision.
Step 2: Define the domains from the specification, for example valid, invalid and each distinct behaviour.
Step 3: For each border, write the condition and decide whether it is open or closed.
Step 4: Select the ON point, which is the border value itself.
Step 5: Select the OFF point, which is one increment away and has the opposite membership to the ON point.
Step 6: Optionally add IN and OUT points for typical-value coverage.
Step 7: Define expected results for each point and remove duplicates where borders are shared.
Example 1: Closed borders (one dimension)
Requirement: a discount applies for ages 18 to 65 inclusive, so the domain is 18 <= age <= 65.
Lower border (age >= 18, closed):
- ON = 18 (inside, discount);
- OFF = 17 (outside, no discount).
Upper border (age <= 65, closed):
- ON = 65 (inside);
- OFF = 66 (outside).
Test values: 17, 18, 65, 66, plus an optional IN point such as 40.
Example 2: Open borders (one dimension)
Requirement: the temperature must be strictly greater than 0 and strictly less than 100, so the domain is 0 < t < 100 with integer precision.
Lower border (t > 0, open):
- ON = 0 (outside, rejected);
- OFF = 1 (inside, accepted).
Upper border (t < 100, open):
- ON = 100 (outside);
- OFF = 99 (inside).
Test values: 0, 1, 99, 100. These are the same numbers BVA would give. In domain terms, however, the ON points are the invalid ones here.
Example 3: Mixed borders and adjacent partitions
Requirement: shipping is free if the order is 50.00 or more, and below 50.00 a fee applies. The precision is 0.01.
- The 'fee' domain is 0.00 <= total < 50.00, so its upper border is open.
- The 'free' domain is total >= 50.00, so its lower border is closed.
Both domains share the border at 50.00:
- ON = 50.00 (in 'free');
- OFF = 49.99 (in 'fee').
A border that is closed for one partition is open for its neighbour. The same two points therefore test both domains, so do not double count them.
Example 4: Two-dimensional domain
Condition: x + y <= 10, which is a closed border, with integer x and y.
- ON point: (5, 5), because 5 + 5 = 10 and the point is inside.
- OFF point: (5, 6), because 5 + 6 = 11 and the point is outside.
Why these points find defects:
- If the code wrongly used x + y < 10 (a closure error), the ON point (5, 5) would be rejected, so the defect is detected.
- If the border were shifted to x + y <= 11, the OFF point (5, 6) would be wrongly accepted, so the defect is detected.
For detecting tilt in multi-dimensional domains, some approaches (Beizer, Binder) use two ON points and one OFF point per border. Within the CTAL-TA scope, the essential idea is that ON and OFF points sit on opposite sides of membership near the border.
How the points map to defects
- The ON point detects closure errors and shifts in one direction.
- The OFF point detects shifts in the other direction.
- Together they detect most domain errors with a minimal number of tests.
4. Relationship to EP and BVA
- Equivalence partitioning supplies the domains.
- Boundary value analysis supplies the points at the edges.
- Domain testing adds the open/closed classification and the ON/OFF vocabulary, and extends both ideas to multiple variables.
In one dimension, the ON and OFF points equal the two boundary values of 2-value BVA. The open or closed nature of the border only decides which one is the valid value.
Exam Tips: Answering Questions on Domain Testing: Equivalence Partitions with Open and Closed Borders
Tip 1: Read the operator first. <= and >= mean closed. < and > mean open. Words like 'inclusive', 'at least', 'up to' and 'no more than' mean closed. Words like 'exclusive', 'more than', 'less than', 'strictly' and 'above' mean open.
Tip 2: The ON point is always the border value itself, whether the border is open or closed. Only its membership changes: inside if closed, outside if open.
Tip 3: The OFF point always has the opposite membership to the ON point. A quick rule:
- closed border: ON is in, OFF is out;
- open border: ON is out, OFF is in.
Tip 4: Respect precision. If the values are currency to two decimals, the OFF point for 50.00 is 49.99 or 50.01, not 49 or 51. Exam distractors often use the wrong increment.
Tip 5: Watch shared borders. When two partitions meet, one side is closed and the other is open. The same ON/OFF pair covers both, so count it once when asked for the minimum number of test cases.
Tip 6: Count carefully. A one-dimensional domain with two borders needs 2 ON + 2 OFF = 4 points. Each additional border adds an ON and an OFF point unless the points are shared.
Tip 7: Link the defect type to the point. If a question asks which test would reveal that '<' was coded instead of '<=', the answer is the ON point of that closed border.
Tip 8: Check expected results, not just values. Some options list the correct values but with wrong expected outcomes (for example, saying the ON point of an open border is valid). Eliminate these.
Tip 9: Draw it. Sketch a number line, or a 2-D graph for multi-variable conditions. Use filled dots for closed borders and hollow dots for open ones. This quickly reveals which side each point lies on.
Tip 10: Spot ambiguity. If a requirement says 'between 10 and 20' with no inclusivity stated, the expected exam reasoning is often that the specification is ambiguous and should be clarified. This is a valid Test Analyst action.
Tip 11: Eliminate distractors systematically. Reject options that:
- use an IN point where an OFF point is required;
- place both points on the same side of membership;
- ignore one of the borders.
Summary
Domain testing treats partitions as regions enclosed by borders. A closed border includes its value, and an open border excludes it. For each border, choose an ON point exactly on it and an OFF point one precision step away with opposite membership. This compact set detects closure errors, border shifts and many tilts. In the exam, identify the operator, apply the ON/OFF membership rules, respect precision, and count shared borders only once.