An untested piece of code may contain fatal bugs. Software developers cannot afford to wait for users of the software system to discover them. A debugger cannot be used to find the bugs existing in the code unexecuted.
Structural testing is often difficult to perform.
Most test coverage analysis tools provide only one or two test coverage measurement metrics, such as the basic statement or block test coverage, so the user does not have much choice. The handful of tools that offer branch test coverage analysis can only show the analysis results in hard to read textual format. To use most test coverage analysis tools, the user must manually prepare an input-bin file for each project to tell the tools what files need to analyze with what compiler options. Often those tool need users to modify their makefile manually. Most test coverage analysis tools do not provide frequency analysis, which can help users pinpoint problems.