Daniel Flieger
Author
Daniel Flieger
QA Consultant

October 4, 2024

# Zeitmanagement-Dilemma: Balanceakt zwischen agilen Sprints und gründlichem Fachtest auf Business-Seite - Am Beispiel einer Bankanwendung

Als erfahrener Software-Testexperte bin ich regelmäßig mit einer der größten Herausforderungen in der modernen Softwareentwicklung konfrontiert: Wie lässt sich die Geschwindigkeit agiler Sprints mit dem Bedürfnis nach gründlichen Fachtests auf der Business-Seite in Einklang bringen? Dieses Zeitmanagement-Dilemma stellt insbesondere im Bankensektor, wo Genauigkeit und Sicherheit oberste Priorität haben, einen komplexen Balanceakt dar. In diesem Blogpost möchte ich anhand einer Bankanwendung aufzeigen, wie wir diesen Balanceakt meistern können.

## Die Herausforderung verstehen

Stellen wir uns vor, wir arbeiten an einer neuen Mobile-Banking-App für eine große Regionalbank. Die App soll Funktionen wie Kontoübersicht, Überweisungen, Kartenverwaltung und Kreditanträge bieten. Die Bank möchte mit diesem Projekt ihre digitale Präsenz stärken und jüngere Kunden gewinnen. Gleichzeitig muss sie strenge regulatorische Anforderungen erfüllen und das Vertrauen ihrer bestehenden Kundschaft wahren.

### Die agile Perspektive

Das Entwicklungsteam arbeitet in zweiwöchigen Sprints und möchte Features schnell ausliefern, um auf dem wettbewerbsintensiven Markt die Nase vorn zu haben. Der Product Owner drängt darauf, neue Funktionen wie biometrische Authentifizierung und In-App-Kreditanträge möglichst bald zu implementieren.

### Die Business-Perspektive

Auf der anderen Seite stehen die Fachabteilungen der Bank. Sie bestehen auf gründlichen Tests aller Geschäftsprozesse, insbesondere bei kritischen Funktionen wie Überweisungen oder Kreditgenehmigungen. Ihre Sorge: Ein Fehler könnte nicht nur finanzielle Verluste, sondern auch einen erheblichen Reputationsschaden für die Bank bedeuten.

## Strategien für einen erfolgreichen Balanceakt

Um dieses Dilemma zu lösen, müssen wir einen ganzheitlichen Ansatz verfolgen, der sowohl die Bedürfnisse des agilen Entwicklungsteams als auch die der Fachabteilungen berücksichtigt. Hier sind sieben Strategien, die wir in unserem Banking-App-Projekt einsetzen können:

### 1. Priorisierung durch Business Value

Bei der Entwicklung unserer Banking-App ist es entscheidend, Features nach ihrem Geschäftswert zu priorisieren. Hierfür arbeiten wir eng mit dem Product Owner und den Fachabteilungen zusammen.

**Praktische Umsetzung:**
- Wir erstellen eine priorisierte Backlog-Liste, in der kritische Funktionen wie sichere Überweisungen und Kontoübersicht höchste Priorität haben.
- Weniger kritische Features wie personalisierte Finanzanalysen werden für spätere Sprints eingeplant.
- Wir nutzen die MoSCoW-Methode (Must have, Should have, Could have, Won't have), um klare Prioritäten zu setzen.

**Beispiel:**
In unserem ersten Sprint konzentrieren wir uns auf die sichere Anmeldung und Kontoübersicht. Der In-App-Kreditantrag wird als "Should have" eingestuft und für einen späteren Sprint geplant.

### 2. Continuous Testing im agilen Kontext

Um die Qualität unserer Banking-App kontinuierlich sicherzustellen, integrieren wir Testaktivitäten von Anfang an in den Entwicklungsprozess.

**Praktische Umsetzung:**
- Wir implementieren Behavior-Driven Development (BDD) mit Gherkin-Syntax, um Geschäftsanforderungen in ausführbare Tests zu übersetzen.
- Automatisierte Unit- und Integrationstests werden für jede neue Funktionalität erstellt.
- Kontinuierliche Integration (CI) wird genutzt, um Tests bei jedem Code-Commit auszuführen.

**Beispiel:**
Für die Überweisungsfunktion erstellen wir BDD-Szenarien wie:

```gherkin
Feature: Überweisung tätigen
 Scenario: Erfolgreiche Überweisung
   Given der Nutzer ist eingeloggt und hat ausreichend Guthaben
   When er eine Überweisung von 100 EUR an ein gültiges Konto tätigt
   Then sollte die Überweisung erfolgreich sein
   And sein Kontostand sollte um 100 EUR reduziert sein
```

Diese Szenarien werden automatisiert getestet und bei jedem Build ausgeführt.

### 3. Testautomatisierung strategisch einsetzen

Automatisierung ist der Schlüssel, um sowohl Geschwindigkeit als auch Gründlichkeit zu gewährleisten. In unserer Banking-App konzentrieren wir uns auf die Automatisierung wiederkehrender und kritischer Testfälle.

**Praktische Umsetzung:**
- Wir nutzen Selenium für End-to-End-Tests der Web-Oberfläche und Appium für die mobile App.
- API-Tests werden mit Tools wie Postman oder RestAssured automatisiert.
- Sicherheitstests werden teilweise mit automatisierten Scannern durchgeführt.

**Beispiel:**
Für die Anmeldefunktion erstellen wir automatisierte Tests, die verschiedene Szenarien abdecken:
- Erfolgreiche Anmeldung mit korrekten Zugangsdaten
- Fehlgeschlagene Anmeldung bei falschen Zugangsdaten
- Kontosperrung nach mehreren fehlgeschlagenen Versuchen
- Zwei-Faktor-Authentifizierung

Diese Tests werden bei jedem Deploy automatisch ausgeführt und geben schnelles Feedback über die Kernfunktionalität der App.

### 4. Risiko-basiertes Testen

In einer Banking-App gibt es Funktionen, die ein höheres Risiko bergen als andere. Wir konzentrieren unsere Testbemühungen auf diese kritischen Bereiche.

**Praktische Umsetzung:**
- Wir führen regelmäßige Risikoanalysen durch, um kritische Geschäftsbereiche zu identifizieren.
- Testressourcen werden entsprechend dem Risikoniveau zugewiesen.
- Wir kommunizieren klar über potenzielle Risiken und Testabdeckung mit Stakeholdern.

**Beispiel:**
In unserer Risikoanalyse identifizieren wir folgende Hochrisiko-Bereiche:
1. Überweisungsfunktion (finanzielles Risiko)
2. Datenschutz und Sicherheit (regulatorisches Risiko)
3. Kreditantragsprozess (finanzielles und Reputationsrisiko)

Für diese Bereiche setzen wir zusätzliche manuelle Tests an und erhöhen die Testabdeckung durch Automatisierung.

### 5. Flexible Testzyklen implementieren

Um den Bedürfnissen sowohl des agilen Teams als auch der Fachabteilungen gerecht zu werden, implementieren wir flexible Testzyklen.

**Praktische Umsetzung:**
- Wir führen "Test Sprints" parallel zu Entwicklungssprints ein.
- Kritische Funktionen durchlaufen einen längeren Testzyklus, der sich über mehrere Sprints erstrecken kann.
- Wir nutzen "Testing in Production" für nicht-kritische Features, um Feedbackschleifen zu verkürzen.

**Beispiel:**
Während die Entwicklung an der In-App-Kreditantragsfunktion in Sprint 3 beginnt, planen wir einen ausgedehnten Testzyklus, der sich bis Sprint 5 erstreckt. In dieser Zeit durchläuft die Funktion:
- Automatisierte Tests in jeder Sprintiteration
- Manuelle Tests durch QA-Experten
- User Acceptance Tests mit ausgewählten Bankmitarbeitern
- Compliance-Prüfung durch die Rechtsabteilung

### 6. Verbesserte Kommunikation und Zusammenarbeit

Ein Schlüsselelement zur Überwindung des Zeitmanagement-Dilemmas ist die Verbesserung der Kommunikation zwischen allen Beteiligten.

**Praktische Umsetzung:**
- Wir führen tägliche Stand-ups ein, an denen auch Vertreter der Fachabteilungen teilnehmen.
- "Three Amigos"-Sessions (Business, Entwicklung, Test) werden vor der Implementierung jeder kritischen Funktion durchgeführt.
- Wir implementieren ein transparentes Reporting-System, das den Teststatus in Echtzeit anzeigt.

**Beispiel:**
Vor der Implementierung der Überweisungsfunktion halten wir eine "Three Amigos"-Session ab:
- Der Business-Analyst erläutert die genauen Anforderungen und regulatorischen Vorgaben.
- Der Entwickler skizziert die technische Umsetzung und potenzielle Herausforderungen.
- Der Tester entwirft Testszenarien und identifiziert kritische Testfälle.

Diese Session stellt sicher, dass alle Beteiligten ein gemeinsames Verständnis der Anforderungen und Risiken haben.

### 7. Schulung und Weiterbildung

Um den Balanceakt langfristig zu meistern, investieren wir in die Weiterbildung aller Beteiligten.

**Praktische Umsetzung:**
- Tester werden in Bankprozessen und regulatorischen Anforderungen geschult.
- Fachabteilungen erhalten Einblicke in agile Methoden und den Softwareentwicklungsprozess.
- Wir fördern job rotation, um das gegenseitige Verständnis zu verbessern.

**Beispiel:**
Wir organisieren einen Workshop, in dem Mitarbeiter der Kreditabteilung und Softwaretester gemeinsam den Kreditantragsprozess durchgehen. Die Tester lernen die komplexen Entscheidungskriterien kennen, während die Kreditexperten ein besseres Verständnis für die technischen Herausforderungen bei der Implementierung gewinnen.

## Praktische Anwendung: Ein Sprint in unserem Banking-App-Projekt

Lassen Sie uns nun einen typischen zweiwöchigen Sprint in unserem Banking-App-Projekt durchlaufen und sehen, wie wir die oben genannten Strategien anwenden:

**Sprint-Ziel:** Implementierung der Überweisungsfunktion

**Tag 1-2: Sprint-Planung und Vorbereitung**
- Das Team führt eine "Three Amigos"-Session durch, um die Anforderungen für die Überweisungsfunktion zu klären.
- Risikoanalyse identifiziert kritische Aspekte wie Transaktionssicherheit und Betrugsprävention.
- BDD-Szenarien werden gemeinsam entwickelt und in Gherkin-Syntax formuliert.

**Tag 3-8: Entwicklung und kontinuierliches Testen**
- Entwickler implementieren die Funktion in kleinen, testbaren Inkrementen.
- Automatisierte Unit- und Integrationstests werden parallel zur Entwicklung erstellt.
- Tägliche Stand-ups halten alle Beteiligten auf dem Laufenden.

**Tag 9-10: Intensive Testphase**
- Automatisierte End-to-End-Tests werden ausgeführt und verfeinert.
- Manuelle Exploratory Tests decken Randszenarien ab.
- Performance- und Sicherheitstests werden durchgeführt.

**Tag 11: Fachtest und User Acceptance Testing (UAT)**
- Vertreter der Fachabteilung führen UAT durch.
- Feedback wird gesammelt und priorisiert.

**Tag 12-13: Feinjustierung und Bugfixing**
- Kritische Probleme werden sofort adressiert.
- Nicht-kritische Verbesserungen werden für den nächsten Sprint eingeplant.

**Tag 14: Sprint-Review und Retrospektive**
- Das Team präsentiert die Überweisungsfunktion.
- Lessons Learned werden diskutiert und in die Planung des nächsten Sprints integriert.

## Fazit: Ein dynamischer Prozess

Der Balanceakt zwischen agilen Sprints und gründlichen Fachtests auf der Business-Seite ist, wie wir am Beispiel unserer Banking-App gesehen haben, ein dynamischer Prozess. Er erfordert kontinuierliche Anpassung, offene Kommunikation und die Bereitschaft, neue Ansätze auszuprobieren.

Indem wir agile Prinzipien mit soliden Testpraktiken und einem tiefen Verständnis für die Geschäftsanforderungen im Bankensektor verbinden, können wir sowohl die Geschwindigkeit der Entwicklung als auch die Qualität und Sicherheit des Endprodukts gewährleisten. Dies führt letztendlich zu einer Banking-App, die nicht nur technisch einwandfrei ist, sondern auch einen echten Mehrwert für die Bank und ihre Kunden bietet.

Die hier vorgestellten Strategien sind nicht als starre Regeln zu verstehen, sondern als Leitlinien, die je nach Projekt und Organisation angepasst werden müssen. Der Schlüssel zum Erfolg liegt in der kontinuierlichen Verbesserung und der Fähigkeit, aus Erfahrungen zu lernen.

Letztendlich geht es darum, eine Kultur zu schaffen, in der Qualität nicht als Hindernis für Geschwindigkeit gesehen wird, sondern als integraler Bestandteil des Entwicklungsprozesses. Nur so können wir sicherstellen, dass unsere Banking-App nicht nur schnell auf den Markt kommt, sondern auch das Vertrauen der Nutzer gewinnt und langfristig erfolgreich ist.

Erinnern wir uns: In der Welt des Bankwesens ist Vertrauen die wertvollste Währung. Unser Balanceakt zwischen agilen Sprints und gründlichen Fachtests ist nicht nur eine technische Notwendigkeit, sondern ein Versprechen an unsere Kunden. Indem wir Geschwindigkeit und Qualität in Einklang bringen, schaffen wir nicht nur eine App, sondern ein digitales Erlebnis, das die Erwartungen unserer Nutzer übertrifft und gleichzeitig die höchsten Standards der Branche erfüllt.