1
0
Fork 0
mirror of https://github.com/s-frick/effigenix.git synced 2026-03-28 08:29:36 +01:00
effigenix/loadtest
Sebastian Frick a8bbe3a951 fix(inventory): Instant.MIN/MAX, performed_at-Index, batchReference-Naming und -Validierung, Lasttest-Zeiträume
- Instant.MIN/MAX durch separate Repository-Methoden ersetzt (findAllByPerformedAtAfter/Before)
- DB-Index auf performed_at für Zeitraum-Abfragen
- Naming-Konsistenz: findAllByBatchId → findAllByBatchReference im Domain-Repository
- batchReference-Validierung (Blank-Check) mit InvalidBatchReference-Error
- Lasttest: variierende Zeiträume (7–90 Tage) statt statischem 10-Jahres-Fenster
2026-02-25 08:51:25 +01:00
..
src/test fix(inventory): Instant.MIN/MAX, performed_at-Index, batchReference-Naming und -Validierung, Lasttest-Zeiträume 2026-02-25 08:51:25 +01:00
pom.xml feat(loadtest): Gatling-Lasttests mit ~2500 Requests für komprimiertes Jahres-Volumen 2026-02-24 21:53:25 +01:00
README.md feat(loadtest): Gatling-Lasttests mit ~2500 Requests für komprimiertes Jahres-Volumen 2026-02-24 21:53:25 +01:00

Lasttests (Gatling)

Last- und Performance-Tests fuer Effigenix ERP auf Basis von Gatling.

Voraussetzungen

  • Java 21
  • Maven
  • Docker oder Podman (fuer Testcontainers/PostgreSQL)
  • Backend muss vorher gebaut sein (mvn install im Root oder backend/)

Backend bauen

Das Loadtest-Modul bindet das Backend als Dependency ein und startet es embedded. Daher muss das Backend-Artefakt im lokalen Maven-Repository vorhanden sein:

cd backend
mvn clean install -DskipTests

Lasttests starten

cd loadtest
mvn gatling:test

Das startet automatisch:

  1. PostgreSQL via Testcontainers (Docker/Podman)
  2. Spring Boot embedded mit Liquibase-Migrationen
  3. Testdaten-Seeding (120 Artikel, 30 Lieferanten, 50 Kunden, 30 Rezepte, ~1500 Chargen, 100 Produktionsauftraege)
  4. Gatling-Simulation mit ~2500 Requests

Lastprofil

Szenario User Repeat ~Requests
Stammdaten CRUD 15 15x ~240
Produktions-Workflow 30 1x (Chain) ~270
Lagerverwaltung 15 15x ~240
Produktion Read-Only 50 15x ~800
Stammdaten Read-Only 50 15x ~800
Gesamt ~2350

Ergebnisse

Nach dem Lauf liegt der HTML-Report unter:

loadtest/target/gatling/<simulation-name>/index.html

Assertions

  • p95 < 500ms (global)
  • p99 < 1000ms (global)
  • Fehlerrate < 5%
  • Einzeldatensatz-Reads: mean < 20ms
  • Listen (wenig Daten): mean < 35ms
  • Listen (viel Daten): mean < 75ms
  • Write-Requests: mean < 50ms

Konfiguration

  • src/test/resources/gatling.conf - Gatling-Einstellungen (Charting, HTTP-Cache, Writer)
  • src/test/resources/logback-test.xml - Log-Level waehrend der Tests

Aufbau

loadtest/
  src/test/java/de/effigenix/loadtest/
    infrastructure/
      LoadTestInfrastructure.java   # Startet PostgreSQL + Spring Boot
      LoadTestDataSeeder.java       # Erzeugt realistische Testdaten via REST-API
    scenario/
      AuthenticationScenario.java   # Login-Chain
      MasterDataScenario.java       # Artikel, Lieferanten, Kunden
      ProductionScenario.java       # Rezepte, Chargen, Produktionsauftraege
      InventoryScenario.java        # Lagerorte, Bestaende
    simulation/
      FullWorkloadSimulation.java   # Haupt-Simulation (kombiniert alle Szenarien)
    util/
      JsonBodyBuilder.java          # JSON-Request-Body-Erzeugung