QA Madness Blog   Breaking Bad in your code or how software bug can make fun of you?

Breaking Bad in your code or how software bug can make fun of you?

February 11, 2016 Reading time: 4 min

First of all, what is “software bug”? Everyone understands that it isn’t an insect ( well, not anymore, anyway 🙂 ).
According to Wikipedia: software bug is an error, flaw, failure, or fault in a computer program or system that causes it to produce an incorrect or unexpected result, or to behave in unintended ways.” Some bugs can be detected easily during development. But some bugs might be found late in the development process.

There have been many attempts to classify the bugs.
Most of these represent the general classification which is valid in the cycle of software development and evolution. The classification scheme given in Orthogonal Defect Classification defines eight categories of defects as assignment, checking, algorithm, interface, timing/serial, function documentation, and build/pack/merge. Most everything in such classification understandable, useful and boring.
But, sometimes, going through a code, you may face a dark horse from the bug’s world. There are some software bugs that involve conditions so strange and complicated no one can understand their causes:

#1 Heisenbug

The most bossy bug in this list was named after Walter White aka. Heisenberg, from Breaking Bad, and… Wait… It seems like something is wrong… Here it is! Actually, it was named after theoretical physicist Werner Karl Heisenberg and his uncertainty principle.
This is a type of bugs which disappear or change their characteristics as soon as somebody’s trying to study them. The examples of a heisenbug can sometimes be found in a program’s released version, but never in its debug-mode version. Such a bug can also be caused by the race condition.
Heisenbugs may be viewed as instances of the observer effect in information technology. Frustrated programmers may humorously blame a heisenbug on the phase of the moon, or (if it has occurred only once) may explain it away as a soft error due to alpha particles or cosmic rays affecting the hardware.

#2 Bohrbug

To ever meet this bug you’ll need a ghosts basters skill. Why? Cos nickname for this bug is “ghosts haunting the code”.
Bohrbugs often sit in those pieces of source code which are invoked least often. By opposition to Heisenbug, a bohrbug is a “good, solid bug”. Like the deterministic Bohr atom model, it doesn’t change behavior, but still, it is pretty difficult to find and fix. This type of bugs manifests itself consistently only under some well-defined, but often unknown or unique set of conditions or entered data. Luckily, these bugs don’t alter when researched.

#3 Mandelbug

Named after Benoit Mandelbrot’s fractal, a computer bug of this kind has such complex causes that its behavior gets chaotic. Some use the term “mandelbug” to refer bugs with very complex causes which make it impossible to find some practical solution. Such a bug can be caused, for instance, by some flaw in the entire system’s fundamental design.
However, based on the analogy with the Turing test, the existence of this category of bugs is controversial: If it’s impossible to distinguish a bug whose behavior is similar to the chaotic and bug whose behavior is chaotic, then the difference between Mandelbug and Heisenbug not essential, since impossible to tell who is who.

#4 Schroedinbug

This bug was named after Erwin Schrödinger and his famous thought experiment with a cat and box. This bug only manifests when somebody using a program in some unusual way or reading source code notices it should have never worked at all, and at this point that the program stops working promptly right until it’s fixed. Despite the proximity of the occult, it happens. Some programs are fraught with latent Schroedinbug for years.
With the statement that the system should have never worked under these circumstances before, despite clear evidence of the opposite (the system worked before reading the code!), and because of complexity of computing systems the programmer can only appeal to the supreme and hidden forces.

All of it cases of program failure could be called as “Phase of the Moon bugs”, a random parameter on which something is said to depend. And that’s not all of bugmonsters you may find.

By following the dangerous path of developers and testers, one day you may play hide and seek with Higgs-Bugson, Hindenbug, Loch Ness Monster Bug, Mad Girlfriend Bug, etc., in program code. Be aware, stay cool!

Notes

  • “The Jargon File: Schroedinbug”
  • CATB.org, “phase of the moon”
  • CATB.org, “Heisenbug”, “Bohrbug”, “Mandelbug”, “Schroedinbug”.
  • Wikipedia “Heisenbug”
  • “Log Book With Computer Bug”, National Museum of American History, Smithsonian Institution.
  • Bugs or Defects?
  • List of Common Bugs and Programming Practices to avoid them Vipindeep V, Pankaj Jalote Indian Institute of Technology, Kanpur
  • “A Story About ‘Magic” by A. Hacker Folklore

Latest Posts

Automated Testing for a Desktop Application: Benefits, Particularities, and Actionable Tips

April 19, 2024 Reading time: 23 min
There’s no good without the bad. So, if you’re contemplating automation for your desktop app, wanting to enjoy all its benefits – think twice. Because it comes with quite a few struggles. That
Read more

Your Guide to Automated Integration Testing

April 12, 2024 Reading time: 11 min
Automation is a dilemma. Do you need it? Is it worth it? Allow us to cease your hesitations. Automation testing services are a true gift to your project’s performance and your team’s development.
Read more

Change Your Mind About Unit VS Integration Testing To Support Your Product’s Progress

April 1, 2024 Reading time: 19 min
Software complexity is going up. User-centricity is taking over. And businesses get lost in all the tiny and mammoth tasks. We get so caught up in the bullet-speed progression of technologies that we
Read more

Don’t Take Software Integration Testing for Granted – Run It Like This

March 22, 2024 Reading time: 16 min
Test early. Test often. A principle all companies should live by. And most of them do. But it seems a certain type of testing has been left out of this golden rule for
Read more

Make Your Product Feel Homey with These App Localization Testing Tips

March 18, 2024 Reading time: 19 min
When you think about mobile app localization testing, what comes to mind first? Probably translations, currencies, date formats… And you’d be correct in tending to these aspects. But that doesn’t do justice to
Read more

Blog