The University of Western Australia
School of Computer Science and Software Engineering

School of Computer Science and Software Engineering

CITS5501 Software Testing and Quality Assurance


Lecture slides can be downloaded from the Resources page. The order or delivery date of lectures on this page may change during the semester.

Recordings of the lectures will be available through LMS although personal attendance at lectures and workshops is recommended. Please note that recordings sometimes fail.

Note that materials presented during class sessions do not define the whole unit. Attending class sessions and reviewing the material covered comprises about one-third of the effort required for this unit. The remainder of your time should be spent reading the recommended reading, and attempting exercises and assignment tasks.

The schedule below gives recommended readings for each topic: either chapters from the recommended texts, or extracts. Your understanding of the lecture and workshop material will be greatly enhanced if you work through these readings prior to attending. References to “Ammann & Offutt” are to Ammann, P., & Offutt, J., Introduction to software testing, 2nd edn (Cambridge University Press, 2016). References to “Pressman” are to Pressman, R.S., & Maxim, B.R., Software engineering: A practitioner’s approach, 8th edn (McGraw-Hill, 2015), but earlier and later editions should have equivalent sections. The readings may be added to or modified as the semester progresses.

The UWA library has copies of all the recommended textbooks (some online). You can access the library's holdings of the recommended texts via the Unit Readings site here.

Extracts referred to are likewise available via the Unit Readings site, here.

Week Lecture
Tue 2-4pm CSSE Rm 1.24
Wed 10-11am CSSE Rm 2.01
Reading Assessment
24 Feb
Unit info, testing and QA concepts No workshop - Amman & Offutt, ch 1
- Pressman, ch 8 (“Understanding Requirements”), ch 19 (“Quality concepts”)
- Bruegge and Dutoit, Object-Oriented Software Engineering Using UML, Patterns, and Java (3rd edn), ch 11 “Testing” (extract available here)
2 Mar
Introduction to testing Introduction to testing - Pressman, ch 14 (“Component-level design”), ch 22 (“Software Testing Strategies”), ch 28 (“Formal modeling and verification”)
- Horstmann, Object-Oriented Design and Patterns (2nd edn), ch 3 “Guidelines for Class Design” (extract available here) - Barnes and Kölling, Objects First With Java: A Practical Introduction Using BlueJ (5th edn), ch 7 “Well-behaved objects” (extract available here)
9 Mar
Test automation Test case selection - Amman & Offutt, ch 3
- Pressman, ch 23 (“Testing conventional applications”)
Workshop exercise 1
16 Mar
Input space partitioning
Graph testing
PROSH – no workshop scheduled - Amman & Offutt, chs 6-7
- Pressman, ch 23 (“Testing conventional applications”)
23 Mar
Logic testing
Mutation testing
Property-based testing
Graph-based testing - Amman & Offutt, chs 8-9
- Beginner’s Guide to Fuzzing
- Hypothesis Quick Start Guide
- QuickTheories README
30 Mar
Quality assurance, software reviews, performance testing Property-based testing and mutation testing - Pressman, ch 20 (“Review techniques”), ch 22 (“Software testing strategies”) Workshop exercise 2

6 Apr
no class – non-teaching week

13 Apr
no class – study break
20 Apr
Systems and standards, risk management Software reviews - Amman & Offutt, chs 10-12
- Pressman ch 19 (“Quality concepts”), ch 21 (“Software quality assurance”)
27 Apr
Risk management, software metrics Systems and standards - Pressman, ch 30 (“product metrics”), ch 32 (“process and project metrics”), ch 35 (“Risk management”)
4 May
Formal methods & program verification Risk management and QA strategies - Pressman, ch 28 (“Formal modeling and verification”) Workshop exercise 3
11 May
Formal specifications Simple specifications - Dafny language tutorial
18 May
Specifications in Alloy Specifications in Alloy - Alloy Analyzer tutorial
25 May
revision no workshop Project due