MSc-IT Study Material
January 2011 Edition

Computer Science Department, University of Cape Town
| MIT Notes Home | Edition Home |

Introduction to software testing

Software never runs as we want it to: creating software is an attempt at formally specifying (using a programming language) a solution to a problem. Assuming that it implements the correct solution (as defined by the by the various requirements and design documentation), it very often implements this solution incorrectly. Even if it does implement the solution correctly, the solution may itself not be what the customer wants, or may have unforeseen consequences in the software's behaviour. In all of these situations the software may produce unexpected and unintended behaviour. The error which causes this unexpected and unintended behaviour is called a software bug.

Testing is the planned process of running software with the intent of discovering errors in the software. It is important to realise that testing is a purposeful process, and is not the accidental discovery of software bugs.

Discovering errors in the software implementation itself is an important aspect to software testing, but it is not the only aspect. Testing can also be used to discover how well the software conforms to the software requirements, including performance requirements, usability requirements, and so on. Understanding how to test software in a methodical manner is a fundamental skill required in engineering software of acceptable quality.

This chapter considers various aspects of software testing.