Software Testing

Web page for the lecture "Software Testing" in the winter term 2019/2020

 Overview

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

Announcements

  • IMPORTANT! Register for the lecture, for detials see below!
  • Afterwards, Please enroll yourself in the Moodle of the lecture: https://elearning.ovgu.de/course/view.php?id=6407
    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.
  • Web page for the winter term 2019/2020 is now updated & online

Registration

  • Lecture: Please register for the course on the corresponding LSF page (see above for the link). This is important tas he 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 long list, indeed. Hence, I recommend to keep pace by solving quizzes and assignments timely and not to wiat until the very end!

Schedule

Week Lecture Exercise
CW 42 (14.10.18) 1. Welcome to SWT ---
CW 43 (21.10.18) 2. Foundations of Software Testing (principles, terminology) TBA
CW 44 (28.10.18) --- NO LECTURE --- ---
CW 45 (4.11.18) 3. Functional Testing (Black-Box) TBA
CW 46 (11.11.18) 4. Structural Testing (White-Box) TBA
CW 47 (18.11.18) 5. Unit vs. Integration Testing & Mock Objects TBA
CW 48 (25.11.18) 6. Test code quality (test smells, best practices) TBA
CW 49 (02.12.18) --- NO LECTURE --- ---
CW 50 (09.12.18) 7. Model-based Testing TBA
CW 51 (16.12.18) 8. Design by contract & property-based testing TBA
CW 02 (6.01.20) --- HOLIDAY --- ---
CW 03 (13.01.20) 9. Test lifecycle and Static Testing TBA
CW 04 (20.01.20) 10. guest lecture: CI and DevOps in .NET TBA
CW 05 (27.01.20) 11. Summary Q & A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

NOTE: guest lectures may be switched with other lectures, depending on the availability of guest lecturers!

Lecture

Day

Time

Frequency

Room

Instructor

Monday 13:00 - 15:00 (c.t.) weekly G10 - 111 S.Schulze

Instructor (contact data)

  • Name: Dr.-Ing. habil. Sandro Schulze
  • Office: G29-109
  • E-mail: sanschul[at]iti.cs.uni-magdeburg.de

Exercise

Group

Day

Time

Frequency

Room

Teaching Assistant

Group A Monday 11:00 - 13:00 (s.t.) weekly G26.1 - 006 (URZ) Sandro Schulze
Group B Tuesday 13:00 - 15:00 (c.t.) weekly G29 - 144 Sandro Schulze

NOTE: On mondays exercise, we start at 11 am sharp!

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).

Letzte Änderung: 25.09.2023 - Ansprechpartner: