How to Test Software in 2023 🔍
A practical and opinionated take on one of engineering's most divisive topics.
Testing is an ever-controversial topic in software.
You would be hard-pressed to find any engineer who doesn't believe that testing is crucial to their workflow. Despite this, many teams struggle and are not happy with it.
Additionally, the general consensus around what good testing looks like seems to shift all the time. Testing is so ingrained into all parts of the dev workflow that any change to such a workflow leads to changes to testing.
For example, introducing feature flags, or switching to trunk-based dev, or adding or removing a Staging environment, or using AI to write code may all bring changes to your testing strategy.
In this article, I will write my take on what good testing looks like, and suggest a practical workflow that works today, in 2023.
Here is our agenda for today:
⚖️ Contracts vs Implementations — an important mental model to reflect on testing.
🔨 Regressions — figuring out the true ROI of tests.
🗂️ Types of tests — a basic classification with the main types you should know.
⛰️ Testing Pyramid — a classic testing model made popular by Martin Fowler.
🏆 Testing Trophy — a modern testing model which I personally prefer.
🔄 My Testing Process — we put all of this together to design a practical testing workflow.
✨ Other types of tests — we go beyond the basics with chaos engineering, load, security, and data testing.
💬 Community examples — how Product Hunt and Swarmia do testing.
📚 Resources — as always, further articles and resources to learn more
Let’s dive in!