Skip to content

Series: Automated Software Testing

About this series

Originally in workshop-format, these articles should help anyone new to automated software testing to get started, and also to dive deeper.

This series is aimed at different levels of software engineers, starting at beginner-friendly, up to intermediate-to-advanced. However, a basic understanding of concepts of programming is assumed in most articles.

I try to keep this series programming-language agnostic. The occassional code example will be simple enough to understand from any programming background. If not, please tell me and I'll include a second, or a better one!

The Basics

  1. What is Automated Software Testing and why should you do it?
  2. The proper refactoring workflow
  3. A minimal testing-exampleand what can be improved
  4. Test GranularitiesUnit-, Integration- and End-to-End Tests
  5. The three parts of any testGiven, When, Then or Arrange, Act, Assert
  6. When should tests be executed?
  7. Test-Driven-Developmentand Ping-Pong pair programming
  8. Black-box vs. White-box Testing
  9. Test Doubles: Mocks, Stubs, Spies
  10. The concept of testabilityor: How to write testable code
  11. Stuff that you should know but doesn't deserve it's own article (yet?)A small glossary and rules of thumb
  12. What's enough?or: When should you stop writing tests?
    1. Test CoverageMeasuring test-suite usefulness
  13. Testing Workflows
    1. Regression TestingMaking sure you only have to fix that bug once
    2. Bug Hunting / Test-DebuggingAn alternative to classic step-by-step-debugging and console.log-ing


  1. User Interface Testing
    1. Screenshot Testing
    2. DOM and Snapshot Testing
  2. Pattern: Dependency Injection
    1. How does Dependency Injection help with testing?
  3. The issue with Test Coverageor: Why mutation testing is awesome
  4. Smoke Tests