“Tests” and “code quality” – two concepts that I’ve seen conflated by developers, team leads, and CTOs alike:
Our codebase has a lot of tests and great test coverage. Our codebase is high-quality!
No, not necessarily. All that having a lot of tests means is that you’ve, you know, tested your code. Having 100% test coverage says nothing about the quality of the code being tested.
Tests don’t atone for bad architecture. Tests don’t absolve you of design pattern violations. Tests don’t repay tech debt.
You can test good code. And you can test bad code.