The First step in developing any software is understanding the requirements of client and from this point there are possibilities of making errors. In complete process right from understanding the requirement to actual development of software there are many places where developer can make mistakes. So the developers might not be aware of errors they have made while developing the software.So software testing is necessary as it helps developers to build bug free software which meets user requirements and expectations. Testing the software before release builds confidence in using the software.
Let us see some examples of defects in software which have become world famous, due to lack of testing or improper testing.
1. Intel Pentium’s Floating Point Division Bug.
Enter the below equation into your PC’s calculator (4195835/3145727) * 3145727 – 4195835
If your computer’s calculator gives answer as zero then your computer is fine but if you get answer anything other than zero then you have an old Intel Pentium CPU with floating point division bug – a software bug that burned onto computer chip and reproduced again and again in manufacturing process.
This bug was first noticed by Dr. Thomas R. Nicely of Lynchburg (Virginia) on October 30, 1994 soon he posted this defect on internet and within few hours a storm erupted as many other people were able to reproduce the same problem and also found some more scenarios that gave wrong answers.
Initially Intel offered to replace the faulty chips, but only if the user was successful in proving he had a faulty chip that was affected by bug.
There was a public outcry. All news channel and news portals were jammed with customers demand for Intel to fix the bug. New stories were painted that the company is uncaring and has no respect for its customers. Finally, Intel apologized for the response which thy gave to users affected by the bug and took
Charge of over $400 million to cover the cost of replacing faulty chipsets. Now Intel reports problem on its website and have keen observation on customers feedback on internet.
2. Nasa Mars Polar Lander Failure.
NASA’s Mars polar lander disappeared during its landing attempt. A failure review panel investigated the failure and came to conclusion that most likely reason for failure was the unexpected setting of a single data bit. But the question was “why the bug wasn’t caught by internal test team?”
NASA’s landing plan was like this: As the lander fell to the surface it was supposed to open up the parachute to slow its descent a few seconds after the parachute opened, the probe’s three legs were to snap open and get into the position for landing. When the probe was about 1800 meters from the surface it was to release the parachute and ignites its landing thrusters to gently lower in the remaining distance to the ground.
To save money NASA simplified the mechanism for determining when to shut off the thrusters on other space craft they put an inexpensive contact switch on the leg’s foot that set a bit in the computer commanding to shut off the fuel.Simply, the engines would burn until the leg’s touched down.
Unfortunately the failure review panel discovered in their results in most cases when the legs snapped open for landing, a mechanical vibration also tripped the touched down switch, setting the fatal bit. It’s very probable that thinking it had landed, the computer turned off the thrusters and the mars polar lander smashed to pieces after falling 1800 meters to the surface.
The result was catastrophic but the reason behind was simple. The lander was tested into different modules by multiple teams.one team tested the leg fold down procedure and another the landing process from that point on. The first team never looked to see if the touch down bit was set it wasn’t their area, the second team always reset the computer clearing the bit, before it started the testing. Both modules were tested individually and perfectly but not tested when integrated.
3. X-rays machine Bug.
In 1980, there was a bug in the code controlling the Therac-25 radiation therapy machine which was responsible for 5 patient’s death. On investigation it came to know that patient’s death happened due to excessive quantities of X-rays.
4. China Airbus A300 Crash
On 26th April 1994, China airbus A300 was crashed due to a small bug in its software, all 264 passengers were reported to be dead.
So seeing the above examples we can say that each phase of testing i.e. unit testing, integration testing, regression testing is very important because:
1. Software testing pulls out the defects that were made during developing the software.
2. Software testing is necessary for building up the reliability and quality of software.
3. Software testing ensures end user satisfaction and develops confidence in software.
4. Software testing avoid user detecting defects.
5. Software testing gives an assurance that software works as expected.
6. Early software testing finds defects early ultimately reducing the cost of fixing the defects because it can be very expensive in the later stages of the development or in the post-release.
7. Proper software testing avoids loss of life in case of mission critical software.
8. To stay in business