📁 Paper 2 · 3.8 Software Development
3.8b Development & Testing
AQA 8525 · GCSE Computer Science · ~12 min read
Notes
──
Video
──
Worksheet
──
Quiz

Implementation — Coding the System

The implementation stage is where the design is turned into actual working code. Programmers use the design documents (pseudocode, structure charts, data flow diagrams) produced in the design stage as a blueprint. Good implementation includes:

Coding standards: consistent naming conventions, indentation, and commenting. Modular programming: writing small, self-contained functions/procedures that each do one thing — making code easier to test, debug, and reuse. Version control: saving incremental versions of code so changes can be tracked and rolled back if needed.

Types of Testing

Testing checks that a system works correctly and meets its requirements. Different types of testing happen at different stages of development.

🔬 Unit Testing

Testing individual functions or modules in isolation. Each unit is tested independently before integration. Identifies bugs at the smallest level. Typically performed by the developer who wrote the code.

🔗 Integration Testing

Testing how modules work together after unit testing is complete. Checks that interfaces between components function correctly. May reveal new bugs not found in unit tests.

🖥️ System Testing

Testing the complete, integrated system as a whole. Checks that all functional and non-functional requirements are met. Includes performance testing, security testing, and usability testing.

✅ Acceptance Testing

Testing performed by the client or end users against the original requirements. Determines whether the system is ready for release. Also called User Acceptance Testing (UAT).

White-Box vs Black-Box Testing

These two approaches differ in whether the tester knows how the code works internally.

⬜ White-Box Testing

  • Tester has full knowledge of internal code structure
  • Tests check specific code paths, branches, and conditions
  • Can ensure every line of code is tested (code coverage)
  • Typically done by developers
  • Finds logic errors and unreachable code
  • Also called structural or clear-box testing

⬛ Black-Box Testing

  • Tester has no knowledge of internal code — treats the system as a black box
  • Tests based entirely on inputs and expected outputs
  • Checks that the system meets functional requirements
  • Can be done by non-developers, clients, or users
  • Finds requirement errors and user interface issues
  • Also called behavioural or functional testing

Test Data

Good testing uses a range of carefully chosen test data to check all scenarios. There are three key categories:

✓ Valid / Normal

Data that should be accepted and processed correctly. Tests the typical use case. Example: entering age as 25 when the valid range is 0–120.

✗ Invalid / Erroneous

Data that should be rejected. Tests that the system handles incorrect input gracefully. Example: entering "cat" as an age, or a negative value.

◈ Boundary

Data at the edges of what is valid. Tests the exact limits. Example: entering 0, 1, 119, 120 when the valid range is 0–120. Bugs often occur at boundaries.

A good test plan lists each test, the test data used, the expected outcome, and the actual outcome. If actual ≠ expected, a bug has been found.

Test Plans

Test No.DescriptionTest dataExpected resultActual resultPass/Fail
1Valid age input25Accepted; proceed to next stepAccepted; proceedPass
2Boundary — lower limit0AcceptedAcceptedPass
3Boundary — upper limit120AcceptedAcceptedPass
4Boundary — just above upper121Error message displayedError message displayedPass
5Invalid — text input"hello"Error: "Please enter a number"Error message displayedPass

Debugging

When tests reveal failures, developers must debug the code — find and fix the cause. Modern IDEs (Integrated Development Environments) provide debugging tools including breakpoints (pausing execution at a specific line to inspect variable values), stepping through code line by line, and watch windows that display variable values in real time.

Iterative development means the cycle of code → test → fix → retest is repeated many times throughout development. This is the key characteristic of agile approaches: rather than completing the whole system before testing, developers build small working portions, test them immediately, and use feedback to guide the next iteration.

Exam tip: Know all four types of testing and when each is used. Know the key difference between white-box (internal code knowledge) and black-box (input/output only). For test data, always use all three types: valid, invalid, and boundary. Be ready to design test plans in exams — include expected and actual results.
⚠️ Common Mistakes
  • Confusing white-box and black-box — white-box testers know the code; black-box testers do not. Remember: white = transparent (you can see inside).
  • Forgetting boundary data — many students only use valid and invalid; boundary testing is essential and bugs cluster at edges.
  • Saying testing "removes all bugs" — testing reveals the presence of bugs, not their absence. You can never prove a program has no bugs.
  • Confusing unit testing and system testing — unit = individual function; system = entire completed system.
Video coming soon

Key points

  • Unit testing → integration testing → system testing → acceptance testing (UAT)
  • White-box: tester knows the code; black-box: tester only sees inputs and outputs
  • Test data: valid (should be accepted), invalid (should be rejected), boundary (at the limits)
  • A test plan records: test number, description, test data, expected result, actual result, pass/fail
  • Debugging tools: breakpoints, stepping through code, watch windows
  • Iterative development: code → test → fix → retest, repeated throughout development
Click slide or press arrow keys to navigate
✍️

Worksheet — 3.8b Development & Testing

8 questions · 24 marks

Q1State the four types of testing in the order they are typically performed.[2]
✅ Mark scheme
Mark scheme
Unit testing [1], integration testing, system testing, acceptance testing [1 for all three remaining in order].
Q2Explain the difference between white-box and black-box testing.[4]
✅ Mark scheme
Mark scheme
White-box testing: the tester has full knowledge of the internal code structure [1]; tests are designed to check specific code paths, branches, and conditions to ensure complete code coverage; typically performed by developers [1]; Black-box testing: the tester has no knowledge of the internal code [1]; tests are based only on the inputs and expected outputs — the system is treated as a "black box"; can be performed by clients or end users without any programming knowledge [1].
Q3A program accepts ages between 16 and 65 inclusive. Identify appropriate boundary test values and explain why boundary testing is important.[4]
✅ Mark scheme
Mark scheme
Boundary values: 15 (just below lower limit — should be rejected), 16 (lower limit — should be accepted), 65 (upper limit — should be accepted), 66 (just above upper limit — should be rejected) [1 each, max 2]; Boundary testing is important because software bugs frequently occur at the exact limits of acceptable input ranges — a condition written as "if age < 65" rather than "if age <= 65" would wrongly reject 65 — so testing the boundaries reveals errors that testing only with central values would miss [1]; if boundaries are tested and pass, the intervening values are likely to work correctly too [1].
Q4What is unit testing? Give one advantage of performing unit testing.[2]
✅ Mark scheme
Mark scheme
Unit testing is the testing of individual functions, procedures, or modules in isolation — each unit is tested independently, separately from the rest of the system [1]; advantage: bugs are identified at the smallest level and in a specific location, making them easier and cheaper to find and fix; testing in isolation means a fault in one module does not obscure faults in another; can be run automatically every time the code changes [1].
Q5A password field must accept passwords of 8–20 characters. Design a test plan with five test cases, including the test data, expected result, and type of test (valid/invalid/boundary).[5]
✅ Mark scheme
Mark scheme
One mark per suitable test case (max 5): e.g. 7 characters → expected: rejected → Boundary/Invalid [1]; 8 characters → expected: accepted → Boundary/Valid [1]; 14 characters → expected: accepted → Valid/Normal [1]; 20 characters → expected: accepted → Boundary/Valid [1]; 21 characters → expected: rejected → Boundary/Invalid [1]; blank/empty string → expected: rejected → Invalid [1]; non-text input (e.g. numbers only) — valid depending on interpretation [1]. Award 1 mark per well-described test case with appropriate data, expected result, and test category, max 5.
Q6What is acceptance testing? Who typically performs it and what does it determine?[3]
✅ Mark scheme
Mark scheme
Acceptance testing is the final stage of testing before a system is released [1]; it is typically performed by the client or end users — not the development team [1]; it determines whether the system meets the original agreed requirements and is ready for deployment / whether the client accepts the delivered product [1]. Also known as User Acceptance Testing (UAT).
Q7What is a breakpoint in debugging, and how does it help a developer find a bug?[2]
✅ Mark scheme
Mark scheme
A breakpoint is a marker placed at a specific line of code in the IDE [1]; when the program runs and reaches that line, execution pauses, allowing the developer to inspect the current values of variables and the state of the program at that point — helping them identify where incorrect values are being produced and which part of the code is responsible for the error [1].
Q8Explain why testing alone cannot guarantee that a program is completely free from errors.[2]
✅ Mark scheme
Mark scheme
Testing can only reveal the presence of bugs — not their absence [1]; it is impossible to test every possible combination of inputs, conditions, and user actions, so there may always be untested code paths that contain errors; passing all planned tests means only that no bugs were found in those specific test cases — bugs may still exist in scenarios not covered by the test plan [1].
Check your answers above.
Topic Quiz
Q 1 of 10
You scored
out of 10
Card 1 of 8
Click to flip
🎉
All done!
TermDefinition
🎯

Mini Test — 3.8b Development & Testing

Timed exam conditions.

  • 8 questions · 10 minutes
  • 5 MCQ + 3 short answer
← 3.8a Analysis & Design
56 of 57 · AQA 8525
3.8c Evaluation →