The Consequences Of Lack Of Testing
Far back in 1999, NASA lost its Mars Climate Orbiter, which came too close to Mars, entered the atmosphere and disintegrated because of atmospheric stresses. While investigating the causes of this accident, it was found that one of the company’s contractors – when developing one of the terrestrial modules of the software serving the satellite – used the English units of measurement as the output values instead of the expected more conventional metric system used by the agency’s team. This mistake led to the failure of the $327.6 million mission. One of the reasons for this discrepancy was that the device systems were not tested enough.
There is a saying that It’s only those who do nothing who make no mistakes. Learning from your own mistakes gives you experience and wisdom. But in software, it is too expensive to learn from your own mistakes. The price of such errors is not only in the higher cost of developing the product or in the need to rework an already finished product. You will also lose your orders, your business reputation will be damaged and user confidence will decrease.
How costly is an error?
In 2002, a study commissioned by the US Department of Commerce’s National Institute of Standards and Technology showed that software errors cost the US economy an estimated $59.5 billion annually.
In 2004, NASA conducted a study to determine the relative cost of fixing errors discovered at different phases of a project life cycle. The results of this study, carried out via three different approaches, showed that the cost of fixing an error in the product escalates at the stage of mass use of the product compared to the initial stage of setting, collecting and validating the requirements.
In one article posted on Celerity Blog, the following example is given: a software bug error detected in the gathering requirements phase can cost $100. A bug found at the testing stage can cost $1,500. An error detected after release can cost the customer $10,000.
All this suggests that to reduce the huge costs that come with software bugs in the finished product, it is necessary to make efforts to find such bugs at the earliest phases of the software development life cycle (SDLC). After all, these costs are borne by users in one way or the other – for example, in the form of increased cost of subscribing to a product. Ultimately, such factors can create customer dissatisfaction, weak competitiveness of the product, and, consequently, loss of target audience.
The job of a tester
When it comes to software development, nobody is immune to errors, no matter how well-weighed the project is, how detailed the technical task is and how competent the project manager is. There are just things that cannot be controlled. That’s why software companies test their products to reduce the number of errors and the financial losses that come with these errors.
The main tasks of a software tester are:
- checking whether the product meets the customer’s requirements
- detecting errors, thereby minimizing customers’ risks of using the product
- providing maximum information about the current state of the product.
Thus, software testers enable managers to make timely decisions and release the product on time. After all, the purpose of development is precisely to provide the customer with a suitable and efficient product within a specific deadline.
What does a tester do?
A tester performs diverse functions, from planning the testing of separate product modules, to evaluating the finished product as a whole and detecting errors.
- He checks the product for compliance with the requirements specifications.
It is really important that the product is exactly in the form in which it was conceived, so as to solve the customer’s problems.
- He checks the product in rare or improbable conditions of use.
Testers find faults in a product which can be detected only in special cases or years of use. For example, it is important to check how the application will behave on February 29 – this day appears every four years in the calendar. Will the reports be properly generated? Can different calculations be carried out? Errors in such “bottlenecks” that were not detected during testing and which did not immediately reveal themselves, could subsequently lead to financial losses, and even to rejection of the product and reduction in the product audience.
- He explores non-obvious ways of using the product.
A software tester finds areas of the product that need improvement. He does so by performing non-typical actions, that, under the industrial use of the product, can disrupt embedded business processes or the overall performance of the product.
- He checks data security and product safety.
This is necessary in order to avoid outside interference or unauthorized access to confidential information.
- He checks the product performance on different devices and platforms.
It is often a requirement that a product works efficiently on different devices and platforms: desktop, mobile apps, different browsers, and, moreover, different versions of browsers. This is typically a rather large task, and it is simply inefficient and unprofitable for developers to spend resources on such a task. A software tester performs this task.
- He studies interactions with other products.
During testing, the tester checks the interaction between the product and the other products of the customer. Integration with popular social networks, payment aggregators, multimedia portals, etc. is checked, depending on the product requirements.
- He prepares and submits a product status report to stakeholders.
By so doing, stakeholders receive information about the state of the product. This information enables them to take further decisions on product development and release.
Why can’t developers be good testers?
At first glance, it may seem that developers can test their own product, and this would be an opportunity to save costs on recruiting testers. But actually, this is not the case – developers alone cannot test a product sufficiently.
- It’s very difficult to check yourself. Certainly, you wouldn’t be objective when you check your own work. In testing his own code, the developer often focuses on the positive aspects, not paying due attention to the negative and problematic side. After all, the task of a tester is to focus on product risks and to search for errors and discrepancies. The developer finds it more difficult to do this, for psychological reasons.
- Testers have special expertise that developers do not have. Testers know and use various methods and testing techniques, and they prepare sets of typical test cases or checklists, which then help to detect errors or discrepancies with project documentation. Often it is the tester, as an independent party, who discovers bugs in a software product, arising from the fact that the developer initially misinterpreted the requirements.
- A tester is cheaper than a developer. Therefore, the use of testers is also a cost-saving measure for the customer.
How to organize work efficiently?
Engaging a tester for your project after completion of development and before the release of the product may not be sufficient to ensure that the product is delivered exactly as the customer wants and within the agreed timeframe. For efficient testing of a complex and multifaceted process, there is a need for close interaction between the tester and developers, project managers, business analysts, technical writers and other specialists. Therefore, it is important to involve testers in the early stages of development, which will help to avoid discrepancies and ambiguity of requirements, and to introduce a critical view of the product at all its life stages.
Testers should also participate in trials at the end of testing. Problems can be identified based on customer feedback. Testers could take part in addressing such problems: they will reproduce situations and errors that the users encountered, test bug fixes to make sure that these fixes did not create new errors in other places, etc. These specialists have knowledge of the entire complex application and business process.
So, do we test or not?
Testing is a compulsory phase in a product’s life cycle. Both the designer and the builder of a new aircraft, who want to test their creation by themselves, risk their lives. Test pilots solve this problem. They do this before mass production starts and pilots start flying the aircraft.
Both in business and in everyday life, people achieve their goals by taking certain steps and assessing their progress. If your goal were to get an effective, high-quality product, then impeccable organization and testing would enable you to achieve this goal.