??? 07/12/05 13:25 Read: times |
#97145 - debugging is NOT testing Responding to: ???'s previous message |
It's interesting that there's such a stream of discussion of monitor-based debugging at this point.
Nonetheless, it's VERY important to remember that debugging and testing are two VERY different efforts in the development process. Debugging begins once the system has survived simulation, if you take that step, while testing immediately preceded delivery. Debugging can involve non-deliverable code snippets, while testing involves only the code that will ultimately be shipped. That code should never, Never, NEVER include anything that is not absolutely required for proper function of the delieverable system. It should never contain debug-aids, stubs for "future" enhancements, etc, just as hardware should never include features not required by the design specification. There are times, of course, when a circiut does "double duty," i.e. may be used for more than one application, in which case the objective specification will reflect that as a requirement, but if you design for a single application, then you shouldn't provide physical or logical features not required to meet the contracted requirements. Testing involves the deliverable hardware/firmware/software and consists of numerous rigorous exercises consisting of rigorously documented external stimuli applied in carefully controlled/monitored circumstances, such that the test stimulus, anticipated response, and observed response can be recorded and compared. Clearly, when anticipated and observed responses fail to compare, some remedial action is required. Either the anticipated result is in error, or the hardware/firmware/software is misbehaving, in which case it is in error. When the stimuli include conditions deemed to be outside "nominal" operating conditions, certainly an appropriate test strategy, the test results should be repeatable. How one debugs one's hardware/software/firmware is often a very personal thing. Testing is generally not. Testing is a predetermined process, often the one from which design criteria are extracted when initial specifications are developed. Debugging occurs during development. Testing occurs throughout the product's life. Please don't confuse the two. RE |