Testing is like....
The idea for this post came from The Bloggers Club where Heather Reid from Ministry of Testing came up with a challenge of explaining testing with an analogy. So here is my entry.
Testing is like riding a bike
We often hear the term "programming/coding is like riding a bike". To me, I also think that testing and riding a bike is similar in some ways. Testing is a skill and with any skill, it takes time to be good at it. Some people think that you learn by reading or watching and while this is true in a sense, you actually learn something by doing it. You can read about the different software testing techniques or watch courses/video tutorials on how to test an application using different testing tools but you can only solidify what you've learned if you apply it continuously. As software testers, we need to make sure that we adapt continuously so we can always provide a lot of value in any projects that we are part of.
The first time you ride a bike, you first explore the bike itself and get familiar with all the different parts. Similar with testing an application, you explore the application first and get familiar with the different features and any dependencies it might have. When you ride a bike, you will fall the first couple of times and you'll get hurt but you get back up and try again until you get the hang of it. Similar with testing, there are times when you will miss a bug and it will be deployed to production (don't worry it happens, there is no 100% bug free software!) but overtime, you improve and make sure that the bug can be caught on an earlier stage.
Electric Bikes 🏍
We can also liken electric bikes with testing specifically with automated tests. Having an electric bike can help us go faster and further. Similar with having automated tests, it can help us release applications faster by automating tests that we normally test manually which can help us speed up our testing cycle. We can still use a regular bike but imagine cycling uphill, it will take much longer and drain our energy (unless you are an athlete! 😅). Rather than enjoying the view up the hill and exploring the surroundings, you spend most of your time cycling this hill. Similar with testing, executing tests manually, which can be automated instead, takes longer and drains our time and energy. Rather than exploring the application so you can find the unknown bugs, you spend most of your time doing regression testing.
Cycling without protective gear 🙅🏻♀️
We can also take the scenario of cycling without protective gear on. If you're in a hurry and just want to reach your destination as quickly as possible, you run the risk of getting hurt if you are not careful, especially if you cycle in a big city. Similar with testing, if your team wants to release something quickly to production without thinking carefully about the risks, not analysing the requirements carefully and not doing any proper testing plan or strategy, then you run the risk of breaking the product.
Teaching someone how to ride a bike 👩🏻🏫
Imagine as well if you are teaching someone how to cycle, at first you have to guide them and be the navigator for a while to make sure that they are doing it right. Over time, they will be comfortable and learn to do it without your assistance. Similar with testing, when you start mentoring other team members as you start advocating for quality as a team responsibility, you have to support them for a while and be on hand to teach them until they get used to it. Once they are confident, you can stop being the navigator and focus on other areas where you can provide more value.
Bike maintenance 🛠
The last comparison that I want to make is with bike maintenance. If you don't maintain your bike regularly, the bike will get rusty over time and lose its value. Similar with testing, if you don't keep up with all the testing techniques or if you don't fix the failing automated tests, the value that it provides will diminish over time. If you also stop cycling, you stop being active and healthy. Similar with testing, if you don't have any suitable process in place, the health of your application's codebase will not be great.
Do you agree with the analogy or not? What are your thoughts? If you want to read what other bloggers have written, check out the bloggers club! 🙂