Module description
Aims and Learning Outcomes
To convey a systematic understanding of the key elements of software measurement and testing, in particular focusing on automated test data generation and with a discussion of the relative strengths and weakness of each technique
On successful completion of this module, students will be able to:
- Describe, apply and critique a number of well-known software metrics for testing adequacy;
- Demonstrate a critical evaluation and analysis of the key techniques for software testing, as well as exhaustive verification techniques that go beyond testing;
- Identify and apply relevant techniques for software testing and verification, including techniques that go beyond testing and to be able to apply it in a context of a real-life software system.
Syllabus
This module conveys an understanding of the basic elements of software measurement and testing, in particular focusing on automated test data generation and with a discussion of the relative strengths and weakness of each technique.
An indication of the types of topic:
- Basic definitions of software design, development, and analysis; software lifecycle.
- Test and analysis activities matched to different phases in design, development, deployment, and maintenance of software.
- The concepts of white-box testing and black-box testing.
- Finite models for software testing activities: control flow graphs, data-flow graphs, finite state machines, combinatorial models.
- Coverage metrics as measures of exhaustiveness of testing.
- Differences between functional correctness and robustness and testing techniques to assess these qualities.
- Symbolic execution.
- Static analysis techniques.
- Test oracles and automatic extraction of correctness properties.
Assessment details
Please note: the below assessment details for the 2025/26 academic year may be updated. The confirmed details will be available on the Student Handbook and on the module KEATS page at the beginning of the semester.
- 85% Examination
- 15% coursework