2.3.2

Testing

Testing is how programmers check that a program works properly and catches problems before users find them. You need to know why testing matters, the difference between iterative and final testing, the difference between syntax and logic errors, and how to choose strong test data and test plans.

20 exam questions 11 flashcards

What you need to know

  • Explain the purpose of testing.
  • Compare iterative testing and final testing.
  • Distinguish between syntax errors and logic errors.
  • Choose suitable normal, boundary, invalid, and erroneous test data.
  • Create or complete a test plan.

Big Picture

Why we test and when we test

Testing is not a one-off job at the end of a project.

  • Iterative testing happens as modules are created and improved.
  • Final or terminal testing checks the completed program near the end.
  • Testing helps confirm that changes have not broken existing behaviour.

Common Problems

Syntax errors and logic errors

Exam questions often ask you to identify which type of error has happened.

Error typeWhat happensTypical result
Syntax errorThe rules of the language are brokenThe program does not run or translate correctly
Logic errorThe program runs but the logic is wrongThe output is incorrect

Test Data

Normal, boundary, invalid, and erroneous data

Good test data checks not just typical cases, but edge cases and bad input too.

TypeMeaningExample if valid ages are 11 to 16
NormalTypical valid data14
BoundaryData on or just at the edge of validity11 or 16
InvalidCorrect type but should be rejected20
ErroneousWrong type of data"blue"

Boundary reminder

Boundary data is still the correct data type. Erroneous data is the wrong data type.

High-Value Exam Skill

Test plans and refining programs

A test plan helps a programmer check systematically whether the program behaves as expected.

  • A test plan usually includes the test data, the expected result, and the actual result.
  • If the actual result does not match the expected result, the algorithm or code may need refining.
  • Refining means improving the algorithm after testing has shown a weakness.

Key takeaways

  • Testing helps find problems and gives confidence that a program works correctly.
  • Iterative testing happens during development, while final testing happens near the end.
  • Syntax errors stop code from running correctly, while logic errors produce the wrong output.
  • Good testing uses a range of test data, not just one happy-path example.

Glossary

Iterative testing
Testing carried out during development as the program is built.
Final testing
Testing carried out on the finished program.
Syntax error
An error caused by breaking the rules of the programming language.
Logic error
An error where the program runs but gives the wrong result.
Boundary data
Valid data at the edge of the allowed range.

Test yourself

Common questions