Unit testing allows scrutinizing individually all testable components (unit, object, class, function, etc.) of your software to verify whether they operate correctly.
Unit testing is a primary testing that includes negative and positive testing of newly-added software functionality that is carried out during development process.
Unit testing implies testing of each individual element in artificially created environment.
This type of testing is implemented on the basis of approved testing requirements with the use of automation and manual tests.
For internal projects we use test first approach, that is when automation tests are created before software development is started. In this case, tests written before coding, are started against created and integrated code patterns. The development process continues until all tests are successfully passed.
We also write separate test cases describing steps and expected results, and use cases describing sequence of actions made by user and system response to these actions.
Unit/functional testing is carried out during development of each system unit. That’s why in case any defects are detected in the unit, you’ll have to redesign only the tested unit, but not the entire system.
Besides, unit testing allows identifying drawbacks in the requirements specification or in the project design. It also helps test whether pieces of program code work correctly on each stage of development. After the units are integrated, system and regression testing is quite enough. After unit testing there won’t be any errors in the units.
That will help save resources that you would otherwise spend on bug fixing after product release.