Five Common Misconceptions
Some of the most common misconceptions about software testing relate to how software testing differs from other testing. Following is a discussion of the five most common misconceptions about software testing:
1. You can completely test the system.
If you stop to think about the enormity of accomplishing such a task, you will quickly come to realize that it is not possible to completely test any complex software system. First you start with the complexity of the software under test. Layer upon this the complexity of the numerous combinations of data and user input. Add to this the complexity of the countless combinations of computer hardware, system software, network software, and other software that may be running with the software under test. Taking all of that into consideration, it is easy to see that the task of "completely" testing software cannot be accomplished in a reasonable amount of time.It is more important to think in terms of sufficiently testing the software, focusing on critical functions, data paths, most-used functionality, on most commonly used platforms.
2. You can have "zero defect" or bug-free software.
Perfection is an approachable but not an achievable goal. Given that there is simply not enough time and money to test everything, the goal must be to test well enough to deliver acceptable software quality. It is also important to remember that no matter how good a job you do eliminating defects, your software runs in an operating environment (operating system, device drivers, other software, networking software and environment) that has bugs of its own over which you have no control. These bugs in the environment can cause problems for your software.
3. Software testing is exclusively a quality control activity.
Software testing is more than simply a quality control (QC) activity. It is also a quality assurance (QA) activity and part of the overall development process. Quality control refers to measurement or inspection activities that are intended to compare actual results with the expected results of a project. Software testing goes beyond this. It is a process of exploration in which there is an iterative evolving process of test design, execution, and problem identification. Software testing also takes into account the needs of the customer, which QC rarely does.
4. Software testing slows us down.
Product release schedules are very much driven by a focus on time-to-market. This places an extreme pressure on the speed of development. To help to deal with this there have been great advances in software development platforms and tools that significantly accelerate the development process. In addition, software development methodologies such as Agile and Extreme Programming help to speed up software development. However, traditional testing has not kept pace with these advances, and has not experienced a corresponding increase in speed. This leads to the perception that testing slows us down, as it has not sped up as the development process has.Simply squeezing software testing to meet delivery schedules is not an adequate answer to this problem. This can result in delivering poor quality software with many defects that can lead to numerous unforeseen and uncontrollable costs in time and money. It is more important to address the issue by first accepting that testing is an important part of the process that takes a certain amount of time, time that must be built into the schedule. It is also important to investigate and adopt testing strategies and methodologies such as Action-Based Testing and global test automation (the integration of the latest test automation methodologies and technologies with global resource strategies) that help to speed up testing while improving test coverage.
5. Software testing is software development.
While software testing is part of the overall software development process, it is actually a very separate and discrete activity. While it is common to use the terms "software development", "software design", and "programming" interchangeably, it is not common to say "software development" when you mean "software testing." The two tasks are viewed differently. Just as a Marketing group spends money so that the Sales group can earn money, software testing is necessary to software development. Software development results in the generation of an eventual product, which in turn will generate revenue. Software testing, however, is an activity in which problems in the product under development are brought to light. Testing is a process of trying to break in order to fix so that the organization may avoid significant costs in time and money after the product is released.