Correct use of terms: regression, bug, glitch, testing, and beta

Correct use of terms: regression, bug, glitch, testing, and beta

I just saw another misuse of critical system terminology today by someone who is working on scholarly publications. Because they picked up that habit by working with an autonomous vehicle company. The misuse and abuse of terminology to desensitize people to life critical system defects gets worse all the time. Perhaps it is time to refresh vocabulary for those who have only heard the misuses and don’t realize they sound dumb as a box of rocks when they simply repeat what they hear others saying at work. (Caution — pet peeve meets yelling at clouds here, because the tech industry has invested a decade degrading the meaning of these terms for PR value. If that bothers you just move to the next posting…). 

Here are some key terms in play. (And it’s not just me — I point to wikipedia entries for each.)

Regression:

This is not the general term for “bug”. It is a very specific defect in which a previously operational feature stops working now. Even further back, it was specifically a previous bug fix that stopped working in a new version. If it’s a “defect” call it a “defect.” Or maybe a “requirements defect” if it is a discovery of behavior you did not previously realize needed to be in the requirements. (https://en.wikipedia.org/wiki/Software_regression)

Bug:

While originally humorous slang, it now does more harm than good to use this term. Use the word “defect” instead. (https://en.wikipedia.org/wiki/Bug_(engineering))

Glitch:

This is a defect too, and even more dangerous to use because it minimizes the issue in a safety critical system. (“It was just a glitch — let’s see if it kills anyone else before we fix it.”) The correct use is a transient defect, typically one that is difficult to reproduce. (https://en.wikipedia.org/wiki/Glitch) Whether it is less serious than a permanent defect depends on the body count.

See also  Head Slump: When it’s a Problem and How (Not!) to Fix it

Testing:

Executing a system according to a plan intended to validate engineered behavior by comparing it against expected behavior. Driving a car around to see what happens is not really testing — it is just messing around. (Messing around can have value to discover requirements, but it is not properly called “testing”). (https://en.wikipedia.org/wiki/System_testing)

Beta:

A specific type of testing carried out by sophisticated early adopters for a product that is believed to be fully functional (if any significant defects, the Beta tester is explicitly warned about each and every one in detail). It is not a legal CYA word for “it doesn’t really work, but go ahead and have a go anyway” which is more properly called an engineering prototype, and which should not be sold to the general public via retail channels as if it were a real product. (https://en.wikipedia.org/wiki/Software_testing#Beta_testing)