Unit Testing - Limitations of unit Testing
Unit testing will not catch every error in the program. By definition, it only tests
the functionality of the units themselves. Therefore, it will not catch
integration errors, performance problems or any other system-wide
issues. In addition, it may not be easy to anticipate all special cases of
input the program unit under study may receive in reality. Unit testing is only
effective if it is used in conjunction with other software testing activities.
It is unrealistic to test all possible input combinations for any non-trivial piece
of software. Like all forms of software testing, unit tests can only show the
presence of errors; it cannot show the absence of errors.
To obtain the intended benefits from unit-testing, a rigorous sense of discipline
is needed throughout the software development process. It is essential to keep
careful records, not only of the tests that have been performed, but also of
all changes that have been made to the source-code of this or any other unit in
the software. Use of a version control system is essential; If a later
version of the unit fails a particular test that it had previously passed, the
version-control software can provide list of the source-code changes (if any)
that have been applied to the unit since that time.
|