Why a software team needs testers?
The perfection of a software determines its success causing software teams to hire testers to ensure the quality of the software is maintained at every milestone. In software testing, the role of the tester would be to run the software and find errors that may or may not be there. The errors would be identified and the software would be corrected and then sent for testing again. Once the tester gives the “all clear” for a particular software, it would be released to the end users.
A tester would help with the success of a software by
- Proving that the software has no faults; is ready to use by the customer
- Ensuring reliability and authenticity of the software
- Helping the company save money by detecting the issues earlier even before they are released
- When the software is tested, customers can be assured of the quality of the software
- When customers are happy with the performance of a software they will not sue the company
In short, the function of software testing is to check whether the results meet the expectations and the resultant software is free of bugs, viruses and errors. It is important that software’s be tested for errors because errors can cause monetary loss, loss of time and even loss of life. Have a look at some such losses recorded in history
- The Therac-25 radiation therapy machine in Canada malfunctioned as a result of a software bug. People were administered lethal dosage. 3 people were left dead and many were injured.
- A software bug caused a massive loss in a $1.2 billion military satellite launch in 1999. This is believed to be the costliest accident in history
- The data analysis software used by NASA was incapable of detecting the hole in the ozone layer over the Antarctica. And when the hole was eventually discovered, it was not by NASA or their software.
- In 1994, a flight in Scotland and killed 25 passengers and four crew members in Scotland due to system error. Similarly in 1994 the China Airlines Airbus A300 crashing was also due to system error and this time the causality was massive – 264 lives were claimed.
See, how bugs in software can cause serious repercussions. Software’s must be tested for bugs. Now that we have established the importance of testing, let us check whether the new trend of testing is really feasible – automated testing. True, it may save you time and money in some ways, but it doesn’t really look good in the long run.
Companies may have begun to use automated testing, and more or less every agile team has started using it in one form or the other. They have also started writing codes in a model-driven development structure.
What if there are no testers?
In a model driven development structure, the developer writes the code of his choice; they mock out interfaces and integration points so they can test their code in isolation. When they run the code in isolation, the automated tests that they run as part of the build process will not take into consideration any of the other codes. But the problem arises in the process of automated testing. Automated tested is just what it sounds like – it does the testing automatically and does not have the cognitive, human, analytic capabilities. As it is a machine, automated testing can only be done according to your commands; nothing more, nothing less. Another problem with automated testing is that you have to be aware of what tests you are going to do; if you find something along the way that concerns your code, the machine will not cover that. With automated testing, you get your information in plain black and white, but when a tester runs the software, he can collect the information that are in grays as well.
Most companies, in an effort to control costs, do not hire testers as such; they expect their developers to have the capabilities of a tester as well. That way, the developer can just switch hats and assume the role of a tester at the end of each project. In some projects, developers should assume the role of a tester right from the beginning itself; this would help in catching discrepancies in the beginning itself.
Having a tester has its advantages because when a software is released into the market, it would naturally cause users to have doubts on its functioning. Testers can contribute in the meetings that you may have before each software release. He can talk about the
- Bugs and issues that the software had in each step; and how they were solved
- How and where the testing was done
- Areas where testing has been done
- What to do when the server does not respond to user calls
- Any recurring defects
The bottom line
Testers are experts at bug fixing, and the earlier they detect a problem, the better. It would be cheaper to fix a problem early than later. Software releases have deadlines and customers would receive notifications of software release. So it is imperative that the software gets released on the promised date. This is possible only if the software doesn’t give you last minute surprises in the form of bugs. Keep testing at each stage of the project in order to ensure timely release of software. The tester will be better prepared for dealing with bugs if he is involved right from the beginning; so having an in-house tester is important in any company; if not , hire a software developer who doubles as a tester.
Interesting links about the topic:
Pictures: Flickr.com/ WOCinTech Chat/ Mitchell
The author: Reema Oamkumar is engaged as a thought leader at Software-Developer-India.com which is a part of the YUHIRO Group. YUHIRO is a German-Indian enterprise which provides programmers to IT companies, agencies and IT departments.