When a development project is under strict time constraints, one of the first things I hear is, “I don’t have time to write any tests.” Or, “i’ll write some tests at the end, if I have time.” The presumption here is that automated tests are not critical or foundational or key to well designed code, clean code, good architecture, functional verification, etc. The presumption is that auto tests are “extra”, nice to have, and great if you have the spare time.

The basic flaw with this approach is that you have no way verifying the design OR the functionality of your code. You have no guardrails. Tests force you to design for SRP. Tests allow you to quickly confirm the functionality of the code against multiple test cases simultaneously during development. Tests functionally document your code to everyone else. Tests provide regression confirmation as new code is added, new functionality is added, bugs are fixed, requirements change, etc.