Software Testing

Web page for the lecture "Software Testing" in the summer term 2024

 Overview

Leturer:  Dr.-Ing. Sandro Schulze
Lecture:  LSF entry | Moodle entry
Exercise: LSF entry

Announcements

  • IMPORTANT! Register for the lecture, for details see below!
  • Afterwards, Please enroll yourself in the Moodle of the lecture (see above for the link).
    This moodle will contain all material of the lecture. Moreover, you are eligible to receive important information (also on short notice) via moodles messaging capabilities.

Registration

  • Lecture: Please register for the course on the corresponding LSF page (see above for the link). This is important as the course has a limit of 50 participants!
    Participation takes place based on "first come, first serve"

Content

In this lecture, fundamental as well as advanced concepts of software testing are introduced. In particular, the following topics are covered:

  • Test Process (& its relation to software development process) and testing terminology
  • Foundations of software testing
  • Concrete dynamic testing techniques (black-box, white-box), including corresponding test design techniques and coverage criteria
  • Test-driven design and development
  • Model-based and state-based testing
  • test and development tools in practice: git, maven, IntelliJ, JUnit...

What can you expect?

This lecture is about software testing and how to automate testing as far as possible. Hence, within this course, we will have a closer loot at the most important concepts of software testing in practice. In particular, you will:

  • Become more familiar with some basic principles of software testing, why it requires creativity,
  • Use testing vocabulary, to improve your communication,
  • Analyze the structure of your source code and devise a set of meaningful tests, and automate these tests using JUnit,
  • Learn how to think about and test possible corner cases, as developers often forget to deal with such cases (called boundary testing),
  • Be able to use the most popular structural testing adequacy criteria, such as line coverage, branch coverage, and path coverage as well as understand their differences,
  • Propose refactoring opportunities for increasing testability,
  • Apply mock objects in order to unit test a class,
  • Judge the internal code quality of your test suite and advice possible improvements,
  • Understand and avoid flaky tests, and
  • Refactor and clean smelly test code.

Puuh, this is a long list, indeed. Hence, I recommend to keep pace by solving quizzes and assignments timely and not to wait until the very end!

Course Format:

The Exercise consists of three parts that require students to actively reflect the knowledge form lectures and to apply selected techniques in practice.

Labwork/Assignments:

The objective is to apply certain techniques on your own. To this end, you will extend a Java implementation of the famous Pacman game during the semester.
There will be four deadlines that should not be exceeded (otherwise points will be lost).
You are allowed to form groups of two students to collaboratively solve the exercise assignments.

Requirement: 50% of the points on assignments must be achieved to get the exam permission

Bonus: If you achieve more than 90% of the points for the labwork, you will get a 5% bonus on your exam

Quizzes:

In advance of exercises, there will be online quizzes that must be solved. Usually, these quizzes reflect on the recent topic of the lecture, but may also require paper reading (see below).
Quizzes will be made available timely after a lecture and will have a deadline. However, there will be enough time to solve each quiz (~4-5 days).
Results of quizzes will be discussed in the exercise.
NO teamwork allowed.

Requirement: 50% of the points on quizzes must be achieved to get the exam permission.

Paper Reading:

Occassionally, I will provide papers that have to be read in preparation of the exercise. They cover particular aspects of software testing and will be used for some disucssion within the exercise.
For now, the idea is that you read the paper in advance and than discuss particular questions regarding the paper in groups in the exercise.
I suggest to keep these discussion groups stable, for both, minimizing organizationla overhead in exercises and to make if more comfortable yourself.

NOTE: An exercise is not a repetition of the lecture. If there are neither questions nor discussions (based on your preparation), I am not willing to tell the same things twice.

Literatur & Study Material

  • M. Pezze and M. Young, “Software Testing and Analysis”, John Wiley 2008.
  • P. Ammann and J. Offutt, "Introduction to Software Testing", 2nd edition 2015.
  • A. Zeller: "Why Programs Fail: A Guide to Systematic Debugging", 2nd edition 2012.
  • A.Spillner & T. Linz, Basiswissen Softwaretest - Aus und Weiterbildung zum Certified Tester, 5.Auflage, 2012. (German only)

More literature, especially scientific articles, will be added adhoc during the semester (most likely, over the Moodle platform).

Last Modification: 21.03.2024 - Contact Person: