
# Funktionale Tests
#### Situation

- Black-Box-Tests

- Häufig manuell

- Wenn automatisiert, schwer zu verstehen da sehr implizit und technisch

---

# Funktionale Tests
#### Änderungen

- [Cucumber](https://cucumber.io)

- Gemeinsame Festlegung von Tests (PO, QS, Dev, Ops)

- Docker für den schnellen Aufbau der Anwendung

    - Tests können sich nicht beeinflussen

    - Notwendige Anpassungen an Konfiguration wird explizit

---

# Funktionale Tests
#### Beispiel für einen Cucumber-Test

[![Cucumber-Test](./cucumber.jpg)](./cucumber.jpg)

???

Aufbau von Cucumber erklären:

    - Oberer Layer: Natürlicher Text
    - Mittlerer Layer: Mappen von Textanweisungen auf Programmfunktionen
    - Unterer Layer: Code zur Interaktion mit der Anwendung

---

# Funktionale Tests
#### Ergebnis

- Nicht nur für Experten, sogar für Kunden geeignet

- Dient als Diskussionsgrundlage für neue Features

- Änderungen im System wirken sich nicht auf Beschreibung der Testfälle aus

- Trennung der Verantwortlichkeiten

    - QS für Beschreibung der Testfälle

    - Dev für Testcode

---

# Funktionale Tests
#### Anti-Pattern

- Eine (Programmier-)Sprache für alle

- Auf richtige Abstraktion der Beschreibungen achten

- Zu technische Beschreibungen vermeiden

    Der Kunde muss es verstehen können
---
