What is a Bug?
In the context of Software Testing, A software bug is an error, glitch or failure in a system or computer program that can be held responsible for programming errors or unexpected results. Such software programs, that behaves abnormally or gives unintended results are often referred to as buggy. You can easily attribute the bug formation in software programs to different reasons. Software testing is the sole process, that will help you to sort out these bugs or glitches in the system/programs so that the respective system as a whole, can be turned into a customer friendly platform.
Here is some amazing types of software bugs named after well-known scientists related to their theory.
Today, there are more bug types known to us, so we’ll look at two other categories of them. These term was used in 1985 by Jim Gray, in a paper about software failures. They are:
Heisenbug is a type of Software bug,where it suddenly change their characteristics or disappear as soon as somebody’s trying to study about them.This type of bug is named after the well known Scientist the physicist,Werner Heisenberg who first asserted the observer effect of quantum mechanics, which states that the act of observing a system inevitably alters its state. Such bugs were named Heisenbugs, after Werner Heisenberg, who is known for his “uncertainty principle”. According to his theory, it is not possible to accurately or certainly determine the position and velocity of an electron in an atom at a particular moment. When bugs change their behaviour when you try to debug, probe or isolate, they are called Heisenbugs. It can happen, for example, when you use uninitialized variables. When the program is run, it will access variables that are uninitialized, and hence result in a bug. However, when you try to debug the program, the program might work just fine, because many debuggers initialize uninitialized variables to zeros, and so you might not hit the problem!In electronics the traditional term is probe effect, where attaching a test probe to a device changes its behavior. Common examples are bugs that occur in a release-mode compile of a program but do not occur when researched under debug-mode, or some bugs caused by a race condition.
This is another type of Bug,where it can be easily reproduce when compared to the Heisenbugs. Bohrbug include bugs that are easy to detect and fix, but also includes bugs that are very hard to detect and only occur under certain conditions of the software. These kinds of bugs often live in parts of program that are invokes less often, which makes them remain undetected. These are named after Niels Bohr, who proposed a simple and easy-to-understand atomic model in 1913. In Bohr’s model, things like the path and momentum of an electron in an atom are predictable. Similarly, Bohrbugs are predictable — you can reproduce them if you run the software with similar conditions. For example, when the program crashes with a null-pointer access, it always crashes there for a given input; so you can easily reproduce it.
In simple words: Bohrbug was named after the Bohr atom. Just as the Bohr atom is solid, a Bohrbug is also solid and easily detectable by standard debugging techniques.
Mandel bug is yet another type of interesting bug type,named after the Benoît Mandelbrot, who is considered the father of fractal geometry (fractals are complex, self-similar structures). In computer programming, mandelbug is a classification of an unusual that is so complex that its behavior appears chaotic or there is no practical solution to fix it. Such a type of bugs were caused due to flaw in the fundamental design of the entire system. Typically, such a Mandelbugs are difficult to isolate, and the failures it causes are not systematically reproducible. Mandelbug is just the antonym of Bohrbug.
In computer programming defenition, schroedinbug is a classification of an unusual software bug. This type of bug is one that goes unnoticed until a programmer or some other person reads the code and discovers that the program never should have been able to work in the first place. While discovering this schroedinbug, the bug manifests and the program will no longer function until the bug has been fixed.
They are named after the scientist Erwin Schrödinger, who proposed a theoretical “cat experiment”.
“In quantum physics, quantum particles like atoms could exist in two or more quantum states, but Schrödinger suggested that in more classical objects like a cat which is made up of many atoms, existing in two states was impossible. He theorized about a scenario in which a cat is kept in a sealed chamber, with a vial of poison (attached to a radioactive atom). If the atom decayed, the vial would be smashed and the poison would leak, killing the cat. But with the chamber sealed, there would be no way to know whether the cat was dead or alive. So till the chamber is opened, theoretically, the cat could be in either of two states — dead or alive. In quantum physics, this is called a “superposition state”, where the cat is both alive and dead!”
Coming back to bugs, by merely observing the problem in the code, you change the outcome — either the software works or breaks. So these kinds of bugs are known as Schroedinbugs.
In Simple Words: Such bugs refers to a function/feature that appears to fluctuate between buggy and correct (like Schrödinger’s cat, fluctuating between alive and dead), until somebody looks at the source code (opens the box), at which point it becomes permanently bugged.
Most cases the software systems do not work as expected then we say that the software is buggy. Bugs may arise in Software system due to many reasons.By means of software testing much more bugs can be identified, so as to meet the requirement of clients.Apart from these Bug types there are some other bug types like Requirements, Features, and Functionality Bugs, Structural Bugs, Data Bugs, Coding Bugs, Test and Test Design Bugs etc. Bugs are difficult to categorize. Though there is no universally correct way to categorize bugs, it is recommended to adapt some taxonomy to categorize bugs.
We at Cubet Techno Labs dedicate 30% of our Development time for the QA process, we believe in delivering our applications with the utmost quality and bug-free code.