The primary goal of unit
testing is to take the smallest piece of testable software in the application,
isolate it from the remainder of the code, and determine whether it behaves
exactly as you expect. Each unit is tested separately before integrating them
into modules to test the interfaces between modules. Unit testing has proven
its value in that a large percentage of defects are identified during its use.
The most common approach to unit testing requires drivers and stubs to be written. The driver simulates a calling unit and the stub simulates a called unit. The investment of developer time in this activity sometimes results in demoting unit testing to a lower level of priority and that is almost always a mistake. Even though the drivers and stubs cost time and money, unit testing provides some undeniable advantages. It allows for automation of the testing process, reduces difficulties of discovering errors contained in more complex pieces of the application, and test coverage is often enhanced because attention is given to each unit.
·
Is
the error due to a defect in unit 1?
· Is the error due to a defect in unit 2?
· Is the error due to defects in both units?
· Is the error due to a defect in the interface between the units?
· Is the error due to a defect in the test?
The most common approach to unit testing requires drivers and stubs to be written. The driver simulates a calling unit and the stub simulates a called unit. The investment of developer time in this activity sometimes results in demoting unit testing to a lower level of priority and that is almost always a mistake. Even though the drivers and stubs cost time and money, unit testing provides some undeniable advantages. It allows for automation of the testing process, reduces difficulties of discovering errors contained in more complex pieces of the application, and test coverage is often enhanced because attention is given to each unit.
For example, if you have
two units and decide it would be more cost effective to glue them together and
initially test them as an integrated unit, an error could occur in a variety of
places:
· Is the error due to a defect in unit 2?
· Is the error due to defects in both units?
· Is the error due to a defect in the interface between the units?
· Is the error due to a defect in the test?
Drivers and stubs can be
reused so the constant changes that occur during the development cycle can be
retested frequently without writing large amounts of additional test code. In
effect, this reduces the cost of writing the drivers and stubs on a per-use
basis and the cost of retesting is better controlled.
Must Read:
Must Read: