Wednesday, January 19, 2011

WHY WE NEED A TESTER . .? . .


Testing is the most important way of assuring (or controlling) the quality of software. Good practices throughout the development process contribute to the quality of the final product, but only testing can demonstrate that quality has been achieved and identify the problems and the risks that remain.

This is not really the best state of affairs, as testing is by far the costliest method of finding bugs. The cost of a bug found using inspections, walk through, reviews, modelling and proofs is much less than a bug found in testing. These techniques can be performed early, at intermediate stages of development, meaning that fixing a bug entails less rework, less re-checking, and less likelihood of introducing a new fault. 

Testing, on the other hand, entails manufacturing test data and transactions, and running the software on something approaching the live hardware and network infrastructure. It also requires a (nearly) working piece of software, which is usually only available towards the end of a development stage (or development iteration in iterative processes). All this is expensive and time-consuming.

To fix a bug found during a test implies rework, which might go far back into the development cycle - possibly all the way back to the initial requirements. All that rework needs to be re-tested. The cost of fixing bugs increases exponentially at each stage of development. Rework and re-testing are time-consuming and expensive, and fixes are error-prone - studies have shown that each fix has a 50% chance of creating a new defect.

Despite the drawbacks and the available alternatives, software development still relies heavily on testing. Testing was probably the first activity used by programmers to flush out bugs in software before it is made live. It is the most intuitive step to take - write a program, then run it. The persuasive appeal of testing is that it has, at least within the abstract realm of software, relatively tangible results. At the end of a test, you have evidence of the software’s behaviour.

Even if you employ the best in software development practices, tools and engineers, and you deploy the full range of quality assurance/quality control methods throughout the whole life cycle, you will still need to test. You may find that you have reduced the cost and timescales of testing by employing ‘best practice’ bug-prevention and early bug-detection disciplines during development, but you will still need testing to measure and prove just how effective all that was none of the other quality techniques provides the same level of observable confirmation that software behaves as expected, and running it does not result in failures. You will need to test to be confident that software performs technically and functionally as designed, to demonstrate to users that it solves the problem they intended it to, and to measure what risks you may be taking if, as is nearly always the case, the software is not perfect. 

Business management is increasingly aware that software testing is an essential process that can deliver significant business benefits. With its abilities to demonstrate that business requirements are met and to expose the risks that remain in deploying a newly developed piece of software, testing has business interests at its center. It is a powerful tool in ensuring that software development results are aligned with business objectives.

1 comment: