Summary
Testing is one of the most important aspects of building software products.
It not only ensures correctness, but also creates opportunities to better align
engineering work with business goals.
I deeply resonated with a DevOps Taiwan meetup on TDD this week, and this article
shares my prospective on why I test, the benefits of testing, and the mindsets that
make it sustainable.
Testing deserves as much attention as development itself.
Why I test
Testing means different things to different engineers, but it leads to the same outcome. This is what it means to me.
#Automation
As a software engineer, I enjoy automating as many things as possible, especially
daily routines. As a result, test automation is a crucial practice for ensuring
system correctness.
As systems grow, test cases inevitably increase. Without automation, it would be
unrealistic to execute them manually for every release.
Confidence through correctness
Testing is the most reliable way to ensure correctness. At the same time, it gives me confidence to make changes, to move forward, and to do the right thing without hesitation. That confidence, in turn, gives me the courage to take on more responsibility.
#Aligning requirements
To keep test stable, I need to define clear and consistent interfaces in the system, and they are usually tied closely to the business domain. Therefore, writing tests becomes an opportunity to review features against their requirements, especially from client's prospective.
#The benefits of testing
#Refactorability
Refactoring is essential to maintaining software quality, but it only works when
the system is refactorable in the first place. Without proper test coverage, refactoring
risks breaking existing features or introducing new bugs.
More importantly, source code and test code rely on each other, but they should
not be changed at the same time, unless the requirements themselves changed. Tests
ensures that the behavior of the system remains consistent while the source code
evolves. In return, the source code provides the structure that allows tests remain
meaningful as the test cases are updated.
The longer I build, the faster I move
With automation and the confidence it brings, features can be updated with greater agility in response to new requirements. At a sufficient level of maturity, the time invested in test automation is far less than the time spent detecting and fixing bugs later. Sometimes, we even get excited when test fail because we know that the test coverage is becoming deeper and more meaningful.
#Testing reveals engineering maturity
I see testing as a reflection of high-level engineering ability. Writing effective tests requires clean code and strong architectural design, a solid understanding of requirements, and the ability to think in terms of behavior rather than implementation. Because of that, I often gauge an engineer's maturity by how they approach testing.
#Leave work on time
In Q1 2025, four engineers and I collaborated on a short-term demo application.
I was responsible for the backend and database. Even though the project was small
and temporary, I still implemented basic test automation.
During integration testing, several issues surfaced in other parts of the system,
and the team spent a significant amount of time fixing bugs and even worked overtime.
In contrast, my part had almost no issues. After discussion that with the PM,
I was able to leave work on time. Later on, I also helped two of the others finish
their tasks.
That experience reinforced my belief that testing builds confidence across the team,
and creates space to work sustainably, without unnecessary overtime.
Recommended mindsets
#A lonely journey
Because testing is a high-level skill, its learning curve is quite steep. Not
every engineer fully understands it or feels genuinely interested in it, especially
in current AI era, where shortcuts often feel tempting.
As a result, my journey with testing has sometimes felt lonely, but it has been
deeply beneficial. I also feel fortunate when I find colleagues or peers who share
the same values and mindset toward testing.
Start by changing ourselves, or small problems first
Changing ourselves is far easier than trying to change others. Instead of forcing
testing practices on teammates, the best we can do is inspire them by showing the
benefits we gain from testing.
If we want to improve the situation quickly, starting with small problem is often
the most effective approach. Letting teammates experience the impact firsthand
is usually the first step toward real change.
On the other hand, if there is a persistent gap between our abilities and the
environment we are working in, it may also be a signal that it's time to change
the environment itself.
The most efficient way to build an environment
Ideally, the most efficient way to build a testing-friendly environment is through leadership influence, including hiring decisions, because lasting change needs to start at the root. When both the system and its upstream source are kept clean, many problems resolve themselves naturally.
#Final thoughts
Testing is a high-level skill with a steep learning curve. It requires engineers
to understand not only implementation details, but also clean code, requirements,
and even the business domain behind the system. Most importantly, it asks engineers
to be willing to wear multiple hats.
I continue to invest in test automation because of the automation itself and the
confidence it brings, and I enjoy the advantages that come with it. Last but
not least, it has saved me a significant amount of time.
Do you test regularly in your work?
What percentage of your time is spent on development vs. testing?
What are the top three reasons you write tests?
I’d love to hear your thoughts. Feel free to share your
answers or start a discussion on this LinkedIn post.
