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

Welcome to CITS5501

Welcome to the website for CITS5501 in 2020. This is a face-to-face unit, not an online unit. All material (lectures, workshops, assignments) for this unit will be published on these pages, and not on the LMS – with the exception of recorded lectures and the unit outline (which are available through the LMS).

See below for details of the textbook, the weekly timetable for the unit, assumed knowledge for students taking this unit, and assessment details.

A link to the schedule of topics covered can be found on the left sidebar, as well as a link to the Materials and reading section of the website, where lecture slides and workshop exercise sheets will go up. The schedule includes a list of recommended readings for each topic. To gain maximum benefit from the lectures and workshops, I recommend you at least review these before attending class.

If you have queries regarding the unit, a good place to ask them is on the discussion forum for the unit, help5501 – that way, all students can benefit from answers to your questions.


Software testing and quality assurance processes are critical to ensure the success of software projects. This unit covers testing and quality assurance topics including:

  1. test processes – unit, integration, system, performance, acceptance, and installation tests;
  2. testing methods – code inspections, equivalence class tests, path testing and use case tests;
  3. verification and validation of software – inspections, test case design and execution, test metrics;
  4. quality assurance – ISO 9001 and CMMI standards, configuration management, process modelling, usability, complexity and process metrics, project and risk management, and reliability modelling; and
  5. formal methods for design and verification.

Unit Coordinator

Arran Stewart
Rm G.08m, CSSE Building

Consultation: Thursdays 4pm–5pm in Rm G.08 of the CSSE Building, or email for an appointment.
Students are also welcome to speak to me after the lectures.


You will need access to the following:

  1. Ammann and Offutt, Introduction to Software Testing, 2nd ed, Cambridge University Press, 2016

  2. Either of:

    Earlier editions should be fine as well.

The UWA library has copies of all of these (some online). You can access the library's holdings of the recommended texts here. There are also extracted readings from several texts available here.

Weekly timetable

There are two 1-hour lectures each week (starting week 1), and a 1-hour workshop (starting week 2). The lectures are recorded, but be aware that recordings sometimes fail. In the event that a lecture recording fails, you should make sure you contact a fellow CITS5501 student who was able to attend the lecture, so that you can obtain notes on what was discussed.

The timetable for CITS5501 is available here. Lectures are in the CSSE seminar room (1.24), and workshops in lab 2.01.

Note that lab 2.01 is booked for the use of CITS5501 for two hours. The second hour (10am–11am) is when workshop/seminar work will be done, but you are welcome to make use of the lab earlier as well. If demand requires it, we’ll run repeat sessions of the workshops.

It’s recommended that you review the relevant textbook chapters for lectures before attending the lecture. For a detailed schedule, see the links in the left sidebar.

Workshops elaborate on material introduced in the lectures and provide an opportunity to work on exercises in a group, and (in some weeks) get hands-on experience with testing and quality assurance technologies.

Assumed knowledge

Completion of 12 points of programming-based units is a prerequisite for enrolling in CITS5501. In particular, it’s assumed that you are familiar with programming in at least one object-oriented language (typically either Python or Java).

Some basic familiarity with testing frameworks for that language will be helpful. For CITS1001 (which uses the Java programming language), the relevant testing framework is JUnit. The textbook for CITS1001, Objects First with Java by Barnes and Kölling, contains good coverage of JUnit in Chapter 9, “Well-behaved objects”.

For CITS1401 (which uses the Python programming language), the relevant testing framework is unittest. The Python documentation contains basic examples of usage of the unittest library.


The assessment for CITS5501 consists of a project, short pieces of work submitted at workshops, and a final examination.

Assessment % of final mark Assessment Dates
Project 35% week 12
Workshop exercises 15% weeks 3, 6, 9
Examination 50% June examination period

All programming work is submitted using cssubmit. As the semester proceeds, your marks will be updated and recorded in csmarks.