A shower of bugs

Rajat Upadhyay
4 min readOct 24, 2021

What is testing and why do we need it?

If you are a non-tech exec who works with engineering teams on a daily basis, you might already know the answers to above questions. What you might not know is what is regression testing? What in the world is the meaning of black box testing?

Testing in not only related to softwares. For a fact, nothing in science is related to one thing only, it is always a reflection of how the world works. Everyone does testing on a daily basis.

A chef tastes his dishes before serving to his customer to check for proper taste. The chef cannot serve the dish before tasting himself as it might turn out to be missing some ingredients. He cannot eat the whole dish also, he has to be optimal in the amount he eats. This is software testing.

Software testing involves breaking a software, running it on different machines, passing it through difficult inputs and corner cases to exploit its weaker areas.

The king in the north hates bugs

Why is it important?

This is why.

On June 4th, 1996, the very first Ariane 5 rocket ignited its engines and began speeding away from the coast of French Guiana. 37 seconds later, the rocket flipped 90 degrees in the wrong direction, and less than two seconds later, aerodynamic forces ripped the boosters apart from the main stage at a height of 4km. This caused the self-destruct mechanism to trigger, and the spacecraft was consumed in a gigantic fireball of liquid hydrogen.

The disastrous launch cost approximately $370m, led to a public inquiry, and through the destruction of the rocket’s payload, delayed scientific research into workings of the Earth’s magnetosphere for almost 4 years. The Ariane 5 launch is widely acknowledged as one of the most expensive software failures in history.

The fault was quickly identified as a software bug in the rocket’s Inertial Reference System. The rocket used this system to determine whether it was pointing up or down, which is formally known as the horizontal bias, or informally as a BH value. This value was represented by a 64-bit floating variable, which was perfectly adequate.

However, problems began to occur when the software attempted to stuff this 64-bit variable, which can represent billions of potential values, into a 16-bit integer, which can only represent 65,535 potential values.

This is just one of the examples of software failures leading to massive public and corporate losses.

It is thus important to understand different sorts of testing to create quality softwares.

Black Box Testing: This refers to testing the inputs and corresponding outputs of a software without getting into the technical architecture of it. It can be seen as checking if a car is starting when the engine is turned on.

White Box Testing: This refers to testing the internal architecture of the software. How the different parts are connected and working together. It can be seen as testing the separate components of a car.

Unit Testing: Refers to testing each component separately at the smallest level. Lets say, testing if the bulbs in the headlights are working or fused.

Integration Testing: Combining individual components of the unit tests to create a program structure and test that. (Connecting the bulbs to the the wiring system of the car and checking that)

Regression Testing: Check if a newly added component is not causing issues to the software. Lets say you got excited to instill some Nitrous into your car after watching one of the Fast and Furious movies, now, some testing will have to be done to see if the brakes can handle the speed, if the engine can provide that much power, etc. PS: Don’t get Nitrous.

Smoke Testing: Checks if the initial parts of the software are working before moving to further testing. Can be compared to testing of the key slot of the car. If the key slot is jammed, we cannot proceed to test the rest of the functions of the car.

System Testing: Checks if software can run in different environments and systems. It is like taking the same car to run on a road in New Delhi, then checking its performance in the deserts of Sahara, then checking its performance in the lands of Africa, then if it still survives, taking it to the hilly areas. PS: You’d rather gift your car to me than to destroy it that way.

Performance Testing: Checking if the software holds its performance on huge loads of traffic and other scenarios. Can be compared with checking your cars performance on high speed, performance with low oil, performance after no repairs for months, etc.

These are all the major types of testing in the software world that a non-tech exec should know about to better interact with teams.

Carrot Blogs

“To live outside the law, you must be honest.”

--

--