Software Testing - Some Definitions
The following terms are defined in BS7925-1. They are the basic definitions about software bugs:
A human action that produces an incorrect result.
A manifestation of an error in software. The terms ‘defect’ or ‘bug’ are often used too.
A deviation of the software from its expected delivery or service.
The probability that software will not cause the failure of a system for a specified time under specified conditions.
The degree to which software conforms to its specification.
We can see from these definitions that an error may lead to fault and that a fault may lead to failures. Also, failures affect the reliability of a system. But some faults may not result in failure.
For example, a programmer may write code to obtain some working memory but forget to write the code to free that memory when it is no longer required. This fault causes a ‘memory leak’, the memory leaks away and is no longer available to any program. If the faulty code is not used very much then the memory leak will be small and the system may continue without any problems. However, if a large amount of memory leaks away then eventually the system will fail when it can obtain no more free memory.
A single fault may result in 0, 1 or more failures. If a fault does not cause a failure then the system reliability is not affected. A system demonstrating a high number of failures has poor reliability.