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!
- What is Automated Software Testing and why should you do it?
- A minimal testing-exampleand what can be improved
- Test GranularitiesUnit-, Integration- and End-to-End Tests
- The three parts of any testGiven, When, Then or Arrange, Act, Assert
- When should tests be executed?
- Test-Driven-Developmentand Ping-Pong pair programming
- Black-box vs. White-box Testing
- Test Doubles: Mocks, Stubs, Spies
- The concept of testabilityor: How to write testable code
- Stuff that you should know but doesn't deserve it's own article (yet?)A small glossary and rules of thumb
- What's enough?or: When should you stop writing tests?
- Test CoverageMeasuring test-suite usefulness
- Testing Workflows
- Regression TestingMaking sure you only have to fix that bug once
- Bug Hunting / Test-DebuggingAn alternative to classic
- User Interface Testing
- Screenshot Testing
- DOM and Snapshot Testing
- How does Dependency Injection help with testing?
- The issue with Test Coverageor: Why mutation testing is awesome
- Smoke Tests