Skip to content
Computing · Year 11

Active learning ideas

Testing and Refinement

Active learning works because testing and refinement demand hands-on practice to spot gaps in logic and edge cases that theory alone cannot reveal. Students need to see their test plans fail before they grasp why careful design matters, making pair work and group challenges essential to build deep understanding.

National Curriculum Attainment TargetsGCSE: Computing - ProgrammingGCSE: Computing - Software Development
30–50 minPairs → Whole Class4 activities

Activity 01

Pairs: Boundary Test Tables

Pairs receive a function specification, like calculating discounts. They build test tables listing normal, boundary, and invalid inputs with expected outputs. Run tests in their IDE, log failures, and refine code over two cycles, sharing fixes.

How do we determine the minimum number of test cases required to ensure full code coverage?

Facilitation TipDuring Boundary Test Tables, provide a printed function specification so pairs must negotiate which boundary cases apply rather than guessing.

What to look forProvide students with a simple function (e.g., a password validation function). Ask them to list 3 normal data inputs, 3 boundary data inputs, and 3 erroneous data inputs for this function. Review their lists for understanding of data types.

ApplyAnalyzeEvaluateCreateRelationship SkillsDecision-MakingSelf-Management
Generate Complete Lesson

Activity 02

Collaborative Problem-Solving45 min · Small Groups

Small Groups: Coverage Challenge

Groups analyse pseudocode for an algorithm, such as sorting. Design minimal test sets for 100% branch coverage using iterative and terminal data. Present plans to class for peer review and vote on completeness.

What are the risks of relying solely on automated testing during software development?

What to look forPose this scenario: 'You are testing a banking application. A bug is found that occasionally displays the wrong balance for a small number of users, but it's hard to reproduce. Another bug prevents users from changing their profile picture. How would you prioritize fixing these bugs and why?' Facilitate a class discussion on bug prioritization criteria.

ApplyAnalyzeEvaluateCreateRelationship SkillsDecision-MakingSelf-Management
Generate Complete Lesson

Activity 03

Collaborative Problem-Solving30 min · Whole Class

Whole Class: Bug Hunt Relay

Project buggy code on screen. Teams take turns suggesting test data, running it live, and proposing fixes. Class discusses prioritisation based on severity and likelihood, refining as a group.

How would you prioritize which bugs to fix first in a critical system?

What to look forStudents work in pairs to create a test plan for a small program. After drafting, they swap plans with another pair. Each pair then critiques the other's plan, answering: 'Are there at least two types of data (normal, boundary, erroneous) for each input field? Are there any obvious gaps in testing?'

ApplyAnalyzeEvaluateCreateRelationship SkillsDecision-MakingSelf-Management
Generate Complete Lesson

Activity 04

Collaborative Problem-Solving50 min · Individual

Individual: Refinement Portfolio

Students code a personal project, like a quiz scorer. Create and execute a full test plan, document iterations with before/after evidence, and reflect on uncovered bugs.

How do we determine the minimum number of test cases required to ensure full code coverage?

What to look forProvide students with a simple function (e.g., a password validation function). Ask them to list 3 normal data inputs, 3 boundary data inputs, and 3 erroneous data inputs for this function. Review their lists for understanding of data types.

ApplyAnalyzeEvaluateCreateRelationship SkillsDecision-MakingSelf-Management
Generate Complete Lesson

A few notes on teaching this unit

Teachers should model the process of turning a specification into test cases before asking students to do it themselves, showing how to translate requirements into data categories. Avoid rushing to automation; students need to experience manual planning first to appreciate its value. Research shows that iterative cycles of testing and refinement improve problem-solving skills more than linear approaches.

Successful learning looks like students designing test cases that cover normal, boundary, and erroneous data without prompting, identifying incomplete coverage in peer work, and justifying bug prioritization with clear criteria. By the end, they should confidently explain why automated testing needs manual planning to be effective.


Watch Out for These Misconceptions

  • Normal data alone proves code works.

    During Boundary Test Tables, watch for students who only include normal inputs. Prompt them to ask: ‘What happens at the edges of the input range?’ and have them add boundary and erroneous cases to their tables.

  • More test cases always mean better testing.

    During Coverage Challenge, listen for groups arguing over the number of tests. Redirect them to focus on strategic selection by asking: ‘Does this test reveal a new behavior, or is it redundant?’

  • Automated tests eliminate manual planning.

    During Bug Hunt Relay, observe if students skip writing test plans. Stop the activity and ask: ‘How would you write a test for a bug you can’t reproduce?’ to highlight the need for manual planning as a guide.


Methods used in this brief