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.