The IT industry statistics show a grim reality regarding the overall success rate of software development projects. Around 65% of all IT projects are unsuccessful, 30% being solely related to improper testing. 90% of the IT projects are delivered late, mainly due to the amount of rework required to solve critical defects found late in development.
In my career as a software tester, I often found myself debating with clients, stakeholders, and various other people involved in software production, about the benefits of professional software testing.
I noticed that the general perception was that a software tester writes test cases, executes them and reports deviations from the expected behavior; plain and simple. And apparently, the person doing this “testing thing” is not supposed to be specialized in order to deal with such simple, basic tasks.
As a consequence, when the project initial budget comes under pressure due to various reasons, testing is first on the cut off list and, usually, becomes a secondary task for other team members such as Business Analysts, Project Managers, or even Programmers.
The product quality is, in this case, the lowest priority for a team without the knowledge, mindset or availability to address it properly. Going down the production path, the outcome becomes consistently negative, the acceptance phase turns into a nightmare for both clients and development team and the project’s budget runs out before the product is actually ready to ship.
IT specialists consider that around 70% of generic software application defects can be identified and fixed while still “on paper”, before a single line of code is written.
Let’s say that a bug fix in requirements phase, while still on paper, costs 1 $. The same bug cost found and corrected in production costs 100$.
Clearly, identifying and fixing defects early is the best way of building software within budget limits and to have a clients acceptance phase in optimal conditions.
It is the cost of defects that represents the best answer to the question ‘Why test?’ and it can be expressed in many ways, from the actual price to fix the bug to the loss of customer confidence and market share. And, more drastically, in the case of other IT companies, such as those who create medical or flight control software, defects can even lead to loss of life.
Another important cost related example is the one of product maintenance. Maintenance requires you to:
A survey of 487 companies conducted by Lientz and Swanson concluded that 50-85% of life cycle costs on a software project were incurred in maintenance. Of that percentage, 21% of the costs were spent on fixing errors (Software Maintenance Management: A Study of the Maintenance of Computer Application Software in 487 Data Processing Organizations. Also read: https://dzone.com/articles/lientz-and-swanson-software)
As a short conclusion, professional testing is important because it prevents costly failures. But what makes a specialized software tester efficient in identifying defects in the early stages of software development?
It represents the ability to separate the whole into logical parts, to examine a complex problem, its elements and their relationships. It is used by testers to identify implications, redundancies and contradictions without leaving any room for inconsistency and ambiguity.
A tester can, through mental mapping , project real-time business situations, abstracting the idea inferred from the specifications.
The real-time business scenarios crystallize in a tester’s mind by imagining the behavior of the targeted user profile and as such, he is able to anticipate complex problems, in addition to visualizing and articulating them.
Being an intellectual and being intellectually curious are not the same for a software tester. Testers are intellectually curious by nature, which is all about asking questions and not about having answers. It’s what motivates and prompts a tester to identify interesting questions about the software being tested, therefore, to see what everyone else has missed, to think what no one else has thought of.
An independent tester can repeatedly find out more, other, and different defects than a tester working under coordination of a programming team or a tester who is by profession a programmer which tests his own work.
Business analysts, marketing staff, designers, and programmers bring their own assumptions to the specification and implementation of the item under test. An independent tester will provide a completely different perspective, which often helps in exposing the hidden defects and problems.
In the past two years, our specialists repeatedly proved that early professional testing:
• reduces production costs;
• reduces risk of failures (or incidents) once systems are transferred to live operation;
• provides demonstrative proof that business requirements are met;
• gives assurance that the system will function properly with legacy systems and integrate with other systems;
• provides confidence and assurance that the users for which the solution was designed are able to operate productively.
Professional testing is a process that has much more sweeping effects than just render functionality issues. It can transform the reputation and optimize the production and maintenance costs of the software you put out, in an unimaginable way if you only choose to unlock its power.
Article written by:
Ionut Bornea, Senior Software Tester, Ubisoft IT