What is the difference between a defect and a bug?
That is: A defect does not necessarily mean there is a bug in the code, it could be a function that was not implemented but defined in the requirements of the software.
From the Wikipedia page on software testing:
There some different terms related to software bugs. Excerpt from a course I took:
According to this, there is no difference between a defect and a bug. However, some people argue that bug is an error that is found before releasing the software, whereas defect is one found by the customer.
I couldn't resist posting the famous "first actual case of bug being found".
Quoting Ilene Burnstein from the book Practical Software Testing (recommended) who parts from the definition in the "IEEE Standards Collection for Software Engineering" (1994) and "IEEE Standard Glossary of Software Engineering Terminology" (standard 610.12, 1990):
You can read the full chapter in Google Books, here.
Back in the old days - defective operation of a computer was caused by all sorts of things - including rats chewing the wiring and real bugs (critters) getting into the works.
The term BUG has stuck as a term that means something not working as expected.
BUG should be thought of as a jargon term meaning a defect.
A defect is a technically correct term meaning that the thing does not do as it should.
Wherever possible, using DEFECT instead of BUG actually carries with it a connotation that we acknowledge our failures (our defects, our lack of understanding of user requirements or the things we overlooked in implementation) instead of dressing it up as the more trivial sounding "bug".
Try not to use the term BUG. Its silly, irrelevant, historical, and trivialising.
The difference is that the term "bug" sound magical. As if a program can randomly have bugs in it after you're done programming. If it has random bugs then it means you didn't conform to the specifications and your program is in error.
A defect means an error where the program doesn't conform to the specifications. This is more severe and basically says, any error is a huge problem with the program and this means that the program is not fit to be released.
The difference is in the attitude of the programmers who use the terms. There are millions of programs that are released with bugs and people are fine with that because they accept for some reason that a bug is magical and random and that every program contains at least one bug. However, a programmer who uses the term "defect" may become uncomfortable with releasing a program with a defect because the term implies a greater severity.
The implications of preferring one term over the other affect us daily.
From the IEEE Standard Glossary of Software Engineering Terminology, which is cited in the Software Engineering Body of Knowledge KA for Software Testing and Software Quality:
I think the definition of failure is the most relevant. Everything begins with a mistake, whether it's in the requirements, the design, the implementation, or the test case/procedure. If this mistake is manifested in software, it becomes a fault. A failure is caused by the existence of one or more faults in software.
I'm not to keen on the formal definition of error, though. I very much prefer the definition provided by dukeofgaming in his answer, however, the one in this answer is the IEEE standard definition of error.
According to Dependability: basic concepts and terminology:
I understand defect as just another name for fault.
Bug is confusing and can represent a fault or a failure depending on the context.
Note that there is no mention of specification: even a spec can be faulty.
Dan McGrath's answer nailed it right.
Maybe an example would make it clearer.
Example: Client wanted the web form to be able to save and close the window.
Scenario #1: Web form have a save button, and another close button. Result: Defect, because client wanted the 1 button to save and close the window. Developer misunderstood and created separately. Because both buttons performed their requirements, it is not a bug, but a defect because it didn't meet client's requirement.
Scenario #2: Web form have a save & close button, but only saves but does not close. Result: Bug. Because the button does not perform as required/expected. Developer knows it is suppose to produce that result but ultimately it didn't. (perhaps coding error)
Not sure if this makes it clearer.
p/s: from a developer stand point (I was once), both defects and bugs are just as important. We'll still fix it.
We even encountered weird anomalies, which we categorized under bugs and we continously try to figure out what is the cause and how to fix it. Terming it bugs doesn't make it trivial compared to defects.
Here is one I did earlier for my employer Q-LEAP based on the ISTQB vocabulary and I also checked the IEEE vocabulary. Enjoy.
Bug and Defect? The same even though one can have endless discussion about this. We have really other things to worry about, life is complicated enough already, etc.
An example of how the term is used in the wild, from "How Google Tests Software" p. 113. Open an article of "IEEE Software" and it's used the same way. Indeed, one rarely encounters the word "defect" in real life.
protected by gnat Apr 2 '14 at 19:35
Thank you for your interest in this question.
Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.
Would you like to answer one of these unanswered questions instead?