Testing terminology: Bug
Reference page: Error, Bug, Issue, Incident
Let’s start from definitions.
A software bug is the common term used to describe an error, flaw, mistake, failure, or fault in a computer program or system that produces an incorrect or unexpected result, or causes it to behave in unintended ways. Wikipedia.org
“An unwanted and unintended property of a program or piece of hardware, especially one that causes it to malfunction.” Dictionary.com
While definition in Wikipedia brings together all descriptions, Modern Computing Dictionary has more specific definition.
Although quite often bug is referred by programmers and testers with slight but important difference.
By testers.
- As a malfunction or inconsistency in program’s behavior or outcome that deviates from expected one, proven to be correct
- Expected result / behavior can be explicitly defined in documented requirements, by other components of a system, or based on the common sense
By programmers.
- As a discovered, documented, and localized behavior of a program
- Bug, reported by testers, could be traced down to a number of co-dependent or independent bugs in code
- Bug, reported by testers, could be caused external reasons: configuration settings of the application, Operating System, hardware, etc. As a result, either the program code is rewritten to adjust to or handle behavior of environment, OR the application is backed up by requirements to users to provide specific quality of environment
Common attributes of a bug.
- Requires a proof and needs to be reproducible in order to start fixing process
- In the most cases, found from an end-user site
- In the most cases, found by a person who did not create the code containing the bug
- In the most cases, can not be fixed by a person who found it
- Often requires external (by testers) and internal (by programmers) investigation to be nailed down
- Correction might be complex and might involve significant cost