316 lines
20 KiB
Markdown
316 lines
20 KiB
Markdown
---
|
||
title: "Modultestbericht"
|
||
subtitle: "Desktop-Fakturierungsanwendung — Gesamtsystem (alle Komponenten)"
|
||
author:
|
||
- Team 1
|
||
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}
|
||
\fancyhead[C]{Modultestbericht}
|
||
\fancyhead[R]{Version 1.0}
|
||
\fancyfoot[C]{\thepage\ /\ \pageref{LastPage}}
|
||
\renewcommand{\headrulewidth}{0.4pt}
|
||
\renewcommand{\footrulewidth}{0pt}
|
||
\makeatletter
|
||
\def\brk@scan#1{\ifx\brk@end#1\else#1\allowbreak\expandafter\brk@scan\fi}
|
||
\newcommand{\brk}[1]{\brk@scan#1\brk@end}
|
||
\let\origtexttt\texttt
|
||
\renewcommand{\texttt}[1]{\origtexttt{\brk{#1}}}
|
||
\makeatother
|
||
\AtBeginEnvironment{longtable}{\small}
|
||
---
|
||
|
||
\newpage
|
||
|
||
+-------------------------+-------------------------+-------------------------+
|
||
| Autor | Prüfer | Freigebender |
|
||
+=========================+=========================+=========================+
|
||
| Strubel, Lucas | Prof. Dr. Marmitt, Gerd | Prof. Dr. Marmitt, Gerd |
|
||
+-------------------------+-------------------------+-------------------------+
|
||
| Team 1 (Gesamtsystem) | Modulverantwortlicher | Modulverantwortlicher |
|
||
+-------------------------+-------------------------+-------------------------+
|
||
| 24.06.2026 | 24.06.2026 | 24.06.2026 |
|
||
+-------------------------+-------------------------+-------------------------+
|
||
|
||
**Freigabevermerk:** Dieses Dokument dokumentiert die Durchführung und die Ergebnisse des
|
||
Modultests des Gesamtsystems *Desktop-Fakturierungsanwendung* (Komponenten A–D, gemeinsame
|
||
Infrastruktur sowie Performance-Nachweise) gemäß Modultestplan v2.0. Es ist nach Prüfung und
|
||
Freigabe durch den Modulverantwortlichen verbindlicher Nachweis des durchgeführten Modultests.
|
||
|
||
## Dokumentenhistorie
|
||
|
||
| Version | Datum | Autor | Grund der Änderung |
|
||
|---------|------------|-----------------------------|---------------------|
|
||
| 1.0 | 24.06.2026 | Lucas Strubel | Initiale Erstellung; Dokumentation der Modultest-Durchführung auf Basis des Modultestplans v2.0 |
|
||
|
||
\newpage
|
||
|
||
## 1. Einleitung
|
||
|
||
### 1.1 Zweck des Dokuments
|
||
Dieser Modultestbericht dokumentiert die **Durchführung** und die **Ergebnisse** der im
|
||
Modultestplan v2.0 spezifizierten Modul-/Komponententests des **Gesamtsystems**
|
||
*Desktop-Fakturierungsanwendung*. Berichtet werden die Ergebnisse aller vier Komponenten
|
||
(A – Prozess/Dokumentenzyklus, B – Produktverwaltung, C – Kundenverwaltung,
|
||
D – Programmoberfläche), der gemeinsam genutzten Infrastruktur (Paket `gemeinsam`) sowie der
|
||
übergreifenden Performance-/Lastnachweise. Für jeden im Plan festgelegten Testfall werden die
|
||
ausführende JUnit-5-Testmethode und das tatsächliche Ergebnis (`Bestanden`/`Fehlgeschlagen`)
|
||
ausgewiesen. Quelle der Wahrheit sind die Testklassen unter
|
||
`src/test/java/de/team1/faktura/…` sowie die beim Testlauf erzeugten Surefire-Berichte
|
||
(`target/surefire-reports/`).
|
||
|
||
### 1.2 Testgegenstand und Referenzdokumente
|
||
Prüfgegenstand ist die Anwendung `fakturierung` in Version 1.0.0. Grundlage der Testfälle
|
||
(Vorbedingungen, Eingaben, erwartete Ergebnisse) ist der **Modultestplan v2.0**; die
|
||
fachlichen Anforderungen stammen aus den Pflichtenheften der Gruppen A–D sowie dem
|
||
Lastenheft v1.3. Die Abkürzungen für die abgedeckten Anforderungen (Spalte *Abgedeckte Anf.*)
|
||
sind — wie im Modultestplan — **komponentenlokal** zu lesen: `F-01` in Abschnitt 3.2 bezeichnet
|
||
eine Anforderung des Pflichtenhefts B, nicht des Pflichtenhefts A.
|
||
|
||
## 2. Testdurchführung
|
||
|
||
### 2.1 Testumgebung
|
||
Der vollständige Testlauf wurde mit `./mvnw test` (maven-surefire-plugin) ausgeführt.
|
||
|
||
| Merkmal | Wert |
|
||
|-------------------------|------|
|
||
| Prüfgegenstand | `fakturierung` 1.0.0 |
|
||
| Build-/Testwerkzeug | Apache Maven 3.9.9 (Maven-Wrapper), maven-surefire-plugin 3.2.5 |
|
||
| Testframework | JUnit Jupiter 5.10.2 (JUnit Platform) |
|
||
| Laufzeitumgebung | Oracle JDK 26 (Build 26+35-2893) |
|
||
| Sprach-/Kompilierziel | Java 21 (`maven.compiler.release=21`) |
|
||
| Betriebssystem | Windows 11 (10.0), amd64 |
|
||
| Locale / Kodierung | de_DE; `file.encoding=UTF-8` |
|
||
| Ausführungsdatum | 24.06.2026, 08:42 Uhr (Europe/Berlin) |
|
||
| Testkommando | `./mvnw test` |
|
||
|
||
### 2.2 Vorgehen
|
||
Die Testfälle sind deterministisch (feste Ein-/Ausgaben) und mit JUnit 5 umgesetzt.
|
||
Geldbeträge werden als `java.math.BigDecimal` mit **Scale 2** geprüft. Die jeweils
|
||
benachbarten Komponenten werden im Modultest durch **Stubs/Mocks** ersetzt:
|
||
|
||
- **Komponente A** ersetzt die Schnittstellen der Gruppen B (Produkte) und C (Kunden) sowie
|
||
den PDF-Export durch Stubs.
|
||
- **Komponente B** ersetzt die Schnittstelle `ProduktReferenzPruefung` (Gruppe A) durch einen Stub.
|
||
- **Komponente C** ersetzt die Schnittstelle `KundenReferenzPruefung` (Gruppe A) durch einen Stub.
|
||
- **Komponente D** ersetzt die Service-Schnittstellen der Gruppen A–C durch Stubs/Mocks.
|
||
|
||
Die nachfolgenden Tabellen (Abschnitt 3) führen die Testfälle in der Reihenfolge des
|
||
Modultestplans auf und ergänzen je die ausführende JUnit-Testmethode und das tatsächliche
|
||
Ergebnis. Bei abweichendem Ergebnis wäre der Befund in Abschnitt 5 dokumentiert.
|
||
|
||
## 3. Testergebnisse
|
||
|
||
### 3.1 Komponente A — Prozess / Dokumentenzyklus
|
||
|
||
#### 3.1.1 Dokumentenzyklus (`DokumentzyklusTest`)
|
||
|
||
| TC | Abgedeckte Anf. | JUnit-Testmethode | Erwartetes Ergebnis | Status |
|
||
|-------|-----------------|-------------------|---------------------|--------|
|
||
| TC-01 | F-23, F-03 | `tc01SteuerUndBruttoEinerPosition` | Steuer = 19.00, Brutto = 119.00 (Scale 2) | Bestanden |
|
||
| TC-02 | F-23 | `tc02Positionssumme` | positionssummeNetto = 150.00 | Bestanden |
|
||
| TC-03 | F-03, F-13 | `tc03BelegSummen` | Netto 200.00, Steuer 32.00, Brutto 232.00 | Bestanden |
|
||
| TC-04 | F-12, GR-01 | `tc04LueckenloseRechnungsnummer` | nächste Nummer `R-2026-000124` (lückenlos) | Bestanden |
|
||
| TC-05 | F-12 (Format) | `tc05NummernFormat` | `R-2026-000007` (führende Nullen, `String`) | Bestanden |
|
||
| TC-06 | F-14, GR-06 | `tc06StandardZahlungsziel` | zahlungsziel = Rechnungsdatum + 14 Tage | Bestanden |
|
||
| TC-07 | F-14 | `tc07AbweichendesZahlungsziel` | abweichendes Zahlungsziel wird übernommen | Bestanden |
|
||
| TC-08 | F-24, NF-INT-01 | `tc08UnveraenderlichkeitVersendet` | Änderung wirft `IllegalStateException` | Bestanden |
|
||
| TC-09 | F-19, F-20 | `tc09Storno` | Status `STORNIERT`; `storniertAm`/`storniertVon` gesetzt | Bestanden |
|
||
| TC-10 | F-22, GR-05 | `tc10FolgebelegAusAngebot` | AB übernimmt Kunde/Positionen; `vorgaengerNr` gesetzt | Bestanden |
|
||
| TC-11 | F-23, F-24 | `tc11Snapshot` | einzelpreisNetto bleibt 50.00 (Snapshot unverändert) | Bestanden |
|
||
| TC-12 | F-18, NF-USE-02 | `tc12PflichtfeldValidierung` | Validierungsfehler benennt fehlendes Pflichtfeld | Bestanden |
|
||
| TC-13 | F-11, F-12, F-13| `tc13VollstaendigeRechnung` | Rechnung gespeichert; alle § 14 UStG-Pflichtangaben gesetzt | Bestanden |
|
||
|
||
#### 3.1.2 Belegpersistenz (`JsonDokumentRepositoryTest`)
|
||
|
||
| TC | Abgedeckte Anf. | JUnit-Testmethode | Erwartetes Ergebnis | Status |
|
||
|-------|-----------------|-------------------|---------------------|--------|
|
||
| TC-14 | IF-01 (GoBD) | `belegeWerdenNachNeustartGeladen` | beide Belege nach Neustart geladen; Typen `Rechnung`/`Angebot` erhalten | Bestanden |
|
||
|
||
#### 3.1.3 PDF-Export (`PdfBoxPdfExporterTest`)
|
||
|
||
| TC | Abgedeckte Anf. | JUnit-Testmethode | Erwartetes Ergebnis | Status |
|
||
|-------|-----------------|-------------------|---------------------|--------|
|
||
| TC-15 | F-15, IF-01 | `exportiertVollstaendigenBeleg` | PDF-Datei existiert am Zielpfad | Bestanden |
|
||
| TC-16 | F-15 (Robustheit)| `exportiertBelegMitNullPositionsfeldern` | kein Fehler (`assertDoesNotThrow`); PDF existiert | Bestanden |
|
||
| TC-17 | F-23 (Robustheit)| `summenberechnungToleriertNullPositionen` | summeNetto = summeSteuer = summeBrutto = 0.00 | Bestanden |
|
||
|
||
#### 3.1.4 CSV-Datenexport der Belege (`DokumentCsvExportTest`)
|
||
|
||
| TC | Abgedeckte Anf. | JUnit-Testmethode | Erwartetes Ergebnis | Status |
|
||
|-------|-----------------|-------------------|---------------------|--------|
|
||
| TC-18 | Q-08, IF-04 | `exportiertAlleBelegeMitPositionen` | CSV mit Kopfzeile + je Position eine Zeile (3 Zeilen); enthält `STORNIERT`/Benutzer | Bestanden |
|
||
|
||
### 3.2 Komponente B — Produktverwaltung
|
||
|
||
Anforderungs-Nummern beziehen sich auf das Pflichtenheft Gruppe B; `ProduktReferenzPruefung`
|
||
(Gruppe A) ist durch einen Stub ersetzt.
|
||
|
||
| TC | Abgedeckte Anf. | JUnit-Testmethode | Erwartetes Ergebnis | Status |
|
||
|-------|-----------------|-------------------|---------------------|--------|
|
||
| TC-01 | F-01, F-02 | `tc01NummernVergabe` | Produkt persistiert; Produktnummer = `P-000042` | Bestanden |
|
||
| TC-02 | F-02 (Format) | `tc02NummernFormat` | `P-000007` (führende Nullen, `String`) | Bestanden |
|
||
| TC-03 | F-03 | `tc03NegativerPreis` | Speichern abgelehnt (Validierungsfehler „Einzelpreis") | Bestanden |
|
||
| TC-04 | F-03 | `tc04UnzulaessigerSteuersatz` | Steuersatz `0.15` abgelehnt | Bestanden |
|
||
| TC-05 | F-04, NF-USE-01 | `tc05FehlendeBezeichnung` | abgelehnt; Validierungsfehler benennt „Bezeichnung" | Bestanden |
|
||
| TC-06 | F-05 | `tc06PreisAendern` | einzelpreisNetto = 95.00 nach Änderung | Bestanden |
|
||
| TC-07 | F-07 | `tc07ProduktnummerUnveraenderlich` | Änderung der Produktnummer wirft `IllegalArgumentException` | Bestanden |
|
||
| TC-08 | F-08 | `tc08LoeschenUnverknuepft` | unverknüpftes Produkt entfernt | Bestanden |
|
||
| TC-09 | F-09, F-10 | `tc09Loeschsperre` | referenziertes Produkt nicht gelöscht (Löschsperre) | Bestanden |
|
||
| TC-10 | F-11 | `tc10Sortierung` | Reihenfolge „Anker", „Mast", „Zaun" | Bestanden |
|
||
| TC-11 | F-12 | `tc11SucheBezeichnung` | case-insensitive Teilstring-Treffer | Bestanden |
|
||
| TC-12 | F-12 | `tc12SucheNummer` | Suche nach Produktnummer trifft genau dieses Produkt | Bestanden |
|
||
| TC-13 | F-14 | `tc13FindeProduktNull` | `findeProdukt("P-999999")` liefert `null` | Bestanden |
|
||
| TC-14 | F-15 | `tc14CsvExport` | CSV mit Kopfzeile + 3 Datenzeilen, `;`-getrennt, UTF-8 | Bestanden |
|
||
|
||
### 3.3 Komponente C — Kundenverwaltung
|
||
|
||
Anforderungs-Nummern beziehen sich auf das Pflichtenheft Gruppe C; `KundenReferenzPruefung`
|
||
(Gruppe A) ist durch einen Stub ersetzt.
|
||
|
||
| TC | Abgedeckte Anf. | JUnit-Testmethode | Erwartetes Ergebnis | Status |
|
||
|-------|-----------------|-------------------|---------------------|--------|
|
||
| TC-01 | F-01, F-02 | `tc01NummernVergabe` | Kunde persistiert; Kundennummer = `K-000017` | Bestanden |
|
||
| TC-02 | F-02 (Format) | `tc02NummernFormat` | `K-000007` (führende Nullen, `String`) | Bestanden |
|
||
| TC-03 | F-03, NF-USE-01 | `tc03FehlenderOrt` | abgelehnt; Validierungsfehler benennt „Ort" | Bestanden |
|
||
| TC-04 | F-03 | `tc04LeererName` | leerer Name abgelehnt; benennt „Name" | Bestanden |
|
||
| TC-05 | F-04 | `tc05UngueltigeEMail` | E-Mail `"max.mustermann"` abgelehnt | Bestanden |
|
||
| TC-06 | F-04 | `tc06GueltigeEMail` | E-Mail `"max@beispiel.de"` gespeichert | Bestanden |
|
||
| TC-07 | F-05 | `tc07OrtAendern` | Ort „Mannheim" → „Heidelberg" gespeichert | Bestanden |
|
||
| TC-08 | F-07 | `tc08KundennummerUnveraenderlich` | Änderung der Kundennummer wirft `IllegalArgumentException` | Bestanden |
|
||
| TC-09 | F-08 | `tc09LoeschenUnverknuepft` | unverknüpfter Kunde entfernt | Bestanden |
|
||
| TC-10 | F-09, F-10, GR-04| `tc10Loeschsperre` | Löschen abgelehnt; Hinweis enthält Anzahl `3` | Bestanden |
|
||
| TC-11 | F-11 | `tc11Sortierung` | Reihenfolge „Albrecht", „Maier", „Zimmer" | Bestanden |
|
||
| TC-12 | F-12 | `tc12SucheName` | case-insensitive Teilstring-Treffer | Bestanden |
|
||
| TC-13 | F-12, F-14 | `tc13SucheNummerUndFindeKunde` | Treffer `K-000017`; `findeKunde` liefert `null` für Unbekannte | Bestanden |
|
||
| TC-14 | F-15 | `tc14CsvExport` | CSV mit Kopfzeile + 3 Datenzeilen, `;`-getrennt, UTF-8 | Bestanden |
|
||
|
||
### 3.4 Komponente D — Programmoberfläche
|
||
|
||
Getestet wird die GUI-freie Controller- und Modell-Schicht; die Service-Schnittstellen der
|
||
Gruppen A–C sind durch Stubs/Mocks ersetzt.
|
||
|
||
| TC | Abgedeckte Anf. | JUnit-Testmethode | Erwartetes Ergebnis | Status |
|
||
|-------|-----------------|-------------------|---------------------|--------|
|
||
| TC-01 | F-09 | `tc01ErsterSchritt` | erster Schritt = `KUNDE_WAEHLEN` | Bestanden |
|
||
| TC-02 | F-09 | `tc02Schrittfolge` | Schrittfolge bis `SPEICHERN` durchlaufen | Bestanden |
|
||
| TC-03 | F-10 | `tc03KeinKunde` | Wechsel verhindert; Meldung benennt „Kunde" | Bestanden |
|
||
| TC-04 | F-10 | `tc04KeinePosition` | Wechsel verhindert; Meldung benennt „Position" | Bestanden |
|
||
| TC-05 | F-10 | `tc05MengeNull` | Menge 0 verhindert Wechsel; Meldung benennt „Menge" | Bestanden |
|
||
| TC-06 | F-11 | `tc06ZurueckOhneDatenverlust` | `kundenNr` und `positionen` bleiben erhalten | Bestanden |
|
||
| TC-07 | F-12 | `tc07Zusammenfassung` | enthält Kunde, Positionen, Summen, Datum, Zahlungsziel | Bestanden |
|
||
| TC-08 | F-13 | `tc08GenauEinSpeicheraufruf` | genau ein `erstelleRechnung(...)`; Erfolgsmeldung mit Nummer | Bestanden |
|
||
| TC-09 | F-13 (Fehlerfall)| `tc09SpeichernFehlerfall` | `Meldung(FEHLER, "Rechnungsdatum", …)` dargestellt | Bestanden |
|
||
| TC-10 | F-14 | `tc10StornierenNurOffen` | *Stornieren* nur bei Status `OFFEN` aktiviert | Bestanden |
|
||
| TC-11 | F-15 | `tc11StornoNurNachBestaetigung` | ohne Bestätigung kein Aufruf; mit Bestätigung genau einer | Bestanden |
|
||
| TC-12 | F-08 | `tc12VersendeterBeleg` | Änderungsaktionen deaktiviert; PDF-Export aktiviert | Bestanden |
|
||
| TC-13 | F-06 | `tc13Statusfilter` | Statusfilter `OFFEN` liefert genau die 2 offenen Belege | Bestanden |
|
||
| TC-14 | F-03 | `tc14StammdatenSuche` | Controller delegiert an `KundenService.suche(...)`; Treffer | Bestanden |
|
||
| TC-15 | F-03 (D-F-03) | `tc15KundenListe` | leerer Suchbegriff: gesamter Bestand; sonst gefiltert | Bestanden |
|
||
|
||
### 3.5 Gemeinsame Infrastruktur (Paket `gemeinsam`)
|
||
|
||
Querschnittliche Dienste, die von allen Komponenten genutzt werden: der `EreignisBus`
|
||
(Observer-Muster) sowie die atomare `JsonPersistenz` hinter allen Repositories (IF-01).
|
||
|
||
#### 3.5.1 Ereignisbenachrichtigung (`EreignisBusTest`)
|
||
|
||
| TC | Abgedeckte Anf. | JUnit-Testmethode | Erwartetes Ergebnis | Status |
|
||
|--------|-----------------|-------------------|---------------------|--------|
|
||
| INF-01 | Observer (PH-A §7) | `benachrichtigtAlleBeobachter` | beide Beobachter genau 2× benachrichtigt | Bestanden |
|
||
| INF-02 | Observer | `benachrichtigtNurBetroffenenBereich` | nur `DOKUMENTE`-Beobachter; `KUNDEN` 0× | Bestanden |
|
||
| INF-03 | Observer (Robustheit) | `meldenOhneBeobachterIstWirkungslos` | wirkungslos, keine Exception | Bestanden |
|
||
|
||
#### 3.5.2 Atomare JSON-Persistenz (`JsonPersistenzTest`)
|
||
|
||
| TC | Abgedeckte Anf. | JUnit-Testmethode | Erwartetes Ergebnis | Status |
|
||
|--------|-----------------|-------------------|---------------------|--------|
|
||
| INF-04 | IF-01 (atomar) | `schreibtOhneTempDateiRueckstand` | Zieldatei existiert; keine `.tmp`-Restdatei; Inhalt korrekt | Bestanden |
|
||
| INF-05 | IF-01 | `ersetztVorhandenenBestand` | Bestand vollständig ersetzt | Bestanden |
|
||
| INF-06 | IF-01 | `legtElternverzeichnisseAn` | fehlende Elternverzeichnisse angelegt; Datei existiert | Bestanden |
|
||
|
||
### 3.6 Performance-/Lastnachweise (`PerformanceTest`)
|
||
|
||
Übergreifende Lastnachweise gemäß Lastenheft (Referenzgröße: 5.000 Kunden, 5.000 Produkte,
|
||
1.000 Belege; das Befüllen fließt nicht in die Messung ein). Die Spalte *Status* nennt neben
|
||
dem Ergebnis die gemessene Ausführungszeit (Surefire) gegen die jeweilige Zeitschranke.
|
||
|
||
| ID | Abgedeckte Anf. | JUnit-Testmethode | Erwartetes Ergebnis (Zeitschranke) | Status |
|
||
|------|-----------------|-------------------|------------------------------------|--------|
|
||
| Q-04 | Q-04 (Start) | `q04Anwendungsstart` | drei Repositories laden in ≤ 5 s | Bestanden (gemessen 0,039 s) |
|
||
| Q-02 | Q-02 (Suche) | `q02Suche` | Suche/Auflistung in ≤ 1 s | Bestanden (gemessen 0,025 s) |
|
||
| Q-03 | Q-03 (PDF) | `q03PdfErstellung` | PDF-Erstellung (50 Positionen) in ≤ 2 s | Bestanden (gemessen 0,011 s) |
|
||
| Q-08 | Q-08 (Export) | `q08Datenexport` | Vollexport (CSV) in ≤ 30 s | Bestanden (gemessen 0,181 s) |
|
||
|
||
## 4. Ergebnisübersicht und Statistik
|
||
|
||
| Testklasse | Komponente | Anzahl | Bestanden | Fehlgeschlagen |
|
||
|------------|-----------|--------|-----------|----------------|
|
||
| `dokumente/DokumentzyklusTest` | A – Prozess/Dokumentenzyklus | 13 | 13 | 0 |
|
||
| `dokumente/JsonDokumentRepositoryTest`| A – Belegpersistenz (IF-01/GoBD) | 1 | 1 | 0 |
|
||
| `dokumente/PdfBoxPdfExporterTest` | A – PDF-Export (F-15) | 3 | 3 | 0 |
|
||
| `dokumente/DokumentCsvExportTest` | A – CSV-Export Belege (Q-08) | 1 | 1 | 0 |
|
||
| `produkte/ProduktVerwaltungTest` | B – Produktverwaltung | 14 | 14 | 0 |
|
||
| `kunden/KundenVerwaltungTest` | C – Kundenverwaltung | 14 | 14 | 0 |
|
||
| `gui/OberflaechenControllerTest` | D – Programmoberfläche | 15 | 15 | 0 |
|
||
| `gemeinsam/EreignisBusTest` | Gemeinsame Infrastruktur (Observer) | 3 | 3 | 0 |
|
||
| `gemeinsam/JsonPersistenzTest` | Gemeinsame Infrastruktur (Persistenz) | 3 | 3 | 0 |
|
||
| `PerformanceTest` | Querschnitt (Q-02/Q-03/Q-04/Q-08) | 4 | 4 | 0 |
|
||
| **Summe** | | **71** | **71** | **0** |
|
||
|
||
**Surefire-Gesamtergebnis:** `Tests run: 71, Failures: 0, Errors: 0, Skipped: 0`.
|
||
Reine Testausführung (Surefire): ≈ 1,4 s; Maven-Gesamtlauf: ≈ 3,1 s. Die **Bestehensquote
|
||
beträgt 100 %** (71 von 71 Testfällen bestanden).
|
||
|
||
## 5. Bewertung und Abweichungen
|
||
|
||
**Abweichungen:** keine. Alle **71** im Modultestplan v2.0 spezifizierten Testfälle wurden
|
||
ausgeführt und sind bestanden; es traten weder Fehlschläge (*Failures*) noch Fehler (*Errors*)
|
||
auf, kein Testfall wurde übersprungen.
|
||
|
||
**Performance:** Alle vier Lastnachweise (Q-02, Q-03, Q-04, Q-08) wurden deutlich innerhalb der
|
||
im Lastenheft geforderten Zeitschranken erfüllt (gemessene Ausführungszeiten ≤ 0,2 s gegenüber
|
||
Schranken von 1 s bis 30 s).
|
||
|
||
**Hinweis zum Prüfumfang:** Die Programmoberfläche (Komponente D) wurde — wie im Modultestplan
|
||
vorgesehen — auf Ebene der Controller- und Modell-Schicht ohne Swing-Rendering geprüft; die
|
||
Service-Schnittstellen der Nachbarkomponenten wurden durch Stubs/Mocks ersetzt.
|
||
|
||
**Gesamturteil:** Der Modultest des Gesamtsystems *Desktop-Fakturierungsanwendung* gilt als
|
||
**bestanden**. Die im Modultestplan festgelegten funktionalen Kernregeln, die zentralen
|
||
Geschäftsregeln (GR-01…GR-06) sowie die Qualitäts-/Performanceanforderungen (Q-02, Q-03, Q-04,
|
||
Q-08, Q-09) sind nachgewiesen.
|
||
|
||
## 6. Abkürzungen
|
||
| Abkürzung | Bedeutung |
|
||
|-----------|-----------|
|
||
| TC | Testfall (Test Case) |
|
||
| INF | Infrastruktur-Testfall (Paket `gemeinsam`) |
|
||
| F | Funktionale Anforderung (Pflichtenheft, komponentenlokal) |
|
||
| NF | Nicht-funktionale Anforderung (Pflichtenheft) |
|
||
| IF | Schnittstelle (Interface) |
|
||
| GR | Geschäftsregel (Lastenheft) |
|
||
| Q | Qualitätsanforderung (Lastenheft) |
|
||
| PH | Pflichtenheft |
|
||
| CSV | Comma-Separated Values (offenes Exportformat) |
|
||
| GoBD | Grundsätze zur ordnungsmäßigen Führung und Aufbewahrung von Büchern |
|
||
| SUT | System under Test (Prüfgegenstand) |
|
||
| Surefire | Maven-Plugin zur Testausführung (Berichte unter `target/surefire-reports/`) |
|
||
| Bestanden | Testfall erfolgreich: tatsächliches = erwartetes Ergebnis |
|
||
| Fehlgeschlagen | Testfall nicht erfolgreich (*Failure* oder *Error*) |
|