Testing is central to creating working software. Here's the canonical statement in the importance of testing:
Any program feature without an automated test simply doesn't exist.
This is from Kent Beck's book, Extreme Programming Explained: Embrace Change.
We can distinguish several kinds of testing:
- System testing: This tests an entire application or a system of interrelated applications to be sure that the aggregated suite of software components works properly. This is often used for overall acceptance of software as fit for use.
- Performance testing: This assures that a unit meets performance objectives. In some cases, performance testing includes the study of resources such as memory, threads, or file descriptors. The goal is to be sure that software...