Unit testing tests the smallest unit (module, component - the smallest testable part of an application) for which a design has been developed. A unit may include a collection of smaller sub-units (functions, subroutines), but the design does not certainly define these explicitly; they are often left to the developer.
The main purpose of unit testing is to separate each part of the program and demonstrate that the particular parts are accurate.

A unit test provides a strict, written contract that the part of code must satisfy. As a result, it affords some advantages. It permits an automation of the testing process, diminishes difficulties of detecting software bugs contained in more intricate parts of the application, and test coverage is usually increased because attention is given to each unit.
QAtestLab pays an attention to Unit testing, because it detects software bugs on the early stages of the development cycle. Unit testing has proven its importance in that a great percentage of problems are detected during its use.
Units usually are not accomplishable by themselves and may require some type of driver, harness or other test tool to drive them.
Units are typically tested with a comprehension of the internal workings of the unit (white-box testing).
The cycle of development, testing, fixing and retesting tends to be highly frequentative.