Unit Tests are one of the development activity which is undermined by the team during any SDLC Lifecycle. I am one of them who does that, But I learnt the importance of it in an excruciating way. I want to share some of my experiences of how implementing test cases has helped me.
I am not going to discuss the importance of software design specification (SDS) here, but we are talking about the plan which goes in the mind of a developer after he interprets the requirement and before he starts coding. The design(How many classes, methods/behaviours, configurations, dependencies) is implicitly charted in the head of a developer provided he has enough time to think, he keeps getting better at this with time.
Life is not what we have expected it to be. The timelines will become narrow all of a sudden. Not having a proper method/practice will force the developers to jump right into development without appropriate design. By implementing the TDD(Test Driven Design) environment, you can solve this issue. TDD forces developers to define the classes & Methods first and validate them with the expected and actual values. Firstly, the tests will fail and as the developer(s) keep adding the functionality the tests will pass.
Changes & Integrations:
Changes are inevitable at least in the software industry. We should always be embracing the change. Once we have a product/business which is up and running and tomorrow, we want to migrate/change something we cannot afford major bugs on a stable product, by then the code/product/business would have grown like massive. This situation can be avoided by having the tests as they validate the before and after condition which helps us.
Having tests will help the process to be more agile as another developer understands the code better, and functionality due to the design principles forces by the TDD. There are also checkpoints to validate the work for both business and the developer.
Having tests will also play a crucial role in integrating with DevOps as we move forward. Any downstream systems planned will also be integrated easily due to the TDD we followed.
We have seen how implementing tests will reduce bugs, keeping business agile and also reduces the effort of the testing team since we deliver a more stable build. Indirectly we save a lot of time, which is nothing but the cost to the Business owner.