Course Description

The syllabus can be found at the Chalmers Student Portal.

Testing is by far the most practically used method to obtain confidence in the quality of a software product. Different techniques give a different amount of confidence. This course focuses on 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. In particular, the focus of the course is on model-based testing, that is how to design meaningful models useful for the (automatic) extraction of test cases from the models. Some testing tools for specific modeling languages will be used and applied to different examples.

Purpose and Objectives

The course provides the students with a background on how testing tools can be used to improve software quality, in particular automatic testing generation using model-based testing techniques.

Learning Outcomes

In order to pass the course the student should be able to:

Knowledge and understanding

  • Explain the distinction between software verification and software validation;
  • Describe the connection between software development phases and kinds of testing;
  • Describe and explain (a number of) different test methods, and use them in practical situations;
  • Describe and explain what model-based testing is.

Skills and abilities

  • Construct models in the modeling and specification languages learned in the course;
  • 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;
  • Apply model-based testing on realistic examples.

Judgment and approach

  • Exemplify and describe tools used for testing software, and use them and interpret their output;
  • Identify and hypothesize about sources of program failures, and reflect on how to better verify the correctness of such programs.


To be eligible for the course the student should have a bachelor degree in Software Engineering, Computer Science or equivalent, including a completed course in programming. Knowledge of data structures and propositional logic is recommended.


All the “theoretical” lectures are given at the very beginning of the course. This is done so the students have the needed background for working on the mini-project. See the schedule in the Lectures tab. The purpose of the lectures is not to cover all the material, but rather to highlight important issues concerning testing in general and model-based testing. Students might be asked to read some additional material to complement the lectures and be able to work on the details of the assignments.


Practical work is done in groups, by developing a mini-project. Please refer to the Project Assignment tab for more details on the course’s assignments.

Final examination

To pass the whole course it is necessary to pass both, the mini-project and the written exam. The grade of the course is determined by the result in the written exam, which will be performed individually. It will comprise questions concerning the modules given in the course lectures, and it might also include tasks related to the course assignments and eventual guest lectures. See the Examination tab for more details on the course’s grading system.

Course language

The course will be taught in English.