Skip to the page
Year 11 · Computer Science · Summer 2 · After the exams

Build and show

What this lesson covers

7.1 The program development life cycle

Cambridge IGCSE Computer Science 0478 · Topic 7: Algorithm design and problem-solving · Paper 2

7.6 Test data

Cambridge IGCSE Computer Science 0478 · Topic 7: Algorithm design and problem-solving · Paper 2

You will learn to

  • Test the finished project with normal, extreme and abnormal data.
  • Evaluate the project against your success list.
  • Demonstrate the project to the class and explain one problem you solved.

Success criteria

  • I can show a test table with expected and actual results.
  • I can say which lines of my success list are met, and which are not.
  • I can present my project and answer one question about it.
The syllabus points for these sections
  • Name the four stages: analysis, design, coding and testing.
  • Explain abstraction and decomposition in the analysis stage.
  • Name the design tools: structure diagrams, flowcharts and pseudocode.
  • Explain iterative testing during coding and testing with test data.
  • Define normal, abnormal, extreme and boundary data.
  • Choose test data for a given range and give the expected result.
  • Explain why each type of test data is needed.

Key words

Say each word, then read what it means. Every one is in the glossary too.

Program development life cycle
The four stages of making a program: analysis, design, coding and testing.
Abstraction
Removing details that do not matter so you can focus on the ones that do.
Decomposition
Breaking a problem into smaller parts that are easier to solve.
Structure diagram
A top-down diagram that shows how a system is split into sub-systems.
Flowchart
A diagram of an algorithm using standard shapes joined by flow lines.
Pseudocode
A structured, code-like way of writing an algorithm that is not tied to one language.
Check digit
An extra digit calculated from the other digits, used to catch typing errors.
Normal data
Test data that should be accepted.
Abnormal data
Test data that should be rejected.
Extreme data
The largest and smallest values that should be accepted.
Boundary data
The largest and smallest accepted values and the nearest rejected values next to them.

The explanation

Read it here, or open the study page below to go one step at a time with things to try.

7.1 The program development life cycle

Four stages, in order

The program development life cycle is the set of stages a programmer goes through to make a program.

There are four stages: analysis, design, coding and testing.

It is called a cycle because problems found in testing send you back to an earlier stage.

StageQuestion it answersWhat is produced
AnalysisWhat must the program do?A list of requirements
DesignHow will it do it?Structure diagrams, flowcharts, pseudocode
CodingCan we build it?Program code, tested as it is written
TestingDoes it work for all data?Test results with test data
?Why?

Planning before coding is faster overall. A mistake fixed in the design costs minutes. The same mistake found after coding can cost hours.

!Watch out

Learn the four names exactly. Cambridge uses analysis, design, coding, testing. Words like 'planning' or 'making' do not earn the mark.

Analysis: understand the problem

In analysis you find out exactly what the problem is and what the program must do. These needs are the requirements.

Abstraction means removing the details that do not matter, so you can focus on what does.

Decomposition means breaking a big problem into smaller parts that are easier to solve.

e.g.Example
Problem: a school canteen wants a top-up system for student cards. Requirements: input the card number and amount, add the amount to the balance, show the new balance. Abstraction: the colour of the card and the student's hair colour do not matter. Keep card number, name and balance. Decomposition: read card → choose amount → take payment → update balance.
?Why?

Abstraction stops you wasting time on details that will not affect the program. Decomposition turns one scary problem into several small, easy ones.

Design, coding and testing

In design you plan how the program will work. You decompose further and use structure diagrams, flowcharts and pseudocode.

In coding you write the program. You test each part as you write it. This is called iterative testing: write a bit, test it, fix it, repeat.

In testing you run the finished program with planned test data to check it works for every kind of input.

e.g.Example
Canteen system: Design: a flowchart for 'take payment'. Coding: write 'update balance' and test it with one card before writing the next part. Testing: try a top-up of 10 euros (normal), -5 euros (abnormal) and the largest allowed amount (extreme).
!Watch out

Do not mix up iterative testing and final testing. Iterative testing happens during coding, part by part. Final testing uses a full test plan on the finished program.

7.6 Test data

The four types of test data

Normal data: data that should be accepted. It is well inside the range.

Abnormal data: data that should be rejected. It is outside the range or the wrong type.

Extreme data: the largest and smallest values that should be accepted. Boundary data: the largest and smallest accepted values and the nearest values outside the range, which should be rejected.

TypeRange 1 to 100Expected result
Normal50, 73Accepted
Abnormal-20, 250, "ten"Rejected with an error message
Extreme1 and 100Accepted
Boundary1 and 0, 100 and 1011 and 100 accepted; 0 and 101 rejected
?Why?

Most errors hide at the edges. A programmer types `<` when they meant `<=`, and only boundary data shows it.

!Watch out

Extreme data is always accepted. Boundary data is a pair: the accepted edge value and the rejected value next to it.

There is something to try for this step in the IGCSE library.

Worked example: a test plan

A test plan lists each test, the data, the type of data and the expected result.

Scenario: a program accepts the number of days for a library loan. It must be a whole number from 1 to 21.

TestDataTypeExpected result
114NormalAccepted
230AbnormalRejected: 'Enter 1 to 21'
3"two"AbnormalRejected: 'Enter a whole number'
41Extreme (smallest)Accepted
521Extreme (largest)Accepted
60Boundary (below the range)Rejected
722Boundary (above the range)Rejected
e.g.Example
Exam answer for 'Give boundary data for 1 to 21': 1 and 0 (1 accepted, 0 rejected) 21 and 22 (21 accepted, 22 rejected)
!Watch out

Always say the expected result. 'Test data: 22' alone usually loses the mark. Write '22, rejected'.

Saved on this device.