Skip to content
Computer Science · Grade 10

Active learning ideas

Testing and Quality Assurance

Active learning helps students grasp testing and quality assurance by moving beyond abstract theory into hands-on practice. When students write tests, hunt bugs, and analyze failures in real time, they see firsthand how testing shapes reliable software, making abstract concepts concrete and memorable.

Ontario Curriculum ExpectationsCS.HS.D.9CS.HS.D.10
30–50 minPairs → Whole Class4 activities

Activity 01

Jigsaw45 min · Small Groups

Jigsaw: Testing Types

Assign small groups as experts on unit, integration, or user acceptance testing; they prepare 2-minute teach-backs with examples. Regroup into mixed teams where experts share knowledge, then design one test case per type for a sample program. Teams present to class.

Differentiate between unit testing, integration testing, and user acceptance testing.

Facilitation TipDuring the Jigsaw Protocol, assign each expert group a testing type and provide a one-page scenario so they internalize definitions before teaching others.

What to look forProvide students with a simple code snippet (e.g., a function to calculate the area of a rectangle). Ask them to write down: 1) One unit test they would create for this function. 2) One integration test scenario involving this function and another hypothetical module. 3) A brief description of how a user might test this function during UAT.

UnderstandAnalyzeEvaluateRelationship SkillsSelf-Management
Generate Complete Lesson

Activity 02

Problem-Based Learning35 min · Pairs

Pair Programming: Bug Hunt Challenge

Provide pairs with intentionally buggy code snippets. Partners write 5-10 targeted test cases to expose errors, run tests, and log fixes. Switch pairs midway to review and refine tests collaboratively.

Design test cases to identify bugs and validate program functionality.

Facilitation TipFor the Bug Hunt Challenge, seed the code with 3-4 subtle bugs and require pairs to document each bug’s location, impact, and severity before fixing.

What to look forPresent students with a scenario describing a software bug. Ask them to identify which type of testing (unit, integration, UAT) would be most effective in discovering this specific bug and explain why. For example: 'A button on a website does not change color when clicked.'

AnalyzeEvaluateCreateDecision-MakingSelf-ManagementRelationship Skills
Generate Complete Lesson

Activity 03

Think-Pair-Share30 min · Pairs

Think-Pair-Share: Test Case Design

Pose a program scenario individually; pairs brainstorm edge cases and expected outputs for test cases. Share with whole class via digital whiteboard, vote on strongest cases, and implement in a shared repo.

Analyze the importance of continuous testing throughout the development lifecycle.

Facilitation TipIn Think-Pair-Share, provide a flawed test case example to spark discussion about clarity and edge-case coverage.

What to look forStudents work in pairs to design test cases for a shared simple program (e.g., a basic calculator). One student designs test cases for addition, the other for subtraction. They then exchange their test cases and provide feedback on clarity, completeness, and coverage of potential issues. Specific feedback prompts: 'Are there any edge cases missed?' 'Is the expected outcome clearly defined?'

UnderstandApplyAnalyzeSelf-AwarenessRelationship Skills
Generate Complete Lesson

Activity 04

Stations Rotation50 min · Small Groups

Stations Rotation: Testing Lifecycle

Set up stations for planning tests, writing unit tests, integration checks, and user simulation. Groups rotate, adding to a cumulative test suite for sample software, then debrief on continuous integration benefits.

Differentiate between unit testing, integration testing, and user acceptance testing.

Facilitation TipDuring Station Rotation, label each station with a lifecycle phase and include a real-world example (e.g., a broken login flow) to ground discussions in context.

What to look forProvide students with a simple code snippet (e.g., a function to calculate the area of a rectangle). Ask them to write down: 1) One unit test they would create for this function. 2) One integration test scenario involving this function and another hypothetical module. 3) A brief description of how a user might test this function during UAT.

RememberUnderstandApplyAnalyzeSelf-ManagementRelationship Skills
Generate Complete Lesson

A few notes on teaching this unit

Teach testing by framing bugs as learning opportunities rather than failures. Use real-world analogies, like comparing unit tests to checking a single ingredient in a recipe, to help students visualize isolation and integration. Avoid overwhelming students with overly complex systems; start with small, verifiable functions before scaling up. Research shows that students retain testing concepts better when they write tests early and often, so integrate testing into coding activities from the beginning of your course.

Successful learning looks like students confidently distinguishing when and why to use unit, integration, and user acceptance testing. They should also design clear, purposeful test cases and explain how continuous testing prevents costly bugs later in development.


Watch Out for These Misconceptions

  • During Jigsaw Protocol: Testing happens only at the end of development.

    Use the activity’s scenario cards to map when each testing type occurs in the lifecycle. For example, have experts trace a login feature from unit tests during coding, to integration tests during module assembly, to UAT before release.

  • During Station Rotation: Unit tests alone ensure full software quality.

    Have students observe how isolated checks at Station 1 (unit testing) fail to catch issues that emerge when modules interact at Station 2 (integration testing), reinforcing that layered testing is essential.

  • During Think-Pair-Share: More test cases always mean better quality.

    Use the activity’s peer review phase to prompt students to critique test cases for focus. Ask them to compare a list of 20 shallow tests to 5 targeted, edge-case tests to highlight prioritization.


Methods used in this brief