--- 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 |