Testing
Testing is central to creating working software. Here's the canonical statement describing the importance of testing:
Any program feature without an automated test simply doesn't exist.
That's from Kent Beck's book, Extreme Programming Explained: Embrace Change.
We can distinguish several kinds of testing:
- Unit testing: This applies to independent units of software: functions, classes, or modules. The unit is tested in isolation to confirm that it works correctly.
- Integration testing: This combines units to be sure they integrate properly.
- 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 (also often known as end-to-end testing). This is often used for acceptance testing, to confirm software is fit for use.
- Performance testing: This assures that a unit, subsystem, or whole system meets performance...