Note on software testing

I believe the most important use case of automated tests is to "harden" some behavior in the code. Automated tests take some behavior and make it hard for you to change it. It can be a helpful thing if you want to preserve that behavior, and it can be annoying if you end up hardening some behavior you might want to change later.

I have seen companies doing tests wrong. They require tests for every little thing. And when you want to change the behavior later, changing the test takes 2x time compared to the actual code change.

Tests are useful, but you need to ask "What behavior do we want to preserve? and why?"