chore: initial import
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
# Testbericht
|
||||
|
||||
Stand: 24. Juli 2026
|
||||
|
||||
## Ergebnisübersicht
|
||||
|
||||
| Prüfung | Ergebnis | Nachweis |
|
||||
|---|---|---|
|
||||
| Vollständiger Quellen- und Fixture-Audit | bestanden | `docs/SOURCE_ANALYSIS.md`, `build-logs/source-audit.json` |
|
||||
| Vergleich aktueller Plugins gegen v2.0-Bundle | bestanden | nur erzeugte `__pycache__`-Dateien unterscheiden sich; `build-logs/source-diff.log` |
|
||||
| Vorhandene Backend-Plugin-Tests | **11 bestanden, 8 übersprungen** | `build-logs/backend-plugin-tests.log` |
|
||||
| Statische Android-Akzeptanzprüfung | **728 bestanden** | `build-logs/static-acceptance.log` |
|
||||
| Ressourcenprüfung | 8 JSON- und 7 XML-Dateien parsebar | `build-logs/resource-validation.log` |
|
||||
| Kotlin-Parserprüfung ohne Android-Classpath | keine Syntax-/Parserdiagnosen | `build-logs/kotlinc-syntax-summary.txt` |
|
||||
| `./gradlew test` | **nicht ausführbar in dieser Umgebung** | Wrapper-Download scheitert an nicht auflösbarem `services.gradle.org`; `build-logs/gradle-test.log` |
|
||||
| `./gradlew lintDebug` | **nicht ausführbar in dieser Umgebung** | gleicher Infrastrukturfehler; `build-logs/gradle-lintDebug.log` |
|
||||
| `./gradlew assembleDebug` | **nicht ausführbar in dieser Umgebung** | gleicher Infrastrukturfehler; `build-logs/gradle-assembleDebug.log` |
|
||||
| Debug-APK | **nicht erzeugt** | ohne Gradle-Distribution, Android SDK und aufgelöste Abhängigkeiten wäre ein APK nicht verifizierbar |
|
||||
|
||||
## Ausgeführte Backendtests
|
||||
|
||||
Ausgeführt im vollständigen boehmitools-Quellstand:
|
||||
|
||||
```bash
|
||||
python3 -m pytest -q \
|
||||
plugins/trainingsplan/tests \
|
||||
plugins/trainingstracker/tests
|
||||
```
|
||||
|
||||
Ergebnis:
|
||||
|
||||
```text
|
||||
11 passed, 8 skipped in 0.05s
|
||||
```
|
||||
|
||||
Die übersprungenen Tests stammen aus den gelieferten Testsets und wurden nicht von der Android-Implementierung ausgeblendet.
|
||||
|
||||
## Android-Tests im Projekt
|
||||
|
||||
### Unit- und Fixture-Tests
|
||||
|
||||
`FixtureContractTest` prüft unter anderem:
|
||||
|
||||
- beide gelieferten Pläne mit `schema_version = 3` und `contract_version = 2`,
|
||||
- vollständige und entitätsspezifisch eindeutige stabile IDs,
|
||||
- explizite `result_schema`-Definitionen aller Übungen und Progressionsstufen,
|
||||
- Laden beider Planvarianten,
|
||||
- Migration beider alten Sessiondateien ohne Itemverlust,
|
||||
- Priorität manuelle Anpassung → Progressionsstufe → Übung → Fallback,
|
||||
- Vererbung nicht überschriebener result_schema-Felder,
|
||||
- sichere Löschung inkompatibler Messwerte bei Einheit-/Seitenwechsel,
|
||||
- Normalisierung alter Freitextergebnisse zu `result_data` Version 2,
|
||||
- FIFO-Overlay ausstehender Session-Patches nach App-Neustart,
|
||||
- Überschreibmodell für genau eine Wochen- beziehungsweise Gesamtanalyse.
|
||||
|
||||
`ApiContractTest` verwendet MockWebServer und prüft:
|
||||
|
||||
- exakten Session-Patch-Pfad, `PATCH`, Basic-Auth-Header und `expected_revision`,
|
||||
- `202 Accepted` sowie `200` am selben Analyse-Endpunkt,
|
||||
- unveränderte Weitergabe von `401` und `409 revision_conflict`,
|
||||
- dokumentierte Editor-, Publish- und Vorschlagsstatus-Pfade.
|
||||
|
||||
### Repository- und Instrumentationstests
|
||||
|
||||
`RepositoryIntegrationTest` prüft mit Room, WorkManager und MockWebServer:
|
||||
|
||||
- Netzantwort und Room-Cache,
|
||||
- sichtbare `409`-Weitergabe ohne Umwandlung in einen scheinbaren Offline-Erfolg,
|
||||
- Erhalt des HTTP-Status `202` für die dauerhafte Analyse-Sperre.
|
||||
|
||||
`CompactEditorUiTest` setzt eine 360-dp-breite Compose-Oberfläche auf und prüft, dass lange Übungsnamen und strukturierte Ergebnisse innerhalb der verfügbaren Breite bleiben.
|
||||
|
||||
Diese Android-Tests sind vollständig im Projekt vorhanden, konnten in diesem Container aber nicht gestartet werden, weil bereits der Gradle-Wrapper-Download vor der Projektauswertung fehlschlägt.
|
||||
|
||||
## Statische Akzeptanzprüfung
|
||||
|
||||
Ausgeführt:
|
||||
|
||||
```bash
|
||||
python3 tools/static_acceptance.py
|
||||
```
|
||||
|
||||
Ergebnis:
|
||||
|
||||
```text
|
||||
PASS: 728 Prüfungen
|
||||
```
|
||||
|
||||
Die Prüfung deckt Buildparameter, Release-Netzwerksicherheit, Standardserver, verbotene WebView/OpenAI-Verbindungen, Basic Auth, zentrale API-Routen sowie alle gelieferten Plan- und Session-Fixtures ab.
|
||||
|
||||
## Kotlin-Parserprüfung
|
||||
|
||||
Alle Kotlin-Dateien wurden zusätzlich mit dem vorhandenen standalone `kotlinc` eingelesen. Da Android SDK und Maven-/Gradle-Abhängigkeiten fehlen, entstehen erwartungsgemäß nicht auflösbare Android-, Compose-, Hilt-, Retrofit- und Serialization-Symbole. Die separat gefilterte Prüfung meldet jedoch keine Parserfehler wie ungeschlossene Blöcke, illegale Escapes oder unerwartete Tokens.
|
||||
|
||||
Dies ersetzt keinen echten Gradle-Compile-Lauf. Das vollständige Rohprotokoll ist deshalb nur Diagnosematerial und kein Bestehensnachweis.
|
||||
|
||||
## Blocker der geforderten Gradle-Läufe
|
||||
|
||||
Alle drei vorgeschriebenen Befehle wurden separat ausgeführt und protokolliert. Die Laufumgebung enthält:
|
||||
|
||||
- keine installierte Gradle-Distribution,
|
||||
- kein Android SDK, kein `sdkmanager`, kein `adb`,
|
||||
- keinen vorgefüllten Gradle- oder Maven-Cache,
|
||||
- keine DNS-Auflösung für `services.gradle.org` aus Shell-Prozessen.
|
||||
|
||||
Der mitgelieferte Wrapper versucht korrekt Gradle 8.11.1 zu laden und beendet sich mit `UnknownHostException`. Der Fehler tritt vor der Auswertung von `settings.gradle.kts` und damit vor Kompilierung, Tests, Lint oder APK-Erzeugung auf. Details stehen in `build-logs/build-environment.log` und den drei Gradle-Protokollen.
|
||||
|
||||
## Lokal nachzuholende Abnahme
|
||||
|
||||
In einer normalen Android-Entwicklungsumgebung mit JDK 17, Android SDK 35 und Internetzugang:
|
||||
|
||||
```bash
|
||||
./gradlew test
|
||||
./gradlew lintDebug
|
||||
./gradlew assembleDebug
|
||||
```
|
||||
|
||||
Anschließend ist zusätzlich empfehlenswert:
|
||||
|
||||
```bash
|
||||
./gradlew connectedDebugAndroidTest
|
||||
adb install -r app/build/outputs/apk/debug/app-debug.apk
|
||||
```
|
||||
|
||||
Die erwartete APK-Ausgabe ist `app/build/outputs/apk/debug/app-debug.apk`. Bis diese Befehle erfolgreich gelaufen sind, darf das Projekt nicht als vollständig buildverifiziert bezeichnet werden.
|
||||
Reference in New Issue
Block a user