#

Summary

DevOps Taiwan

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.