ISTQB definition:
To understand the key differences between these words, let's first take a look at each definition:
Error (mistake) - is a human action that produces an incorrect result; Defect (bug, fault) - an imperfection or deficiency in a work product where it does not meet its requirements or specifications; Failure - is an event in which a component or system does not perform a required function within specified limits.
The precise chain of events goes something like this: A developer makes an error (or mistake). The developer thus puts a defect (or fault or bug) into the program. When the program is executed, if the right conditions exist (or the wrong conditions, depending on how you look at it), the defect may result in unexpected behavior; that is, the system exhibits a failure. Other sequences of events can result in eventual failures, too. A business analyst can introduce a defect into a requirement, which can escape into the design of the system and further escape into the code.
Human language:
Humans are fallible beings.
So, the software is fallible because humans are fallible.
Error/Mistake - this is a human action that produces an incorrect result. The mistakes made by a programmer is known as ‘error’. This could happen because of the following reasons:
some confusion in understanding the requirement of the software;
some miscalculation of the values; or/and misinterpretation of any value, etc.
Defect/Bug/Fault - is a condition in a software product that does not meet a software requirement (as stated in the requirement specifications) or end-user expectations. In simple words, is a deviation between the expected result and the actual result in an application or in a module. If a developer finds an issue and corrects it by himself in the development phase, then it’s called a defect. If the testing team finds an issue during the testing period, it's called a bug - the result of a coding error or fault. If an end-user detects an issue in the product, then that particular issue is called a failure.
Failure - is the inability to achieve a certain goal.
Life example:
The developer makes an Error/Mistake - the QA engineer does not find a Defect/Bug/Fault - the user detects a Failure.
Precondition: 1. The development team builds a website for the online store with the requirement: The user must be able to delete the product from the basket.
For that reason, the developer writes a code, and during this process makes an accidental Error/Mistake, for instance: one additional space inside the code. After the development process, the QA Engineer tests the website, during this process he tries to add the product to the basket, but does not try to delete it, It means that QA Engineer does not notice a Defect/Bug/Fault. Finally, a development team releases this website. Then that the end user navigates to it, adds the product to the basket, decides to delete it from it, and after clicking on the delete button nothing happens, which means the user occurs Failure.
Conclusion:
So, if you are asked at an interview: What is the difference between Error, Bug, Defect, Failure, and Fault? The best way to answer is: Error and mistake have the same meaning, and they are synonyms;
Error (mistake) - is a human action that produces an incorrect result; Defect/bug/fault also have the same meaning, and they are synonyms; Defect/Bug/Fault - a deviation between the expected result and the actual result in an application or in a module; Failure - is the inability to achieve a certain goal.
Error/mistake happens first during the development process, and leads to defect/bug/fault during the testing process, then happens a failure - during user experience in the product.
Comentários