Als Testen wird die manuelle oder automatisierte Tätigkeit bezeichnet, in der entwickelte Software mit den Vorgaben aus dem [Requirements Engineering] verglichen wird. Je nach Strategie im Projekt und Umsetzbarkeit werden die Anforderungen als Tests ausprogrammiert oder anhand von Testern überprüft.

!Qualitätssicherung
Das Testen besitzt im [Qualitätssicherung] einen hohen Stellenwert. Es bestehen eine Reihe von Methoden, Tests in einem [Engineering]-Projekt umzusetzen:

* __Testkonzept:__ Für die wirkungsvolle Umsetzung von Tests ist zunächst ein Testkonzept erforderlich. Darin wird die Testabdeckung, die betroffenen [Use Cases|Use Case] und das [Fachkonzept] berücksichtigt.
* __Testautomatisierung:__ Statt Tests von Testern manuell durchführen zu lassen, werden diese als Software-Komponenten konzipiert. Frameworks, wie JUnit, DBUnit oder Selenium unterstützen dabei die Umsetzung. Diese Tests werden in der Regel vor jedem [Release] oder auch nach jedem [Build] durchgeführt. So können die Entwickler automatisch über auftretende Fehler informiert werden.
* __Regressionstest:__ Bei diesem Testverfahren wird für jedes vorhandene Feature ein Test implementiert, sodass der Verlust ein Rückschritt (Regress) der Funktionalität schnell und automatisch entdeckt wird.
* __Fachtest:__ Fachliche Tests stellen die oberste Ebene beim Testen dar, darin wird das Zusammenspiel der gesamten Komponenten geprüft. Fachtests werden meist Manuell von Testern durchgeführt.
* __Smoke Test:__ Ein einfacher Test, der die Funktionalität einer Komponente prüft.
* __Service Test:__ Ein Test, der die Verfügbarkeit eines [Services|Service] prüft.

!Tester
Ein Tester ist ein Job, der üblicherweise vom [Fachbereich|Fachlichkeit] nebenbei durchgeführt wird. In seltenen Fällen wird Software auch anhand der [Anforderungsdokumente|Anforderungsdokument] durch externe Unternehmen getestet.