article-spots
article-carousel-spots
programs
Hard skills
Is it an anomaly, a bug, an error, or a failure? Basic terms in the tester's vocabulary
8 Oct 2021

Did you know that the term “bug” does not officially exist? The issues and problems occurring in the code are often referred to as bugs. However, it is a common misconception, and future QA engineers should know better than that. We've armed ourselves with the ISTQB glossary, enlisted the help of EPAM experts, and delved into basic terms that every tester should know. 

Let's start with simple things! 

What is a bug? 

A bug (official term — defect or fault) is, generally speaking, any defect in a product that prevents it from meeting the requirements. If, for whatever reason, the function returns the entire text of the Constitution instead of a number from 1 to 9, it means that a bug has occurred and some fixes are in order. 

Before the project team begins to work on the project, they lay down the requirements; the requirements outline the expected functionality of the product, which the tester will check later. As soon as a QA engineer detects a deviation in the system, they report a bug that the developer must fix. 

The story behind the term "bug" is a curious one: on September 9, 1945, scientists at Harvard University discovered a moth stuck in an electromechanical relay of a computer. They added the insect to a technical journal with the caption: First actual case of bug being found. 

What is an error? 

According to ISTQB, an error or mistake is any human action that causes an incorrect result. It can be an incorrectly entered password, which has caused a 403 error, or a developer’s mistake in the code that caused an accidental server crash. 

An error can cause a bug, although an error does not always equal a bug because it could be expected system behavior, for example, in the case of an incorrectly entered password. Simply put, the error can be the result of a defect, or it can be a proper response to an incorrect user action. 

What is failure? 

The full definition of a failure (sometimes referred to as an interruption) in the ISTQB glossary reads as follows: an event in which a system does not perform a required function within specified limits. But why use a separate term with an almost identical meaning as a bug? 

The answer is that these concepts are different! In a nutshell, you find bugs at the testing stage, while a failure occurs when the product has already been released to the public. Let’s use the following analogy to better grasp the difference between a bug (defect), an error, and a failure. 

Imagine a regular dressmaker who sews coats, for example. In one of the coats, the dressmaker accidentally did not attach a pocket; thus, they made an error. At first glance, it is perfectly ordinary, but now we know it has a bug (defect). A defect is an initially imperceptible error that may not affect the normal operation of the system. However, under excessive load, as one of the possible scenarios, the defect becomes apparent and may cause a failure. Say, someone bought that coat with the defect (the bug) and tried to put a phone in its pocket, which immediately fell out. The coat, more precisely the pocket, did not perform its function as expected: the phone should have stayed safely inside it. 

Now, imagine the scale of the situation if an entire factory were to produce defective coats! That is why the tester profession is so responsible: the tester’s task is to find, reproduce, or even investigate the causes of the error. 

What is an anomaly? 

Anomaly or deviation is a collective term that refers to bugs, failures, or errors. Anomaly is a broad term encompassing any situation in which something goes awry. For example: “I'm abnormally tired today, so I'll do all the tasks tomorrow.” or “An anomaly occurred in the code that resulted in me accidentally writing an artificial intelligence instead of a calculator.” 

Congratulations! Now you know a little more about the tester profession! And if you feel that finding defects and improving systems is your calling, join the Software Testing Programs at EPAM. You may be the one for our team! 

If you want to learn more about the types of testing, we suggest you check out the article Types of testing