Das Testen von Software ist die wichtigste Methode der Qualitätssicherung und dient dazu, Fehler in einem Softwaresystem zu finden und seine Gebrauchstauglichkeit sicherzustellen.
Eine gängige Unterteilung verschiedener Teststufen ist die folgende:
Sowohl gegen Funktionalität als auch nicht-funktionale Anforderungen wie Performance oder Usability kann getestet werden bzw. können auch diese Anforderungen selbst validiert werden.
Testautomatisierung dient dazu, Tests effizient und wiederholbar zu machen. Für Komponententests entspricht sie inzwischen dem Standard, mit xUnit gibt es eine ganze Familie von Tools, die Entwickler dabei unterstützen. Testautomatisierung ist aufwändig, aber sie hat einen stark positiven Einfluss auf die Änderbarkeit bzw. das Änderungsrisiko von Software.