Course syllabus
Quality assurance and testing (DAT321 / DIT843 DAT321 / DIT843)
Course examiner and instructor: Francisco Gomes de Oliveira Neto, francisco.gomes@cse.gu.se
Teaching Assistants:
-
- Afonso Fontes
- Stefan Alexander Van Heijningen
Course content and aims:
The course aims to teach the fundamentals of quality management in software development projects focusing, particularly, in basic and advanced software testing practices and tools. Students will get hands-on experience in measuring software development metrics and apply various testing techniques to ensure quality in modern software development. Particularly, the course will address the following topics:
- Definitions of quality of software product, process and quality assurance.
- Software metrics to measure internal quality and external quality.
- Definitions and techniques surrounding test design, execution and analysis (e.g., test coverage, white-box and black-box testing).
- Definitions and application of various testing techniques (e.g., boundary value testing, property-based testing, search-based software testing).
- Definitions and creation of continuous integration pipelines.
- Evaluation of software visualisation to assess software development metrics.
- Techniques to bring awareness of sustainable software development.
Learning outcomes:
Knowledge and understanding:
-
- Explain fundamental concepts in software quality (e.g., internal / external quality, as well as quality in use) and quality assurance models.
- Describe how sustainability can be seen as a quality attribute in software products.
- Describe and explain definitions and activities related to software testing, such as faults, failures levels of testing and test automation
- Explain current research trends within software quality and testing (e.g., test flakiness, search-based software testing)
- Explain the distinction between software verification and software validation.
- Name and describe different testing techniques and approaches, such as mutation testing, automated test prioritisation, test case generation, exploratory testing, etc.
- Explain the concept of continuous integration and relate them to software development processes
Skills and abilities:
-
- Define metrics required to monitor and analyse different quality attributes of software products
- Measure quality of software products based on the data from development environments and tools.
- Explain and implement test activities in connection to different levels of testing (e.g., system, integration or unit level tests)
- Define and implement a test plan or a test scope based on quality goals.
- Design appropriate and meaningful tests.
- Apply automated testing technologies on realistic examples using relevant tools (e.g., automated regression testing on continuous integration pipelines)
- Use automated measurement systems for measuring quality of software products based on the data from the modern development tools
- Use modern tools for visualisation of trends in software quality
Judgement and approach:
-
- Assess the importance of software quality in relation to time and costs in software development projects.
- Assess the quality of sets of tests using software artefacts (e.g., execution logs, test scripts, history of test executions).
- Relate software quality to societal aspects of software development.
Course schedule, structure and teaching format:
The teaching will be carried out on campus. Refer to our main course homepage to see the detailed information about the course, such as lecture plan, assignments, schedule, and assessment.
Course literature:
The material from the course is composed of a mix of papers, videos and book chapters made available online to students via Canvas. Students are required to go through the referred material before each lecture. We will verify that preparation by doing practice quizzes at the beginning of each lecture.
Besides research papers, the course uses the following book:
- Effective software testing, by MaurĂcio Aniche.
Course summary:
Date | Details | Due |
---|---|---|