Testen von Use Cases
Vertragsmanagement
TC 5.1: Contract Synchronisation (Einzeln)
Ziel: Vertrag wird aus Gridware nach ERPNext synchronisiert.
Testschritte:
- Gehe zu becharged Settings → Feld "Gridware Contract ID"
- Gib eine Contract ID ein (z.B. "12345")
- Klicke Button "Fetch Contract by ID"
- Validieren:
- Gridware Contract wurde erstellt (Name: "GWC-......")
- Alle Felder sind gefüllt: contract_id, contract_number, contract_type
- active_from / active_until sind gesetzt
- VAT ist korrekt übertragen
Erfolgskriterium: Contract ist bereit für Ladevorgang-Verarbeitung.
TC 5.2: Contract Customers Sync
Ziel: Kunden-Liste des Contracts wird synchronisiert.
Testschritte:
- Öffne den Contract aus TC 5.1
- Scrolla zu "Contract Customers" Tab
- Validieren:
- Mindestens eine Zeile vorhanden
- customer_id, subject_id, subject_name sind gefüllt
-
gridware_partyLink ist gesetzt (Background Job) -
customerLink ist gesetzt zu ERPNext Customer
Erfolgskriterium: Alle Kunden sind korrekt verlinkt.
TC 5.3: Contract Supplier Sync
Ziel: Lieferant wird korrekt verlinkt.
Testschritte:
- Öffne den Contract aus TC 5.1
- Gehe zu "Supplier Details" Section
- Validieren:
-
gridware_supplier_partyist gesetzt -
supplierLink zeigt zu ERPNext Supplier - Supplier Name ist korrekt
-
Erfolgskriterium: Supplier kann in Lieferantenabrechnung verwendet werden.
TC 5.4: Contract Usage Fetch
Ziel: Ladevorgänge für Contract werden abgerufen.
Testschritte:
- Öffne Contract aus TC 5.1
- Schaue in Links: "Usage" Sektion
- Validieren:
- Mindestens ein Gridware Usage vorhanden
- Links zeigen zur Seite mit allen Usages
- Usages haben gridware_usage_id
Erfolgskriterium: Ladevorgänge sind synchronisiert.
Stammdatenverwaltung
TC 4.1: Gridware Party Synchronisation
Ziel: Stelle sicher, dass Parteien aus Gridware korrekt nach ERPNext synchronisiert werden.
Testschritte:
- Öffne Contract aus TC 5.1
- Wähle entweder einen Customer oder den Supplier
- Öffne die Gridware Party
- Validieren:
- Gridware Party wurde in ERPNext erstellt (Name: "GDW-P-.....")
- display_name ist korrekt (z.B. "Tesla GmbH")
- is_customer = 1 oder is_supplier = 1 gesetzt
- gridware_customer_number / gridware_supplier_number sind gefüllt
Erfolgskriterium: Party-Datensatz ist vollständig mit allen Daten aus Gridware.
TC 4.2: Customer Auto-Erstellung aus Party
Ziel: Customer wird automatisch aus Gridware Party erstellt.
Testschritte:
- Öffne die Gridware Party aus TC 5.1
- Markiere:
is_customer = 1 - Speichere
- Warte auf Background Job (oder triggere manuell:
master_data_from_gridware_party()) - Validieren:
- Ein neuer Customer wurde erstellt
- Customer Name = Gridware Party display_name
-
custom_gridware_partyLink ist gesetzt auf die Party - Kunde kann in Sales Invoice verwendet werden
Erfolgskriterium: Customer ist einsatzbereit ohne manuelle Nacharbeit.
TC 4.3: Contact Auto-Erstellung
Ziel: Kontaktperson wird automatisch aus Party erstellt.
Testschritte:
- Erstelle neue Gridware Party mit
party_kind = "Person" - Fülle:
first_name = "Max",last_name = "Müller",email = "max@example.com" - Speichere
- Validieren:
- Ein Contact wurde erstellt
- Contact Name = "Max Müller"
- Email ist gespeichert
-
custom_gridware_partyist gesetzt
Erfolgskriterium: Contact kann für Customer verwendet werden.
TC 4.4: SEPA Mandate Synchronisation
Ziel: SEPA Mandat wird korrekt synchronisiert.
Testschritte:
- Synchronisiere eine Party mit Payment Methods
- Gehe zur Gridware Party → Tab "Payment Method"
- Validieren:
- Payment Method Row zeigt: payment_type, iban, bic, sepa_mandate_id
-
erpnext_sepa_mandateLink ist gesetzt - ERPNext SEPA Mandate wurde erstellt
- Bank Account ist verlinkt
Erfolgskriterium: SEPA-Daten können in Sales Invoice verwendet werden.
Ladevorgang-Verarbeitung
TC 7.1: Usage Skeleton Creation
Ziel: Gridware Usage wird mit Status "Pending" erstellt.
Testschritte:
- Öffne Gridware Usage List
- Filtere nach:
status = "Pending" - Öffne einen Usage
- Validieren:
- gridware_usage_id ist eindeutig gefüllt
- gridware_contract ist verlinkt
- status = "Pending"
- Detail-Felder sind LEER: start, end, consumption_value_in_kwh, etc.
Erfolgskriterium: Skeleton-Format ist korrekt (nur ID + Contract).
TC 7.2: Usage Detail Fill (Async Job)
Ziel: Background Job füllt Usage-Details auf.
Testschritte:
- Warte 1-2 Minuten nach TC 7.1
- Aktualisiere den Usage (F5)
- Validieren:
- status hat sich zu "Complete" geändert
- start ist gefüllt mit echtem Datetime
- end ist gefüllt
- consumption_value_in_kwh > 0
- usage_price_payment_amount > 0
- rental_object_display_name zeigt Ladesäule
Erfolgskriterium: Alle Daten aus Gridware API sind übernommen.
TC 7.3: Usage Price Details
Ziel: Kostenaufschlüsselung ist korrekt.
Testschritte:
- Öffne einen "Complete" Usage
- Gehe zu "Usage Price Details" Section
- Validieren:
- total_fix_costs_excl_vat + total_energy_costs_excl_vat + ... = Gesamtnetto
- Brutto-Werte sind ca. 19% höher (bei 19% VAT)
- Beispiel: 100 € netto + 19 € VAT = 119 € brutto ✓
Erfolgskriterium: Kostenaddition ist mathematisch korrekt.
TC 7.4: Usage Wh → kWh Conversion
Ziel: Energiewert wird korrekt von Wh zu kWh konvertiert.
Testschritte:
- Öffne einen "Complete" Usage
- Vergleiche: consumption_value_in_wh vs. consumption_value_in_kwh
- Validieren:
- consumption_value_in_kwh = consumption_value_in_wh / 1000
- Beispiel: 45000 Wh = 45 kWh ✓
Erfolgskriterium: Umrechnung ist korrekt.
TC 7.5: Usage Cent → Euro Conversion
Ziel: Preise werden korrekt von Cent zu Euro konvertiert.
Testschritte:
- Öffne einen "Complete" Usage
- Vergleiche: usage_price_payment_amount Wert
- Validieren:
- Wenn API: 12500 Cent → DB: 125.00 € ✓
- Wert ist in korrektem Format (2 Dezimalstellen)
Erfolgskriterium: Währungsumrechnung ist korrekt.
TC 7.6: Failed Usage Retry
Ziel: Fehlgeschlagene Usages werden täglich wiederholt.
Testschritte:
- Erstelle einen simulierten Failed Usage (manuell: status = "Failed")
- Warte auf Scheduler (täglich)
- Oder: Triggere manuell
retry_failed_usage_completion() - Validieren:
- Status hat sich zu "Complete" geändert
- Error Log zeigt keine Fehler mehr
Erfolgskriterium: Automatische Wiederholung funktioniert.
Kundenabrechnung
TC 8.1: Auto-Fetch beim Öffnen
Ziel: Customer Usage Data holt automatisch Usages ab.
Testschritte:
- Erstelle neue Customer Usage Data
- Setze: customer = "Customer A", billing_period = "01/2026"
- Speichere
- Validieren:
- Ein Benachrichtigungs-Popup erscheint: "Auto-fetched X usage(s)"
- usage_details Tabelle ist NICHT leer
- Mindestens eine Zeile pro verfügbarem Usage
Erfolgskriterium: Auto-Fetch wurde triggert und hat Daten gefunden.
TC 8.2: Aggregation in usage_details
Ziel: Ladevorgänge werden korrekt in Child Table aggregiert.
Testschritte:
- Öffne die Customer Usage Data aus TC 8.1
- Schaue zu "Usage Details"
- Validieren:
- Jede Zeile zeigt einen Usage
- gridware_usage Link ist gesetzt
- consumption_kwh ist > 0
- price_excl_vat ist > 0
- contract_type ist nicht leer
Erfolgskriterium: Alle Usages sind aggregiert.
TC 8.3: Item-Mapping
Ziel: Item Code wird korrekt aus Contract Type + VAT gemappt.
Testschritte:
- Öffne Customer Usage Data aus TC 8.1
- Schaue Spalte "item_code" in usage_details
- Validieren:
- Jede Zeile hat einen item_code (z.B. "CHARGING-POSTPAID-19")
- item_code existiert in ERPNext Item Master
- Mapping ist logisch: USAGE_POSTPAID + 19% = CHARGING-POSTPAID-19
Erfolgskriterium: Item-Mapping wurde korrekt durchgeführt.
TC 8.4: Totals Calculation
Ziel: Gesamtzahlen werden korrekt berechnet.
Testschritte:
- Öffne Customer Usage Data aus TC 8.1
- Gehe zu "Totals" Section
- Validieren (Beispiel mit 2 Usages):
- total_consumption = 45 + 30 = 75 kWh
- total_charging_sessions = 2
- total_price_excl_vat = SUM(price_excl_vat) von allen Details
- total_price_incl_vat = total_price_excl_vat * 1.19 (bei 19% VAT)
Erfolgskriterium: Alle Summen sind mathematisch korrekt.
TC 8.5: Price Details Breakdown
Ziel: Kostenaufschlüsselung wird korrekt summiert.
Testschritte:
- Öffne Customer Usage Data aus TC 8.1
- Gehe zu "Price Details" Section
- Validieren:
- total_fix_costs_excl_vat = SUM aller Usage Fix Costs
- total_energy_costs_excl_vat = SUM aller Usage Energy Costs
- Summe aller Kosten = total_price_excl_vat
Erfolgskriterium: Kostenaufschlüsselung ist vollständig und korrekt.
TC 8.6: Duplicate Prevention
Ziel: Ein Usage kann nicht zweimal aggregiert werden.
Testschritte:
- Erstelle eine zweite Customer Usage Data für denselben Customer/Period
- Validieren:
- Auto-Fetch findet KEINE Usages (weil bereits aggregiert)
- Benachrichtigung: "No usages found"
Erfolgskriterium: Duplikate sind ausgeschlossen.
TC 8.7: Status Transition
Ziel: Status wird automatisch abgeleitet.
Testschritte:
- Öffne Customer Usage Data aus TC 8.1
- Status sollte "Uninvoiced" sein
- Klicke "Create Sales Invoice"
- Speichere Invoice als Draft
- Validieren:
- Status ändert sich zu "Draft Invoice"
- Submit Invoice
- Validieren:
- Status ändert sich zu "Invoiced"
Erfolgskriterium: Status wird automatisch synchronisiert.
TC 8.8: Multiple Contracts Aggregation
Ziel: Mehrere Verträge werden korrekt aggregiert.
Voraussetzung: Customer hat 2 Contracts für Januar 2026
- Contract 1: USAGE_POSTPAID, 19% VAT
- Contract 2: AUTHORIZATION, 0% VAT
Testschritte:
- Erstelle Customer Usage Data für diesen Customer
- Validieren:
- usage_details hat mindestens 2 unterschiedliche contract_type Zeilen
- Zeilen sind nach Contract Type gruppiert
Erfolgskriterium: Mehrere Verträge sind gemeinsam abgerechnet.
TC 8.9: Sales Invoice Creation
Ziel: Sales Invoice wird aus Customer Usage Data erstellt.
Testschritte:
- Öffne "Uninvoiced" Customer Usage Data
- Klicke Button "Create Sales Invoice"
- Validieren:
- Sales Invoice wird geöffnet (Draft Status)
- customer ist korrekt gesetzt
- Items sind gruppiert nach Contract Type + VAT
- Summe = total_price_excl_vat aus CUD
- custom_customer_usage_data Link ist gesetzt
Erfolgskriterium: Invoice ist korrekt vorbereitet und bereit zum Submit.
TC 8.10: Pending Usage Blockade
Ziel: Customer Usage Data kann nicht erstellt werden mit Pending Usages.
Testschritte:
- Erstelle einen Usage mit status = "Pending"
- Versuche Customer Usage Data zu erstellen
- Validieren:
- Error-Nachricht: "Found X pending Gridware Usage record(s)"
- Customer Usage Data wird NICHT erstellt
Erfolgskriterium: Pending Usages werden blockiert.
Integrations-Tests (End-to-End)
E2E TC 1: Vollständiger Flow (Single Charging Session)
Szenario: Ein Ladevorgang eines Kunden in Januar 2026
Testschritte:
-
Party Sync: Synchronisiere Party (Kunde + Lieferant)
- Party vorhanden
-
Contract Sync: Synchronisiere Vertrag
- Contract vorhanden mit Kunden + Lieferant
-
Usage Sync: Warte auf Usage (Status: Pending → Complete)
- Usage vorhanden mit allen Details
-
Auto-Fetch: Erstelle Customer Usage Data
- Usage wurde aggregiert
-
Totals: Prüfe Gesamtzahlen
- total_consumption = 45 kWh
- total_price_excl_vat = 105.04 €
-
Invoice: Erstelle Sales Invoice
- Invoice zeigt 45 kWh
- Subtotal = 105.04 €
- Total (mit 19% VAT) = 125.00 €
Erfolgskriterium: Vollständiger Flow ohne Fehler.
E2E TC 2: Mehrere Ladevorgänge (Monthly Aggregation)
Szenario: 100 Ladevorgänge eines Kunden in Januar 2026
Testschritte:
- Synchronisiere alle 100 Usages
- Erstelle Customer Usage Data für Januar
- Validieren:
- Alle 100 Usages sind aggregiert
- total_charging_sessions = 100
- total_consumption = 1.234 kWh (Beispiel)
- Keine Duplikate
- Erstelle Sales Invoice
- Validieren:
- Invoice zeigt alle Kosten
- Gruppiert nach Contract Type + VAT (z.B. 2-3 Zeilen)
Erfolgskriterium: Massenaggregation funktioniert.
E2E TC 3: Multiple Contracts Same Customer
Szenario: Kunde hat 3 Verträge, Ladevorgänge pro Vertrag
Testschritte:
- Synchronisiere 3 Contracts für denselben Kunden
- Synchronisiere Usages pro Contract
- Erstelle Customer Usage Data
- Validieren:
- Alle Contracts sind aggregiert
- Customer Usage Detail hat Zeilen pro Contract Type
- Totals addieren sich korrekt
- Erstelle Sales Invoice
- Validieren:
- Invoice hat separate Zeilen pro Contract Type
- Gesamtbetrag ist korrekt
Erfolgskriterium: Multi-Contract-Aggregation funktioniert.
E2E TC 4: USAGE_ADHOC Handling
Szenario: Kunde hat auch USAGE_ADHOC Ladevorgänge
Testschritte:
- Synchronisiere Contract mit type = "USAGE_ADHOC"
- Synchronisiere Usages
- Erstelle Customer Usage Data
- Validieren:
- USAGE_ADHOC Usages sind NICHT aggregiert
- Total enthält NICHT die USAGE_ADHOC Kosten
- Erstelle Sales Invoice
- Validieren:
- USAGE_ADHOC Zeilen sind NICHT in Invoice
Erfolgskriterium: USAGE_ADHOC wird korrekt ignoriert.
E2E TC 5: Fehlerbehandlung & Recovery
Szenario: API ist kurzzeitig nicht erreichbar
Testschritte:
- Trenne API-Verbindung
- Starte Usage Sync
- Validieren:
- Usage Sync schlägt fehl
- Status = "Failed"
- Error Log zeigt API-Fehler
- Stelle API-Verbindung wieder her
- Warte auf Scheduler oder trigger
retry_failed_usage_completion() - Validieren:
- Status ändert sich zu "Complete"
- Usage ist jetzt verfügbar
Erfolgskriterium: Error Recovery funktioniert.
E2E TC 6: SEPA Payment Integration
Szenario: Rechnung wird via SEPA bezahlt
Testschritte:
- Erstelle und submit Sales Invoice (aus TC 8.9)
- Validieren:
- custom_sepa_mandate_reference ist gesetzt vom Customer
- Erstelle Payment Entry
- Validieren:
- SEPA-Konto ist vorgewählt
- Mandat ist korrekt verlinkt
- Submit Payment Entry
- Validieren:
- Invoice ist bezahlt
- Status-Update
Erfolgskriterium: SEPA-Integration funktioniert end-to-end.
Performance-Tests
PT 1: Bulk Sync (1.000+ Usages)
Ziel: System verarbeitet große Mengen.
Testschritte:
- Synchronisiere Contract mit 1.000+ Usages
- Validieren:
- Sync fertig in <5 Minuten
- Keine Datenverluste
- Keine Duplikate
Erfolgskriterium: Performance ist akzeptabel.
PT 2: Aggregation Performance (100+ Sessions pro Customer)
Ziel: Customer Usage Data verarbeitet große Datenmengen.
Testschritte:
- Erstelle Customer Usage Data mit 100+ Usages
- Validieren:
- Aggregation fertig in <10 Sekunden
- Totals korrekt
- UI responsive
Erfolgskriterium: UI bleibt responsive.
Data Quality Tests
DQ 1: Datenintegrität
Testschritte:
- Exportiere Customer Usage Data
- Vergleiche mit Gridware Export
- Validieren:
- Alle Usages vorhanden
- Keine fehlenden oder doppelten Daten
- Preise stimmen überein
DQ 2: Zahlen-Validierung
Testschritte:
- Öffne mehrere Sales Invoices
- Validieren:
- Jede Invoice = genau 1 Customer Usage Data
- Summen stimmen überein
- Keine mathematischen Fehler
Checkliste für Kundenabnahme
- Alle TC 4.x (Stammdaten) bestanden
- Alle TC 5.x (Vertragsmanagement) bestanden
- Alle TC 7.x (Ladevorgang-Verarbeitung) bestanden
- Alle TC 8.x (Kundenabrechnung) bestanden
- Alle E2E TCs bestanden
- Alle PT TCs bestanden
- Alle DQ TCs bestanden
- Keine kritischen Error-Logs
- Performance-Anforderungen erfüllt
- Go-Live freigegebe