Domain Testing: IN and OUT Points (ISTQB CTAL-TA Data-Based Test Techniques)
Overview
Domain testing is one of the data-based test techniques in the ISTQB Advanced Level Test Analyst (CTAL-TA) syllabus. It extends equivalence partitioning and boundary value analysis to inputs whose valid region (the domain) is defined by one or more conditions. These conditions may involve several variables at once, for example x + y <= 10.
Domain testing selects four kinds of test points: ON, OFF, IN and OUT. This guide focuses on IN and OUT points. However, you cannot understand them without ON and OFF points, so all four are covered.
Why It Is Important
1. Real software has multi-variable conditions. Rules such as eligibility, pricing and risk scoring often combine variables, for example income - debt >= 2000 AND age >= 18. Classic one-variable boundary value analysis does not handle these well. Domain testing does.
2. It targets typical domain defects. These include:
- shifted boundaries (wrong constant);
- tilted boundaries (wrong coefficient);
- wrong closure (< instead of <=);
- missing boundaries;
- extra boundaries.
3. It is efficient. A small, systematic set of points gives high defect-detection power, which supports risk-based and cost-effective testing.
4. IN and OUT points complete the picture. ON and OFF points check that boundaries are in the right place. IN and OUT points check that:
- the system processes clearly valid and clearly invalid data correctly;
- variables that are not under test are held at safe, typical values.
5. It is examinable. CTAL-TA questions (K3/K4 level) ask you to identify, classify or derive these points and to calculate coverage.
What It Is: The Four Point TypesA domain is bounded by boundaries. Each boundary is described by a condition, which may be
closed or
open:
- Closed boundary (<= or >=): the points on the boundary belong to the domain.
- Open boundary (< or >): the points on the boundary do NOT belong to the domain.
The four point types are:
- ON point: a value lying exactly on the boundary. For a closed boundary it is inside the domain. For an open boundary it is outside.
- OFF point: a value as close as possible to the ON point, but on the opposite side of the boundary in terms of domain membership.
- Closed boundary: the OFF point is outside the domain.
- Open boundary: the OFF point is inside the domain.
- IN point: a value that satisfies ALL the domain's conditions and does NOT lie on any boundary. It is a typical, clearly valid value inside the domain.
- OUT point: a value that violates at least one of the domain's conditions and is neither an ON point nor an OFF point. It is a clearly invalid value, outside the domain and away from the boundary being tested.
Key distinction: ON and OFF points are defined
relative to a boundary. IN and OUT points are defined
relative to the domain as a whole.
How It Works: Step by StepStep 1 - Identify the domain and its conditions.Example:
18 <= age <= 65, with age an integer.
Step 2 - Identify each boundary and its closure.- Boundary 1: age >= 18 (closed).
- Boundary 2: age <= 65 (closed).
Step 3 - Determine ON and OFF points for each boundary.- Boundary 1: ON = 18 (inside); OFF = 17 (outside, closest value).
- Boundary 2: ON = 65 (inside); OFF = 66 (outside).
Step 4 - Choose IN point(s).- Any value strictly inside the domain and not on a boundary, for example 40.
- Values such as 19 or 64 are also IN points: they are inside and not on a boundary.
- In practice, testers usually choose a typical mid-range value.
Step 5 - Choose OUT point(s).- Any value outside the domain that is not an OFF point, for example 5 or 100.
- Note that 17 and 66 are outside the domain, but they are the OFF points, so they are not classed as OUT points.
Step 6 - For multi-variable domains, hold other variables at IN values.When you test the ON/OFF points of one boundary, set every variable not involved in that boundary to an IN (typical) value. This ensures that any failure is caused by the boundary under test and not by another condition. This is one of the most important practical uses of IN points.
Two-Dimensional ExampleDomain (integers):
x >= 0,
y >= 0,
x + y <= 10.
- Boundary x + y <= 10 (closed):
- ON point: (4, 6), since 4 + 6 = 10, which is inside.
- OFF point: (5, 6), since 5 + 6 = 11, which is just outside.
- Boundary x >= 0 (closed):
- ON point: (0, 5).
- OFF point: (-1, 5).
- Here y = 5 is an IN value for y, chosen so that it does not touch any other boundary.
- IN point for the domain: (2, 3). All conditions are true and no boundary is touched.
- OUT point: (20, 20) or (-5, -5). At least one condition is false and the point is far from the boundaries.
Open Boundary ExampleDomain:
0 < price < 100, with price to 2 decimal places.
- ON points: 0.00 and 100.00. Both are outside the domain, because the boundaries are open.
- OFF points: 0.01 and 99.99. Both are inside the domain.
- IN point: 50.00.
- OUT points: -20.00 or 250.00.
This example shows why closure matters. With open boundaries, the OFF points are the valid ones.
What Each Point Detects- ON/OFF points detect shifted boundaries, closure defects (< vs <=) and tilted boundaries.
- IN points detect:
- incorrect processing of normal valid data;
- extra boundaries wrongly splitting the domain;
- gross computation errors.
- OUT points detect:
- missing boundaries or conditions, where the system accepts clearly invalid data;
- incorrect error handling;
- misclassification of data into the wrong domain.
CoverageDomain coverage is measured as:
(number of ON, OFF, IN and OUT points tested) / (number of points identified) x 100%A simplified approach selects, for each boundary, one ON point and one OFF point. It then adds an IN point for the domain, and OUT points where relevant.
Exam Tips: Answering Questions on Domain Testing: IN and OUT Points1. Read the closure first. Is each condition <, <=, > or >=? This decides whether the ON point is inside or outside the domain, and therefore where the OFF point lies. Many wrong options exploit this.
2. Use the definitions literally.- IN = satisfies all conditions AND is not on any boundary.
- OUT = violates at least one condition AND is not an OFF point (and not on the boundary).
If a value is outside but is the closest value to the boundary, it is an OFF point, not an OUT point.
3. Watch the data type and precision.- For integers, the OFF point is plus or minus 1 from the ON point.
- For two decimal places, it is plus or minus 0.01.
Exams often state the precision; use it to decide which value is the OFF point and which is merely an OUT point.
4. Check multi-variable points against every condition. A point that is valid for one condition may violate another. Such a point is OUT, not IN. Substitute the values into each condition and evaluate.
5. Remember the role of IN values for other variables. If a question asks which test is correct for a given boundary, choose the option where the other variables hold typical IN values that do not sit on another boundary.
6. Classify systematically. For each candidate value, ask in order:
- Is it on the boundary? If yes, it is an ON point.
- Is it the closest value across the boundary? If yes, it is an OFF point.
- Is it inside the domain? If yes, it is an IN point.
- Otherwise, it is an OUT point.
7. Do coverage calculations carefully. Count the identified points first, then the tested ones. Do not count duplicates twice: one point may serve as the IN point and also as the background value for other tests.
8. Eliminate distractors. Wrong options often:
- swap the OFF and OUT labels;
- place the OFF point on the wrong side of an open boundary;
- call a boundary value an IN point.
9. Link points to defects. If a question asks which point would reveal a missing condition or an accepted invalid input, the answer is usually an OUT point. If it asks about a wrong operator or a shifted constant, think ON/OFF.
10. Draw it. For two-variable domains, sketch the boundaries quickly on scratch paper and mark the points. This makes it much easier to see whether a point is IN or OUT.
SummaryDomain testing selects ON and OFF points to verify where each boundary lies. It uses IN points (clearly valid, not on any boundary) and OUT points (clearly invalid, not OFF points) to verify behaviour across the domain as a whole. In the exam, success depends on three things: reading closure and precision carefully, testing every condition for multi-variable points, and applying the definitions strictly.