DIT 635 - Software Quality and Testing

Course Information:

  • Course Name: DIT635 - Software Quality and Testing
  • Semester: Spring 2021 (Study Period 3)
  • Instructor: Greg Gay
  • Lecture Hours: Wednesday, 08:15 - 10:00 and Friday, 10:15 - 12:00 (lectures); Friday, 13:15 - 15:00 (exercise sessions)

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.

The course first introduces the notion of software quality. The students are made acquainted with quality and quality assurance. They learn methods and techniques to assure quality of both the end product (a system or application), and for the software process itself. The role of quality assurance is described for software, for a software process, and for a software project. It is explained how these are related in an organization. The course then covers testing tools, techniques and methods that can be used to assess the quality and correctness of software systems. The course brings understanding on how these methods, techniques and tools can be used in a software development project to increase the software quality. An overview of other verification techniques are also presented.

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
  • Exemplify and describe the area of formal verification in general, including model checking and runtime verification, and its relationship to software quality
  • 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
  • Write models in at least one formal specification language 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

Assignments