|MSc-IT Study Material|
January 2011 Edition
Computer Science Department, University of Cape Town
| MIT Notes Home | Edition Home |
Many different people involved with the development of a particular piece of software can be involved in its testing, such as the developers, a team of independent testers, and even the customers themselves.
Testing will always begin with the developers. As they develop individual modules of the software they will need to determine that what they have developed conforms with the requirements, and that it functions as expected. Further, the developers will have to test that these modules still function without error when they have been integrated with each other.
However, the developers will often test the software far more gently than is needed for proper testing, since the developers may already have pre-conceived expectations concerning how the software they have written behaves. Even worse, the developers may even have a vested interest in showing that the work they have done performs correctly and meets the requirements; this works directly against the process of software testing.
After the developer has produced working code, the code may be passed to an independent testing team. This is a group of developers who are not responsible for the original development of the software. This group's sole responsibility is to test the software that they have been given.
Independent testing teams are one solution to the problems that arise from having the original programmers also test all aspects of the software. Since the testing team did not develop the software, they will hopefully have less interest in reporting that the software functions better than it does. Also, teams dedicated to testing software can use more specialised testing frameworks and methodologies than the developers themselves. The original programmers may not be interested in testing the usability of the software, or may not have the resources to examine the performance of the software; the testing team, however, should have these resources.
The presence of testing teams does not mean that the original developers are not involved with the testing at all. The will still test their code as they develop it, and will be involved with the testing team as the team examines the software and reports on any errors in the software which they locate. The developer is usually the person responsible for correcting these errors.
During iterative and evolutionary development (and agile processes in general), software is frequently given to the customer for them to examine, report back on, and potentially use.
When the customer is closely involved with the software development, it is possible to have the customer perform limited testing of the software themselves. This is known as beta testing.
While the customer will not usually be able to test the software as thoroughly as the original software engineers, they will be able to examine how well the software meets their needs, whether the software requirements have to be changed, and whether there are any obvious bugs which the developers have missed.
Using beta testing is not a substitute for testing by the developers.