There are many demands placed on a software engineer’s time. High quality, robust feature count, and low cost are often considered critical goals, even though they generally compete against each other. In many development environments, time to market is critical, and the specification is in flux throughout the development process. Too often, testing gets “whatever time is left” between the point at which the code is finished and the date it must be shipped.

While it may be impossible to fix all the problems with the environment in which software engineers must work, it is helpful to quantify the challenges they face. This paper aims to help the software engineer develop a practical approach to testing software (firmware). By understanding the goals of a given testing strategy and the associated costs, better decisions can be made as to what to test, and when.