Software testing is a process to identify the issues or bug of developed software. It is a way to test the correctness, completeness, quality and validity of requirements and efficiency of the application. Software bug can be very dangerous if we talk about embedded programming. There are lots of examples of the software failure that report the loss of life and finance. For example:-
- Screwfix price glitch
Price glitch in e-commerce companies is the most common one. Once Screwfix had a price glitch on their website which made the customer to buy a product at 34.99 euros. From garden tractor to expensive toll were available at same price. This could be avoided if automation testing would have been done as this was a data validation error and required a redo of testing.
- False Alarm would have caused world war III
In 1983, a false alarm could have caused world war III. There was a software glitch which generated wrong alarm indication missile launches by the US. Soviet early warning system Oko reported that the US has fired a missile against the Soviet Union, it reported five successive alarm launch. Petrov smart decision prevented the confusion as he knows that the system was programmed and setup a year ago so they could not totally rely on its alarm.
- Terac-25 machine glitch
From 1985-1986, Canada’s Terac-25 a radiation therapy machine malfunction due to a software glitch and delivered overdose radiation leaving 3 people died and some injured. The FDA declared the machine as defective. AECL then issued several software patches and updates which then allowed the machine to return to service. Though there was an issue with the software but the root cause was the entire design.
So, as it can be seen from above examples testing of software is very important to prevent any danger or expensive loss. We all should follow certain software development life-cycle, all of them focus on testing and helps to deliver the final product as bug-free or with the minimal bug.
Software Testing Myth
Being in an IT company I have seen that most of us do not take testing as a priority. Even some of the developer are so smart that they code directly on production and finally clients’ needs to suffer. There are several myths and wrong beliefs associated with testing among client and developers:-
- Testing is too expensive and time-consuming
Testing an application in modular form is never expensive rather it is fruitful. Also, some of us consider that testing should be done once the product is fully developed, there is no doubt final testing will be good but testing product simultaneously during development and creating test case will reduce time to test in future. As prevention is better than cure, fixing the bug or changing the implementation later may severely impact on project timely delivery. Testing a product during the development phase is very important to prevent any future issues which will take more time to fix later on.
- A tested software is bug-free
Here the question arises, if tested software is not bug-free then what’s the need to put an extra overhead of testing. Well, nothing is 100% accurate so the software is, there is always a chance of improvement. No one can claim that the software is 100% bug-free even if it is tested by experts. Complete testing is never possible as there might be various test cases that are never executed. We cannot always blame tested if there is some software glitch that occurs in the later stage of software. However, we can make sure about the test strategy that testing team is following to maximize the accuracy level.
- Anyone can test a software application
Most of the companies do manual testing and specifically the just test design issues, which should not be the case. If a person is technically good then he can test the application efficiently and can explore and report bugs considering all possible alternative approach. Also, tester task is not just to find the bugs but also to suggest improvement as per market trends in an application, as they are domain experts of that particular software.
Before any product is released to end-user, it should undergo a testing process to ensure that the product is working in the same manner as intended. There are mainly four stages of testing that needs to be completed before a product is ready to use: Unit test, integration test, system test, and acceptance test.
Unit testing is performed on the smallest testable part of the application like methods, class etc. A Unit test is mainly carried out by developers or can also be carried by software tester. Continue Reading
Integration testing is carried out after unit testing and before integration testing when individual software units/module are combined and tested as a group. Continue Reading
Acceptance testing is carried out to test if the contract between customer and developer is still on track. It ensures that software product met all customer requirement and changes that happened during the development phase. Continue Reading