DIT 636/DAT560 - Software Quality and Testing

Course Information:

  • Course Name: DIT636/DAT560 - Software Quality and Testing
  • Semester: Spring 2024 (Study Period 3)
  • Instructor: Greg Gay

Course Purpose

Our society is built on software. It powers our homes, it manages our private information, it controls our cars, it automates our factories, and it even regulates our bodies. It is incredibly important that we construct robust, operational systems, especially given growing demand for features, limited development budgets and strict time constraints.

The key to delivering robust software is through a thorough verification and validation (V&V) process. In this course, we will explore the V&V process and examine a variety of methods to test systems, prove their correctness, and provide evidence that the software we build is reliable and safe to use. The course introduces the students to the concepts and best practices of quality assurance and testing in software engineering. The course has two general themes: (1) the role of quality assurance in software development; (2) the role of testing in software quality assurance.

In this course, we first introduce the notion of software quality and quality assurance. We present methods and techniques to assure quality of both the end product (a system or application), and for the software process itself. We then cover testing tools, techniques and methods that can be used to assess the quality and correctness of software systems. We conclude with formal methods of proving certain properties of software, and contrast those techniques to testing in terms of completeness, soundness, and scalability. The course brings understanding on how these methods, techniques and tools can be used in a software development project to increase the software quality.

Learning Objectives

Knowledge and understanding
  • Explain quality assurance models in software engineering and the contents of quality assurance plans
  • Describe the distinction between software verification and software validation
  • Name and describe the basic concepts on testing, as well as different testing techniques and approaches
  • Describe the connection between software development phases and kinds of testing
  • Exemplify and describe a number of different test methods, and be able to use them in practical situations
  • Exemplify and describe tools used for testing software, and be able to use them and interpret their output

Competence and skills
  • Define metrics required for monitoring the quality of projects, products and processes in software engineering
  • Construct appropriate and meaningful test cases, and interpret and explain (to stakeholders) the results of the application of such test cases (using appropriate tools) to practical examples
  • Develop effective tests for systems at differing levels of granularity (e.g., unit and system level)
  • Plan and produce appropriate documentation for testing
  • Apply different testing techniques on realistic examples

Judgement and approach
  • Identify emerging techniques and methods for quality management using relevant information sources
  • Identify and hypothesize about sources of program failures, and reflect on how to better verify the correctness of such programs

This content is made available in the interest of sharing educational material with any who might find it useful. This page is updated periodically, and may not be in synch with the course itself. For current course students, the latest content, assignment submission, and discussion forums are available on Canvas.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Note: All documents were originally written in Google Docs and converted to PDF and PPTX/DOCX. The PPTX/DOCX versions may be accessed by replacing the end of the link (.pdf -> .pptx, .docx). There may be some formatting errors in slides that did not exist in the original document. Access to the original Google Docs version is available on request (greg@greggay.com).

Documents

Lectures