This is a draft update of my original 2018 article. The final version will be published at this URL in early 2023. In the meantime, please send me your feedback: Automated tests are important. Without them, programmers waste a huge amount of time manually checking and fixing their code. Unfortunately, many automated tests also waste a huge amount of time. The easy, obvious way to write tests is to make broad tests that are automated versions of manual tests. But they’re flaky and slow.