PA013 Software Testing and Analysis

Faculty of Informatics
Spring 2025
Extent and Intensity
2/0/1. 3 credit(s) (plus extra credits for completion). Type of Completion: zk (examination).
In-person direct teaching
Teacher(s)
prof. Ing. Tomáš Vojnar, Ph.D. (lecturer)
Ing. Jiří Pavela (lecturer)
Guaranteed by
prof. Ing. Tomáš Vojnar, Ph.D.
Department of Computer Systems and Communications – Faculty of Informatics
Contact Person: prof. Ing. Tomáš Vojnar, Ph.D.
Supplier department: Department of Computer Systems and Communications – Faculty of Informatics
Timetable
Tue 18. 2. to Tue 13. 5. Tue 16:00–17:50 A218
Prerequisites
At least basics of programming in both a higher-level programming language (such as Python) and a lower-level language (such as C). Knowledge of basics of concurrency and operating systems.
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
The capacity limit for the course is 30 student(s).
Current registration and enrolment status: enrolled: 21/30, only registered: 0/30, only registered with preference (fields directly associated with the programme): 0/30
fields of study / plans the course is directly associated with
Course objectives
The main goal of the course is to present to the students a range of techniques for basic as well as advanced testing and dynamic analysis of software. Apart from basic terminology, the course aims to cover technologies and techniques ranging from gathering data about analysed programs; various testing techniques, including special techniques, e.g., for testing concurrent programs or for performance testing; through selected frameworks for automated testing; up to using visualisation for identifying problems in programs. Moreover, basics of selected approaches to static program analysis are to be presented too, especially as an alternative to finding bugs through dynamic analysis and a way helping to boost efficiency of dynamic analysis.
Learning outcomes
At the end of this course, students should be familiar with a range of basic as well as advanced techniques and technologies for automated software testing and analysis. They should be informed about their strengths and weaknesses and be able to reason about their possible combinations and applications on different kinds of software projects.
Syllabus
  • Basic terminology from the area of program testing and analysis, coverage criteria.
  • Test automation, CI/CD, examples of automated testing frameworks (e.g., pytest, GoogleTest).
  • Collecting analysis data, SystemTap, eBPF.
  • Fuzz testing, delta debugging.
  • Runtime verification.
  • Overview of various static analysis techniques.
  • Data flow analysis, abstract interpretation, Meta Infer, Frama-C.
  • Concurrency-related errors, coverage metrics.
  • Extrapolating concurrency checkers, noise-injection.
  • Performance analysis.
  • Visualisation in program analysis.
Literature
  • SPILLNER, A. and T. LINZ. Software Testing Foundations, 5th Edition: A Study Guide for the Certified Tester Exam. Rocky Nook, 2021. ISBN 978-1-68198-853-5. info
  • AMMANN, P. and J. OFFUTT. Introduction to Software Testing, 2nd Edition. CAMBRIDGE: CAMBRIDGE UNIV PRESS, 2017. ISBN 978-1-107-17201-2. info
  • PEZZE, M and M YOUNG. Software Testing And Analysis: Process, Principles And Techniques. Hoboken, N.J.: John Wiley & Sons Inc,, 2007, 488 pp. ISBN 978-0-471-45593-6. info
Teaching methods
Lectures.
Independent study and experiments with a chosen method of testing or analysis and its implementation in some tool (or several tools), writing a technical report on the studied method and tools, the conducted experiments and their results.
Assessment methods
Evaluation of the technical report on the studied method of testing or analysis and its tool support. Maximum 40 points, at least 20 points are needed to pass the course.
Written final exam, accompanied by an oral part if need be. Maximum 60 points, at least 30 points are needed to pass the course.
Language of instruction
English

  • Enrolment Statistics (recent)
  • Permalink: https://is.muni.cz/course/fi/spring2025/PA013