The art of software testing is extremely sophisticated and often misunderstood by those who do not engage in software testing. For such ‘non-testers’, these common misconceptions about software testing are often related to how software testing differs from other forms of testing. Here, we discuss six common misconceptions that every tester should know-
Misconception 1: No special skills are required for testing
It is common to find organizations recruiting individuals for testing that do not have a formal background or prior experience in this field. The principle that drives such organizations is that ‘anyone can be put to testing’. Often, such task is delegated to developers on the bench. However, testing is a specialized process and may not be efficiently performed by unskilled people, not wary of the different methodologies used in software testing.
Misconception 2: It is possible to test the system completely
Testing a system completely is not possible because there are too many combinations of data and user input and program paths, as well as hardware or software platforms on which the tested product runs, to allow complete testing in a reasonable period of time. Even if testing a system entirely could take place, it would be extremely expensive for the efforts to be equivalent to costs involved.
Misconception 3: You can have ‘zero defect’ or bug-free software
A general rule in testing is that there is simply not enough time and money to test everything. The goal is to test well-enough to deliver ‘good enough’ software quality. Thus, priority or importance of the tests plays a very important role in determining which tests should be preferred over the others.
In addition, no matter how good your software may be, it runs on an operating system with bugs, with device drivers that have bugs, on computer hardware that has bugs, and so on. The bugs in the environment on which your software runs can also cause problems in your software. Further, since there exist a virtually infinite variety of computer hardware and operating systems (and their associated bugs) on which your software may be run by your customers, there is no way to test them all.
A zero-defect software is, therefore, a myth. If your software could deliver a reliable performance without serious bugs affecting its usability, the objective of software testing is complete.
Misconception 4: Software Testing is exclusively a quality control activity
Actually, software testing is partly a combination of both quality assurance (QA) and quality control (QC) activity. Quality control refers to measurement or inspection activities that are intended to compare the actual results with the expected results of a project. This is only a subset of software testing, as QC rarely takes the customer’s needs as a priority. Possible examples of QC-related testing include regression testing. In actuality, software testing is a process of exploration in which there is an iterative evolving process of test design, execution, and problem identification.
Misconception 5: Software testing slows us down
Product release schedules have been driven very hard by forces such as the need to be first to market, thereby putting extreme pressure on the speed of development. When project schedules slip, testing gets squeezed the most. There have been great advances in software development platforms and tools, both proprietary and available as shareware, open source or freeware, that significantly accelerate the development process. In addition, software development methodologies such as Agile and Extreme Programming 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 hasn’t sped up as the development process has over the course of time.
Misconception 6: Software testing is nothing but software development
While software testing is a part of the overall software development process, it is actually a very separate function. It is common to use software development, software design and programming interchangeably. It is not, however, common to say ‘software development’ when you mean ‘software testing’.
Consider this illustration- Often, people think of sales and marketing together. The two words are often spoken together as if to describe a single function: the generation of revenue. However, these are two very different activities. Marketing spends money, which could be viewed as an indirect sales activity because it ultimately generates leads and opportunities that turn into revenue. Sales, however, makes money because it brings in booked revenue. Likewise, software development is a creative activity which results in the generation of an eventual product, which in turn will generate revenue. It is directly constructive. Testing, however, is a destructive activity in which problems in the product under development are brought to light. Testing costs money, yet the results can lead to delays in the product release and eventual revenue.