Introduction to Software Testing

Software testing is a powerful tool to ensure the functionality of the software at all times. This workshop introduces you to the fundamentals of software testing in the context of scientific codes and provides you with hands-on exercises to learn writing various testing types.

Learning Materials

  • Workshop slides (Download)
  • Recommended literature:
    • Sale, D.: Testing Python : Applying Unit Testing, TDD, BDD, and Acceptance Testing. Chichester, England :Wiley, 2014.
    • Homès, B.: Fundamentals of Software Testing. Germany: Wiley, 2013. (UB BS)
    • Martin, M., Martin, R. C.: Agile Principles, Patterns, and Practices in C#. Pearson Education. 2006.
    • Hubertz, J. 1.: Softwaretests mit Python (1. Aufl. 2016.). Springer Vieweg. 2016. (UB BS)

Learning Objectives

We answer common questions like:

  • Why do we need software testing and what are the advantages?
  • What types of tests are required for my code?
  • How are tests incorporated into existing codes?

And when you’re done you’ll be able to:

  • Write various tests for a given code
  • Analyse code coverage metric
  • Check code quality using linters
  • Partially automate the different testing processes
  • Get an impression of the testing framework of an in-house research code


  • Motivation for testing research software
  • Fundamentals of software testing
  • Basics of unit testing and hands-on tasks for (1) writing unit tests and (2) finding code coverage
  • Basics of acceptance testing and hands-on tasks for writing acceptance testing
  • Basics of code quality tests using linters
  • First step towards test process automation
  • Demonstration of the testing framework of an in-house research code