Normal boundary erroneous test data GCSE questions ask students to design test values that check a program properly, rather than only running it once with an obviously sensible input. Normal data checks expected everyday values, boundary data checks the edges of an accepted range, and erroneous data checks that invalid input is rejected safely.

Why does a program need more than one type of test data?

Running a program once with a single sensible value only proves it works for that one case — it says nothing about how the program behaves at the edges of what's allowed, or when a user types something completely wrong. GCSE testing questions expect three categories of test data, each chosen to expose a different kind of bug, applied together as a test plan.

What is normal test data?

Normal data is any value that falls comfortably within the range a program is designed to accept — the everyday, expected case. It confirms the program's core logic produces the correct result under ordinary conditions.

Worked example: a program accepts a student's test score, which must be a whole number from 0 to 100, and prints "Pass" for 40 or above, otherwise "Fail". Testing with the normal value 65 should print "Pass"; testing with the normal value 20 should print "Fail". Both values are clearly inside the accepted range and clearly on one side or the other of the pass mark, so they check the everyday logic works as intended.

What is boundary test data?

Boundary data sits exactly on, or one either side of, the edge of an accepted range — the values most likely to expose an "off-by-one" mistake in the code, such as using < where <= was needed.

Worked example: for the same 0–100 score program, the boundary values to test are 0 and 100 (the extreme ends of the valid range), plus -1 and 101 (just outside each end, which should be rejected by validation). For the pass/fail logic, the boundary value 40 itself is critical too: if the correct rule is "40 or above passes", testing exactly 40 confirms the comparison operator (>= rather than >) was coded correctly. A common student mistake is testing only 39 and 41 around a boundary and never testing the boundary value itself — that's precisely the value most likely to reveal a coding error.

What is erroneous test data?

Erroneous data (sometimes called invalid data) is a value of the wrong type, or clearly outside any sensible range, used to check that the program's validation correctly rejects it rather than crashing or silently accepting a nonsense value.

Worked example: for the score-entry program, erroneous test data includes typing "ninety" (text instead of a number), -500 (a wildly out-of-range number), or leaving the field blank. A correctly written program should display a clear error message for each of these, such as "Enter a whole number between 0 and 100", and ask the user to try again — it should never crash or store the invalid value.

Normal, boundary and erroneous data: summary table

Test data type Purpose Example (0–100 score, pass mark 40)
Normal Confirms the program works correctly for typical, expected input 65, 20
Boundary Confirms the program handles the exact edges of the accepted range correctly 0, 100, 40, -1, 101
Erroneous Confirms the program rejects invalid input safely instead of crashing "ninety", -500, blank

How do you build a test plan using all three types?

A GCSE-standard test plan lists, for each test, the type of data (normal, boundary or erroneous), the actual test value, the expected result, and — once the program has been run — the actual result. Setting out the expected result before running the test is important: it proves the tester predicted the correct behaviour rather than just checking whatever the program happened to output.

Test number Data type Test value Expected result
1 Normal 65 "Pass"
2 Normal 20 "Fail"
3 Boundary 40 "Pass"
4 Boundary 0 Accepted, "Fail"
5 Boundary 101 Rejected — error message
6 Erroneous "ninety" Rejected — error message

A test plan covering all three categories, rather than only normal data, is far more likely to catch real bugs — and is exactly what GCSE controlled assessment and exam mark schemes reward.

Frequently asked questions

What is the difference between normal, boundary and erroneous test data?

Normal data is a typical, expected value used to check a program's everyday logic works correctly. Boundary data sits exactly on or just outside the edge of an accepted range, checking that the program handles limits correctly. Erroneous data is invalid — the wrong type or clearly out of range — used to confirm the program rejects it safely rather than crashing.

Why is boundary data so important in testing?

Boundary data specifically targets "off-by-one" mistakes, where a programmer has used the wrong comparison operator, such as < instead of <=. Testing only values well inside or well outside a range can miss this kind of bug entirely, while testing the exact boundary value exposes it immediately.

What should happen when a program is given erroneous data?

A correctly written program should detect that erroneous data is invalid — using a validation check such as a type check or range check — and display a clear error message asking the user to try again, without crashing or silently storing the incorrect value.

How many test values should a good test plan include?

A good test plan includes at least one value from each category — normal, boundary and erroneous — for every input a program accepts, rather than relying on a single "it worked once" test. Real test plans often include several normal and several boundary values, since a range typically has two edges to check rather than one.


For Socratic GCSE Computer Science tutoring — programming, algorithms, and more — visit aitutors.me.