22 KiB
Modultestplan– Fakturierungssystem
SE1 Team 2 – Hochschule Mannheim
Christopher Lampert
11.06.2026
Kundenverwaltung
Die folgenden Modultests prüfen die fachlichen Anforderungen des Moduls Kundenverwaltung. Die Testfälle sind so formuliert, dass sie ohne GUI-Abhängigkeiten als automatisierte JUnit-Tests umgesetzt werden können. Die Zuordnung zu den Anforderungen gewährleistet die Traceability zwischen Anforderungen und Tests. Die Anforderungen BA-KV-01 bis BA-KV-04 sowie GR-05 und NF-ARCH-01 werden vollständig abgedeckt.
Testfälle
| Testfall-ID | Testziel / Beschreibung | Vorbedingungen | Testschritte | Erwartetes Ergebnis | Abgedeckte Anforderungen |
|---|---|---|---|---|---|
| MT-KV-01 | Kunde mit vollständigen Pflichtattributen anlegen | Kein Kunde mit derselben ID vorhanden | Kundenobjekt mit Firmenname, Straße, PLZ und Ort anlegen und speichern | Kunde wird gespeichert und ist in der Kundenliste vorhanden | BA-KV-01 |
| MT-KV-02 | Kunde ohne Firmenname bzw. Nachname anlegen | System betriebsbereit | Kundenobjekt ohne Firmenname/Nachname speichern | Speicherung wird abgelehnt, Fehlermeldung wird erzeugt | BA-KV-01 |
| MT-KV-03 | Kunde ohne Straße anlegen | System betriebsbereit | Kundenobjekt ohne Straßenangabe speichern | Speicherung wird abgelehnt, Fehlermeldung wird erzeugt | BA-KV-01 |
| MT-KV-04 | Kunde mit ungültigem E-Mail-Format anlegen | System betriebsbereit | Kundenobjekt mit E-Mail „kunde@“ speichern | Speicherung wird abgelehnt, da das E-Mail-Format ungültig ist | BA-KV-01 |
| MT-KV-05 | Vorhandenen Kunden bearbeiten | Kunde existiert bereits im System | Telefonnummer des Kunden ändern und speichern | Geänderte Telefonnummer wird gespeichert und angezeigt | BA-KV-02 |
| MT-KV-06 | Persistenz geänderter Kundendaten prüfen | Kunde existiert bereits | Kundendaten ändern, speichern und erneut aus der Datenhaltung laden | Geänderte Daten bleiben unverändert erhalten | BA-KV-02, NF-ARCH-01 |
| MT-KV-07 | Kunde über Namen suchen | Kunde „Muster GmbH“ vorhanden | Suche mit Suchbegriff „Muster“ ausführen | Kunde wird gefunden und zurückgegeben | BA-KV-03 |
| MT-KV-08 | Kunde über Kundennummer suchen | Kunde mit bekannter Kundennummer vorhanden | Suche über Kundennummer ausführen | Passender Kunde wird gefunden | BA-KV-03 |
| MT-KV-09 | Nicht vorhandenen Kunden suchen | Gesuchter Kunde existiert nicht | Suche mit unbekanntem Namen oder unbekannter Kundennummer durchführen | Leeres Suchergebnis bzw. Hinweis „Kein Kunde gefunden“ | BA-KV-03 |
| MT-KV-10 | Nicht referenzierten Kunden löschen | Kunde existiert und wird von keinem Dokument verwendet | Löschvorgang ausführen und anschließend Suche starten | Kunde wird gelöscht und kann nicht mehr gefunden werden | BA-KV-04 |
| MT-KV-11 | Referenzierten Kunden löschen | Kunde wird in Angebot, Auftragsbestätigung, Lieferschein oder Rechnung verwendet | Löschvorgang ausführen | Löschung wird abgewiesen, Kunde bleibt erhalten | BA-KV-04, GR-05 |
Abdeckungsübersicht
| Anforderung | Abgedeckte Testfälle |
|---|---|
| BA-KV-01 Kunde anlegen | MT-KV-01 bis MT-KV-04 |
| BA-KV-02 Kunde bearbeiten | MT-KV-05, MT-KV-06 |
| BA-KV-03 Kunde suchen | MT-KV-07 bis MT-KV-09 |
| BA-KV-04 Kunde löschen | MT-KV-10, MT-KV-11 |
| GR-05 Stammdatenschutz | MT-KV-11 |
| NF-ARCH-01 Persistenz | MT-KV-06 |
Produktverwaltung
Die folgenden Modultests prüfen die fachlichen und systemtechnischen Anforderungen des Moduls Produktverwaltung. Die Testfälle sind so formuliert, dass sie ohne GUI-Abhängigkeiten als automatisierte JUnit-Tests direkt gegen die Geschäftslogik (ProductService) und Datenhaltung (ProductRepository) umgesetzt werden können. Die Zuordnung zu den Anforderungen gewährleistet die vollständige Traceability.
Testfälle
| Testfall-ID | Testziel / Beschreibung | Vorbedingungen | Testschritte | Erwartetes Ergebnis | Abgedeckte Anforderungen |
|---|---|---|---|---|---|
| MT-PV-01 | Produkt mit vollständigen Pflichtattributen anlegen | Kein Produkt mit derselben ID vorhanden | Produktobjekt mit Produkt-ID, Bezeichnung, Netto-Einzelpreis und Mehrwertsteuersatz anlegen und speichern | Produkt wird erfolgreich in der Liste erfasst und persistent gespeichert | F-SH-PV-01 |
| MT-PV-02 | Produkt ohne Bezeichnung anlegen | System betriebsbereit | Produktobjekt ohne Bezeichnung speichern | Speicherung wird abgelehnt, eine Fehlermeldung wird erzeugt | F-SH-PV-01 |
| MT-PV-03 | Produkt ohne Netto-Einzelpreis anlegen | System betriebsbereit | Produktobjekt ohne Preisangabe speichern | Speicherung wird abgelehnt, eine Fehlermeldung wird erzeugt | F-SH-PV-01 |
| MT-PV-04 | Produkt mit negativem Preis ablehnen | System betriebsbereit | Produktobjekt mit einem Preis kleiner als 0,00 Euro speichern | Speicherung wird blockiert, eine Fehlermeldung wird erzeugt | F-SH-PV-06 |
| MT-PV-05 | Produkt mit Preis von exakt Null Euro anlegen | System betriebsbereit | Produktobjekt mit einem Preis von exakt 0,00 Euro speichern | Speicherung wird akzeptiert, das Produkt wird angelegt | F-SH-PV-06 |
| MT-PV-06 | Bestehende Produktattribute bearbeiten | Produkt existiert bereits im System | Werte für Bezeichnung, Beschreibung oder Kategorie ändern und speichern | Geänderte Attribute werden übernommen und aktualisiert angezeigt | F-SH-PV-02 |
| MT-PV-07 | Validierung der maximalen Beschreibungslänge | Produkt existiert bereits im System | Beschreibung mit einer Länge von mehr als 500 Zeichen füllen und speichern | Speicherung wird wegen Überschreitung der Zeichengrenze abgewiesen | F-SH-PV-02 |
| MT-PV-08 | Produkt über die Bezeichnung suchen | Produkte „Schraube M6“ und „SCHRAUBE M8“ vorhanden | Suche mit dem Suchbegriff „schraube“ ausführen | Beide Produkte werden unabhängig von Groß-/Kleinschreibung im Suchergebnis zurückgegeben | F-SH-PV-05 |
| MT-PV-09 | Produktsuche ohne Treffer ausführen | Gesuchtes Produkt existiert nicht im System | Suche mit einem unbekannten Begriff durchführen | Ein leeres Suchergebnis wird zurückgegeben | F-SH-PV-05 |
| MT-PV-10 | Nicht referenziertes Produkt erfolgreich löschen | Produkt existiert und wird in keinem Beleg verwendet | Löschvorgang für die Produkt-ID ausführen und anschließend Suche starten | Produkt wird gelöscht und kann nicht mehr gefunden werden | F-SH-PV-03 |
| MT-PV-11 | Referenziertes Produkt gegen Löschung sperren | Produkt wird in Angebot, Auftragsbestätigung, Lieferschein oder Rechnung verwendet | Löschvorgang für die Produkt-ID ausführen | Löschung wird abgewiesen, Produkt bleibt unverändert im System erhalten | F-SH-PV-03, GR-05 |
| MT-PV-12 | Persistenz der Produktstammdaten nach Neustart prüfen | System betriebsbereit | Ein Produkt anlegen, speichern und die Daten erneut aus der Datenhaltung laden | Daten bleiben nach dem Neuladen vollständig und unverändert erhalten | NF-SH-ARCH-01 |
Abdeckungsübersicht
| Anforderung | Abgedeckte Testfälle |
|---|---|
| F-SH-PV-01 Produkt anlegen | MT-PV-01 bis MT-PV-03 |
| F-SH-PV-02 Produkt bearbeiten | MT-PV-06, MT-PV-07 |
| F-SH-PV-03 Produkt löschen | MT-PV-10, MT-PV-11 |
| F-SH-PV-04 Übersichtsliste anzeigen | MT-PV-01 |
| F-SH-PV-05 Produktsuche | MT-PV-08, MT-PV-09 |
| F-SH-PV-06 Validierung Preisbereich | MT-PV-04, MT-PV-05 |
| GR-05 Stammdatenschutz | MT-PV-11 |
| NF-SH-ARCH-01 Persistenz (JSON) | MT-PV-12 |
Dokumentenprozess
Die folgenden Modultests prüfen die fachlichen Anforderungen des Moduls Dokumentenprozess. Die Testfälle sind so formuliert, dass sie ohne GUI-Abhängigkeiten direkt als JUnit-Tests gegen DokumentService, DokumentRepository, NumberGenerator, FakeProductLookup und FakeCustomerLookup umgesetzt werden können. Dadurch wird die Traceability zwischen den Anforderungen des Pflichtenhefts, den Abnahmekriterien und den Modultests sichergestellt.
Die Tests decken die gesamte Dokumentenkette Angebot → Auftragsbestätigung → Lieferschein → Rechnung sowie Nummernkreise, Statusregeln, Summenberechnung, Preis-Snapshots, PDF-Export und Stammdatenreferenzen vollständig ab.
Testfälle
| Testfall-ID | Testziel / Beschreibung | Vorbedingungen | Testschritte | Erwartetes Ergebnis | Abgedeckte Anforderungen |
|---|---|---|---|---|---|
| MT-DP-01 | Angebot mit vorhandenem Kunden und Positionen anlegen | Kunde 10001 sowie Produkte 20001 und 20002 sind über FakeCustomerLookup und FakeProductLookup vorhanden | erstelleAngebot(10001, Positionen mit 2x Produkt 20001 und 1x Produkt 20002) aufrufen | Angebot wird gespeichert, Status = OFFEN, Datum = LocalDate.now(), zwei Positionen, Nummer im Format A-yyyy-nnnn | PH-DP-01, PH-DP-14, PH-DP-16 |
| MT-DP-02 | Summenberechnung im Angebot prüfen | Positionen: 2×100,00 EUR (19 % MwSt.) und 1×50,00 EUR (7 % MwSt.) | Angebot erstellen / berechneSummen() ausführen | Netto = 250,00 EUR, USt. = 41,50 EUR, Brutto = 291,50 EUR | PH-DP-01, PH-DP-08, PH-DP-16 |
| MT-DP-03 | Fortlaufende Angebotsnummern vergeben | Nummernkreis leer | Zwei Angebote nacheinander erstellen | Nummern A-2026-0001 und A-2026-0002 werden vergeben | PH-DP-02, PH-DP-16 |
| MT-DP-04 | Offenes Angebot bearbeiten, überführtes Angebot gesperrt | OFFENES und UEBERFUEHRTES Angebot existieren | OFFEN: ändern; UEBERFUEHRT: aktualisieren | OFFEN erfolgreich, UEBERFUEHRT → IllegalStateException | PH-DP-03, PH-DP-16 |
| MT-DP-05 | Auftragsbestätigung aus Angebot erzeugen | Offenes Angebot vorhanden | erstelleAuftragsbestaetigung(angebotsNr) | AB mit Nummer AB-yyyy-nnnn wird erstellt, Daten übernommen | PH-DP-04, PH-DP-16 |
| MT-DP-06 | Doppelte Auftragsbestätigung verhindern | AB existiert bereits | erneute Erstellung | DuplicateDocumentException, keine doppelte AB | PH-DP-05, PH-DP-16 |
| MT-DP-07 | Lieferschein aus Auftragsbestätigung erzeugen | AB im Status BESTAETIGT | erstelleLieferschein(auftragsNr, lieferdatum) | LS-yyyy-nnnn erstellt, Status GELIEFERT, Mengen übernommen | PH-DP-06, PH-DP-16 |
| MT-DP-08 | Lieferschein ohne Preisfelder bereitstellen | Lieferschein vorhanden | DTO/Export erzeugen | Nur Bezeichnung + Menge, keine Preise enthalten | PH-DP-07, PH-DP-16 |
| MT-DP-09 | Rechnung aus Lieferschein erzeugen | Lieferschein im Status GELIEFERT | erstelleRechnung(lieferscheinNr) | Rechnung R-yyyy-nnnn mit Pflichtangaben und Summen erstellt | PH-DP-08, PH-DP-09, PH-DP-11, PH-DP-16 |
| MT-DP-10 | Fehlende Pflichtangaben in Rechnung ablehnen | Unvollständige Kundendaten | Rechnung erzeugen | ValidationException, keine Speicherung | PH-DP-09, PH-DP-16 |
| MT-DP-11 | Fortlaufende Rechnungsnummern vergeben | Mehrere Lieferscheine vorhanden | Rechnungen erzeugen | Lückenlose Nummernfolge R-yyyy-0001… | PH-DP-10, PH-DP-16 |
| MT-DP-12 | Festgeschriebene Rechnung ist unveränderbar | Rechnung FESTGESCHRIEBEN | Änderungen durchführen | Änderungen werden blockiert | PH-DP-11, PH-DP-16 |
| MT-DP-13 | Preis- und MwSt.-Snapshot sichern | Produktpreis wird nach Erstellung geändert | Angebot erstellen, Preis ändern, neu laden | Alte Preise bleiben im Dokument erhalten | PH-DP-14, PH-DP-16 |
| MT-DP-14 | PDF-Export erzeugt Datei | Dokument existiert | exportAlsPdf() | PDF-Datei wird erstellt (>0 Byte), enthält Nummer + Typ | PH-DP-12, PH-DP-16 |
| MT-DP-15 | Dokumentenübersicht pro Kunde | Mehrere Kunden mit Dokumenten | findByKunde(1) | Nur Kundendokumente werden zurückgegeben, sortiert | PH-DP-13, PH-DP-16 |
| MT-DP-16 | Stammdatenreferenzen prüfen | Produkte und Kunden vorhanden | isProductReferenced / isCustomerReferenced | Referenzierte Werte = true, sonst false | PH-DP-15, PH-DP-16 |
Abdeckungsübersicht
| Anforderung | Abgedeckte Testfälle |
|---|---|
| PH-DP-01 Angebot anlegen | MT-DP-01, MT-DP-02 |
| PH-DP-02 Angebotsnummer vergeben | MT-DP-03 |
| PH-DP-03 Angebot bearbeiten | MT-DP-04 |
| PH-DP-04 Auftragsbestätigung erzeugen | MT-DP-05 |
| PH-DP-05 Doppelte Auftragsbestätigung verhindern | MT-DP-06 |
| PH-DP-06 Lieferschein erzeugen | MT-DP-07 |
| PH-DP-07 Lieferschein ohne Preise | MT-DP-08 |
| PH-DP-08 Rechnung erzeugen | MT-DP-02, MT-DP-09 |
| PH-DP-09 Pflichtangaben prüfen | MT-DP-09, MT-DP-10 |
| PH-DP-10 Rechnungsnummer fortlaufend | MT-DP-11 |
| PH-DP-11 Rechnung festschreiben | MT-DP-09, MT-DP-12 |
| PH-DP-12 PDF-Export | MT-DP-14 |
| PH-DP-13 Dokumentenübersicht pro Kunde | MT-DP-15 |
| PH-DP-14 Preis-Snapshot sichern | MT-DP-01, MT-DP-13 |
| PH-DP-15 Stammdatenreferenzen prüfen | MT-DP-16 |
| PH-DP-16 Testbare Logik ohne GUI | MT-DP-01 bis MT-DP-16 |
GUI
Die nachfolgende Abdeckungsübersicht zeigt die Zuordnung der definierten Testfälle zu den Anforderungen des Moduls GUI / Programmoberfläche (Gruppe E). Ziel ist es, die Rückverfolgbarkeit (Traceability) zwischen Anforderungen, Akzeptanztests und den geplanten JUnit-Testfällen sicherzustellen.
Jeder Testfall wurde so definiert, dass er eine oder mehrere Anforderungen des Pflichtenhefts überprüft. Dadurch kann nachvollzogen werden, welche Anforderungen bereits getestet werden und ob eine vollständige Testabdeckung erreicht wurde. Die Übersicht dient außerdem als Nachweis dafür, dass sämtliche Muss-Anforderungen sowie die zugehörigen Akzeptanztests durch geeignete Testfälle abgedeckt werden.
Testfälle
| Testfall-ID | Testziel / Beschreibung | Vorbedingungen | Testschritte | Erwartetes Ergebnis | Abgedeckte Anforderungen |
|---|---|---|---|---|---|
| TF-GUI-01 | Prüfen, ob die Angebotserfassungsmaske geöffnet werden kann | Mindestens ein Kunde und ein Produkt sind im System vorhanden | Anwendung starten, Angebotserfassung öffnen | Maske wird ohne Fehler angezeigt | BA-GUI1-01 |
| TF-GUI-02 | Prüfen, ob Produkte über ein Dropdown ausgewählt werden können | Angebotserfassungsmaske ist geöffnet | Dropdown öffnen, Produkt auswählen | Gewähltes Produkt wird dem Angebot hinzugefügt | BA-GUI-01 |
| TF-GUI-03 | Prüfen der Live-Summenaktualisierung bei Mengenänderung | Angebot enthält mindestens einen Artikel | Artikel auswählen, Menge ändern | Gesamtsumme wird sofort neu berechnet | BA-GUI-01 AT-GUI-01 |
| TF-GUI-04 | Prüfen der Summenberechnung bei mehreren Artikeln | Angebotserfassungsmaske ist geöffnet | Mehrere Artikel hinzugefügen, Menge festlegen | Gesamtsumme entspricht der Summe aller Positionen | BA-GUI-01 |
| TF-GUI-05 | Prüfen der Erfolgsmeldung nach dem Speichern eines Angebots | Angebot enthält Kunde und mindestens einen Artikel | Angebot erfassen, Speichern auswählen | Erfolgsmeldung wird angezeigt | BA-GUI-05 |
| TF-GUI-06 | Prüfen der Umwandlung eines angenommenen Angebots in eine Auftragsbestätigung | Angebot mit Status „angenommen“ vorhanden | Angebot auswählen, "In Auftragsbestätigung umwandeln" ausführen | Auftragsbestätigungsmaske wird geöffnet | BA-GUI-02, |
| TF-GUI-07 | Prüfen der vollständigen Datenübernahme in die Auftragsbestätigung | Angebot mit Status „angenommen“ vorhanden | Angebot auswählen, Umwandlung starten | Kundendaten, Positionen und Preise werden vollständig übernommen | BA-GUI-02, AT-GUI-03 |
| TF-GUI-08 | Prüfen der Markierung leerer Pflichtfelder | Auftragsbestätigungsmaske geöffnet | Liefertermin leer lassen | Pflichtfeld für Liefertermin wird farblich markiert | BA-GUI-02, AT-GUI-03 |
| TF-GUI-09 | Prüfen der Druckvorschau vor dem Speichern einer Rechnung | Abrechnungsreifer Lieferschein vorhanden | Rechnung aus Lieferschein erzeugen | Druckvorschau wird vor dem finalen Speichern angezeigt | BA-GUI-03, AT-GUI-04 |
| TF-GUI-10 | Prüfen der Statusanzeige nach erfolgreicher Rechnungslegung | Rechnung wurde erfolgreich erstellt | Rechnung speichern | Auftragsstatus wird auf „Abgeschlossen“ gesetzt und durch ein grünes Icon dargestellt | BA-GUI-03, AT-GUI-05 |
| TF-GUI-11 | Prüfen der Echtzeit-Filterung bei der Belegsuche | Mehrere Belege sind im System vorhanden | Suchbegriff eingeben | Trefferliste wird sofort gefiltert und aktualisiert | BA-GUI-04, AT-GUI-06 |
| TF-GUI-12 | Prüfen der Anzeige bei einer erfolglosen Suche | Mehrere Belege sind im System vorhanden | Ungültigen Suchbegriff eingeben | Text „Keine Treffer gefunden“ wird angezeigt | BA-GUI-04, AT-GUI-07 |
| TF-GUI-13 | Prüfen der Sichtbarkeit der PDF-Export-Schaltfläche | Beliebiger Beleg wird angezeigt | Beleg öffnen | Schaltfläche „Als PDF exportieren“ ist sichtbar | BA-GUI-05, AT-GUI-08 |
| TF-GUI-14 | Prüfen der PDF-Export-Funktion | Beleg wird angezeigt | Schaltfläche „Als PDF exportieren“ anklicken | PDF wird erstellt und Erfolgsmeldung mit Speicherpfad angezeigt | BA-GUI-05, AT-GUI-08 |
Abdeckungsübersicht
| Anforderung | Abgedeckte Testfälle |
|---|---|
| BA-GUI-01 Angebotserfassung über grafische Maske | TF-GUI-01 bis TF-GUI-05 |
| BA-GUI-02 Auftragsbestätigung über GUI | TF-GUI-06 bis TF-GUI-08 |
| BA-GUI-03 Rechnungslegung und Statusanzeige | TF-GUI-09, TF-GUI-10 |
| BA-GUI-04 Belegsuche mit Echtzeit-Filterung | TF-GUI-11, TF-GUI-12 |
| BA-GUI-05 PDF-Export aus der Belegansicht | TF-GUI-13, TF-GUI-14 |