Efficient Software Testing
Avoid embarrassing bugs!
Learn to verify and design software using efficient testing techniques.
Humans make mistakes, and AI-generated code is also often wrong. Some bugs are mild annoyances, others are a source of embarrassment, huge costs, privacy nightmares, or worse.
However, you can make good and reliable software.
The testing approaches in this course will let you catch most bugs early in development, with little overhead.
Course Contents
7 chapters, from basic to advanced1.5 h
English
Approaches | Overview of testing and workflows | 8m 30s |
Test-Driven Development | How to integrate testing into your work | 12m |
Unit Testing | Testing individual software parts | 15m 30s |
Integration Testing | Testing groups of units working in tandem | 7m 30s |
Good Test Design | Principles for good and efficient testing | 14m |
Testing Complex Code | Systemic approaches for complicated software | 23m |
Testing Random Code | Testing software that uses randomness, including scientific research software | 10m 30s |
The course does not award an accredited certificate, but it will help prepare you for pursuing entry-level certifications like Certified Tester Foundation Level (CTFL) from ISTQB or Certified Software Test Professional Associate Level (CSTP-A) from IIST.
Project Structure for Reproducible Work
Learn to structure your project files to avoid chaos and get reliable results.
Besides getting a good general template for organizing files, you will also learn what factors affect the evolution of project files, and how to account for these. This will enable you to adapt the material to a variety of projects and operating procedures.
For the different parts of the project, the course gives practical advice and standard practices.
And the examples are about making pizza!
Course Contents
7 sections44 min
English
Reproducibility Principles | The factors that affect reproducibility and how these relate to project structure | 5m |
General Project Structure | A simple, generic project structure you can start adapting to your work | 5m 30s |
Sub-structure: Data | Details about managing data | 5 min |
Sub-structure: Code | Details about managing code, including packaging | 8m 30s |
Sub-structure: Output | Details about managing the output (results) of a project | 11m |
Sub-structure: Doc | Details about managing project documentation | 3m |
Tracking Changes and Syncing | Good practices for version control related to project structure, and a simple workflow to reliably sync project copies | 6m |
Target Audience and Course Requirements
The course was created with early-career researchers in mind (especially those that don’t have a formal computational background) regularly working with code and computational projects, like in e.g. bioinformatics, data processing and analysis pipelines, machine learning applications, simulation, etc.
Productive Programming
Do you just want results but programming is getting in the way? Struggling to adapt your code to constant requirement changes? Trouble making your software run on different computers? Productive Programming can help! |
![]() Cheat sheet |
Target audience
The course is mainly aimed at beginner programmers, as well as scientists, researchers, or engineers who write programs as part of their work, but have an informal computational background (outside of computer science or software engineering).