138 lines
9.2 KiB
Markdown
138 lines
9.2 KiB
Markdown
---
|
||
title: "Modultestplan"
|
||
subtitle: "Desktop-Fakturierungsanwendung — Gruppe A: Prozess / Dokumentenzyklus"
|
||
author:
|
||
- Team 1 – Gruppe A
|
||
version: "1.0"
|
||
lang: de-DE
|
||
toc: true
|
||
toc-depth: 3
|
||
numbersections: false
|
||
papersize: a4
|
||
geometry: "margin=3cm"
|
||
fontsize: 12pt
|
||
linestretch: 1.5
|
||
mainfont: "Times New Roman"
|
||
sansfont: "Arial"
|
||
monofont: "DejaVu Sans Mono"
|
||
header-includes: |
|
||
\usepackage{fancyhdr}
|
||
\usepackage{lastpage}
|
||
\pagestyle{fancy}
|
||
\fancyhf{}
|
||
\fancyhead[L]{Team 1 – Gruppe A}
|
||
\fancyhead[C]{Modultestplan}
|
||
\fancyhead[R]{Version 1.0}
|
||
\fancyfoot[C]{\thepage\ /\ \pageref{LastPage}}
|
||
\renewcommand{\headrulewidth}{0.4pt}
|
||
\renewcommand{\footrulewidth}{0pt}
|
||
---
|
||
|
||
\newpage
|
||
|
||
+-------------------------+-------------------------+-------------------------+
|
||
| Autor | Prüfer | Freigebender |
|
||
+=========================+=========================+=========================+
|
||
| Strubel, Lucas | Prof. Dr. Marmitt, Gerd | Prof. Dr. Marmitt, Gerd |
|
||
+-------------------------+-------------------------+-------------------------+
|
||
| Gruppe A (Prozess) | Modulverantwortlicher | Modulverantwortlicher |
|
||
+-------------------------+-------------------------+-------------------------+
|
||
| 15.06.2026 | 15.06.2026 | 15.06.2026 |
|
||
+-------------------------+-------------------------+-------------------------+
|
||
|
||
**Freigabevermerk:** Dieses Dokument ist nach Prüfung und Freigabe durch den
|
||
Modulverantwortlichen verbindliche Grundlage für den Modultest der Komponente
|
||
*Prozess / Dokumentenzyklus*.
|
||
|
||
## Dokumentenhistorie
|
||
|
||
| Version | Datum | Autor | Grund der Änderung |
|
||
|---------|------------|-----------------------------|---------------------|
|
||
| 1.0 | 15.06.2026 | Lucas Strubel | Initiale Erstellung (ausgegliedert aus Pflichtenheft Gruppe A v1.2) |
|
||
|
||
\newpage
|
||
|
||
## 1. Einleitung
|
||
|
||
### 1.1 Zweck des Dokuments
|
||
Dieser Modultestplan spezifiziert die Modul-/Komponententests der Komponente
|
||
*Prozess / Dokumentenzyklus* (Gruppe A). Er leitet sich direkt aus dem Pflichtenheft
|
||
Gruppe A (ab Version 1.2) ab — insbesondere aus den funktionalen Anforderungen (Kapitel 4),
|
||
den Daten und Schnittstellen (Kapitel 6) sowie den testbaren Abnahmekriterien (Kapitel 8) —
|
||
und überführt diese in deterministische, mit JUnit umsetzbare Testfälle.
|
||
|
||
### 1.2 Rahmenbedingungen
|
||
Die folgenden Testfälle sind deterministisch (feste Ein-/Ausgaben) und mit JUnit 5
|
||
umsetzbar. Geldbeträge werden als `BigDecimal` mit Scale 2 erwartet
|
||
(`assertEquals(new BigDecimal("119.00"), …)` bzw. `compareTo`). Die Schnittstellen der
|
||
Gruppen B (Produkte) und C (Kunden) sowie der PDF-Export werden in den Tests durch Stubs
|
||
ersetzt.
|
||
|
||
## 2. Testfälle
|
||
|
||
+-------+--------------------+-----------------------------+---------------------------+-----------------------------+
|
||
| TC | Abgedeckte PH-Anf. | Vorbedingung | Eingabe | Erwartetes Ergebnis |
|
||
+=======+====================+=============================+===========================+=============================+
|
||
| TC-01 | F-23, F-03 | Position mit Netto 100.00 | `berechne()` | Steuer = 19.00, Brutto = |
|
||
| | | €, Steuersatz 0.19 | | 119.00 (Scale 2) |
|
||
+-------+--------------------+-----------------------------+---------------------------+-----------------------------+
|
||
| TC-02 | F-23 | Einzelpreis 50.00 €, | Positionssumme | positionssummeNetto = |
|
||
| | | Menge 3 | berechnen | 150.00 |
|
||
+-------+--------------------+-----------------------------+---------------------------+-----------------------------+
|
||
| TC-03 | F-03, F-13 | Beleg mit 2 Positionen | Summen berechnen | summeNetto = 200.00, |
|
||
| | | (150.00 € @ 0.19; | | summeSteuer = 32.00, |
|
||
| | | 50.00 € @ 0.07) | | summeBrutto = 232.00 |
|
||
+-------+--------------------+-----------------------------+---------------------------+-----------------------------+
|
||
| TC-04 | F-12, GR-01 | Letzte Rechnungsnummer | `naechsteNummer` | liefert `R-2026-000124` |
|
||
| | | `R-2026-000123` | `(RECHNUNG, 2026)` | (lückenlos) |
|
||
+-------+--------------------+-----------------------------+---------------------------+-----------------------------+
|
||
| TC-05 | F-12 (Format) | Zähler = 7, Jahr 2026 | `naechsteNummer` | liefert `R-2026-000007` |
|
||
| | | | `(RECHNUNG, 2026)` | (führende Nullen, `String`) |
|
||
+-------+--------------------+-----------------------------+---------------------------+-----------------------------+
|
||
| TC-06 | F-14, GR-06 | Rechnungsdatum 2026-06-09, | Rechnung erstellen | zahlungsziel = |
|
||
| | | kein Zahlungsziel | | 2026-06-23 (+14 Tage) |
|
||
+-------+--------------------+-----------------------------+---------------------------+-----------------------------+
|
||
| TC-07 | F-14 | Rechnungsdatum 2026-06-09, | Rechnung erstellen | zahlungsziel = 2026-07-31 |
|
||
| | | Zahlungsziel 2026-07-31 | | (übernommen) |
|
||
+-------+--------------------+-----------------------------+---------------------------+-----------------------------+
|
||
| TC-08 | F-24, NF-INT-01 | Rechnung im Status | `setzePosition(...)` / | wirft |
|
||
| | | `VERSENDET` | Änderung | `IllegalStateException` |
|
||
+-------+--------------------+-----------------------------+---------------------------+-----------------------------+
|
||
| TC-09 | F-19, F-20 | Rechnung im Status `OFFEN` | `storniere()` | Status = `STORNIERT`; |
|
||
| | | | | nicht in |
|
||
| | | | | `offeneRechnungen()`; |
|
||
| | | | | `storniertAm` gesetzt |
|
||
+-------+--------------------+-----------------------------+---------------------------+-----------------------------+
|
||
| TC-10 | F-22, GR-05 | Angebot `AN-2026-000001` | `ausAngebot(angebot)` | AB übernimmt Kunde/ |
|
||
| | | mit Kunde + 2 Positionen | (AB erzeugen) | Positionen/Mengen; |
|
||
| | | | | `vorgaengerNr` = |
|
||
| | | | | `"AN-2026-000001"` |
|
||
+-------+--------------------+-----------------------------+---------------------------+-----------------------------+
|
||
| TC-11 | F-23, F-24 | Rechnung mit Produkt @ | erste Rechnung erneut | einzelpreisNetto bleibt |
|
||
| | | 50.00 €; danach | lesen | 50.00 (Snapshot |
|
||
| | | Produktpreis → 80.00 € | | unverändert) |
|
||
+-------+--------------------+-----------------------------+---------------------------+-----------------------------+
|
||
| TC-12 | F-18, NF-USE-02 | Rechnung ohne Kunde | `speichere()` | Speichern abgelehnt; |
|
||
| | | **oder** ohne Position | | Validierungsfehler benennt |
|
||
| | | | | fehlendes Pflichtfeld |
|
||
+-------+--------------------+-----------------------------+---------------------------+-----------------------------+
|
||
| TC-13 | F-11, F-12, F-13 | Kunde + 1 Position | vollständige Rechnung | Rechnung gespeichert, |
|
||
| | | vorhanden | erstellen | Nummer vergeben, alle |
|
||
| | | | | § 14 UStG-Pflichtangaben |
|
||
| | | | | gesetzt |
|
||
+-------+--------------------+-----------------------------+---------------------------+-----------------------------+
|
||
|
||
Damit sind 13 Testfälle (> 10) spezifiziert, die alle funktionalen Kernregeln (F-12, F-14,
|
||
F-18, F-22, F-23, F-24) sowie die zentralen Geschäftsregeln (GR-01, GR-02, GR-03, GR-05,
|
||
GR-06) abdecken.
|
||
|
||
## 3. Abkürzungen
|
||
| Abkürzung | Bedeutung |
|
||
|-----------|-----------|
|
||
| TC | Testfall (Test Case) |
|
||
| F | Funktionale Anforderung (Pflichtenheft) |
|
||
| NF | Nicht-funktionale Anforderung (Pflichtenheft) |
|
||
| GR | Geschäftsregel (Lastenheft) |
|
||
| Q | Qualitätsanforderung (Lastenheft) |
|
||
| PH | Pflichtenheft |
|