A unit is the smallest testable part of an application like functions, classes, procedures, interfaces. Unit testing is a method by which individual units of source code are tested to determine if they are fit for use.
Unit tests are basically written and executed by software developers to make sure that code meets its design and requirements and behaves as expected.
The goal of unit testing is to segregate each part of the program and test that the individual parts are working correctly.
This means that for any function or procedure when a set of inputs are given then it should return the proper values. It should handle the failures gracefully during the course of execution when any invalid input is given.
A unit test provides a written contract that the piece of code must assure. Hence it has several benefits.
Unit testing is basically done before integration as shown in the image below.
Definition by ISTQB
- unit testing:The testing of individual software components.
Unit Testing is performed by using the White Box Testing method.
Unit testing should be done before Integration testing.
Unit testing should be done by the developers.
Advantages of Unit testing:
- Issues are found at early stage. Since unit testing are carried out by developers where they test their individual code before the integration. Hence the issues can be found very early and can be resolved then and there without impacting the other piece of codes.
- Unit testing helps in maintaining and changing the code. This is possible by making the codes less interdependent so that unit testing can be executed. Hence chances of impact of changes to any other code gets reduced.
- Since the bugs are found early in unit testing hence it also helps in reducing the cost of bug fixes. Just imagine the cost of bug found during the later stages of development like during system testing or during acceptance testing.
- Unit testing helps in simplifying the debugging process. If suppose a test fails then only latest changes made in code needs to be debugged.