Nachdem eine neue Version auf der QA-Umgebung bereitgestellt wurde, geht es ans Testen der neuen Funktionalitäten. Bisher fand innerhalb des Builds lediglich ein automatisierter Unit- und Integrationstest statt, der die technische Fehlerfreiheit bezogen auf eine Einheit bzw. die Integration von Modulen untereinander sicherstellte. Im Rahmen von DevOps spricht man auch vom kontinuierlichen Testen, welches den Prozess des Ausführens von automatischen Tests als Teil der Deployment-Pipeline vorsieht.
Neben den automatisierten Tests ist auch das manuelle Testen der Fachlichkeit von Funktionen und Features häufig notwendig. Das gilt z.B. wenn die Automatisierung von Testfällen hohe Aufwände verursacht. In diesen Fällen ist ein strukturiertes Testmanagement hilfreich. Das Testmanagement erstreckt sich als begleitende Maßnahme über den gesamten Testprozess. Es beinhaltet die Planung, Überwachung und Kontrolle der Aktivitäten aller Testschritte. Den Überblick über alle Aktivitäten, Daten und Status zu behalten ist die Kunst des guten Testmanagements. Daher wird das Testmanagement in der Praxis idealerweise immer toolunterstützt betrieben, da nur dadurch gewährleistet wird, dass die Möglichkeit eines vollständigen Informationsflusses zwischen allen Beteiligten im Projekt gegeben ist.
Im Allgemeinen folgt das Testen den folgenden Schritten:
- Nach dem Sprint Planning übernimmt das Team Anforderungen/User Stories in das Sprintbacklog.
- Ein Entwickler zieht (pulled) ein Requirement / User Story / Bug.
- Er bespricht die Details mit dem verantwortlichen Tester und / oder beschreibt Details im Work Item.
- Der Tester erstellt basierend auf dem Work Item und den Details die Test Cases zur jeweiligen Anforderung (Test-driven Development).
- Der Entwickler implementiert die Anforderung / den Bug Fix und testet kurz die umgesetzte Funktionalität (auch in Absprache mit dem Tester, wenn nötig, bzw. auf Basis der erstellten Test Cases).
- Der Tester beginnt mit seinem Test der Anforderung. Im Fehlerfall wird ein Bug eingestellt und dem Entwickler zugewiesen. Im Einzelfall können Details auch mit dem Entwickler durchge-sprochen werden.
- Durch Regressions- bzw. Fehlernachtests wird die Behebung validiert und der Status des Bugs auf Done gesetzt.
- Sind alle Test Cases einer Anforderung erfolgreich durchlaufen, erfolgt die Abnahme der Anforderung durch den Owner.
- Dieser setzt dann nach erfolgreicher Abnahme die Anforderung auf Closed.
Der Statusverlauf eines Bugs von der Identifizierung bis zur Behebung lässt sich in Azure DevOps wie folgt abbilden: