Add unit_tests/README.md

This commit is contained in:
Mika 2025-12-16 11:04:00 +00:00
parent 76e6a9bbc4
commit b9db7732e3

229
unit_tests/README.md Normal file
View file

@ -0,0 +1,229 @@
# Unit-Test-Anforderungen für EM-Summary-Metriken in trace_agg.py
## Purpose
Validierung und Absicherung der neuen EM-Summary-Felder im trace_agg.py-Skript.
**Problemstellung:** Die Integration der drei neuen EM-Summary-Metriken (peak_amplitude, median_bandpower, crosscorr_with_clockevents) benötigt stabile Unit-Tests zur Gewährleistung funktionaler Korrektheit und numerischer Konsistenz.
**Ziele:**
- Sicherstellen korrekter Berechnung und Aggregation der EM-Metriken.
- Überwachung der Integrität und Stabilität der CI bei aktivierten EM-Summaries.
- Reduktion von Fehlinterpretationen durch fehlerhafte Messwerte oder Parserabweichungen.
## Kontext & Hintergrund
Aggregierte EM-Trace-Summaries pro CI-Run.
**Gruppierung:**
- CI-Jobs
- Testläufe
- Nightly-Runs
**Trace-Metadaten / zusätzliche Tags:**
- clocksource_switch_offset
- c_state_distribution
- board_id
- measurement_timestamp
**Domänenkontext:**
- HF-Messung in Embedded-Systemen
- Anomalieerkennung im CI-Prozess
- Fehlertolerante Metrikaggregation
**Outlier-Definition:**
- Methode: statistisch, basierend auf Bootstrap-Sampling der EM-Features
- Beschreibung: Outlier = Werte oberhalb 97,5. Perzentil im Bootstrap der peak_amplitude über Runs.
- Metrik: peak_amplitude
**Motivation:**
- Früherkennung von Hardware-Fehlern über hochfrequente Signale.
- Reduktion von Mess-Overhead durch Summaries statt Rohtraces.
- Beibehaltung reproduzierbarer Metriken für Regression-Detection.
## Methode / Spezifikation
**Übersicht:**
- trace_agg.py berechnet drei EM-Summary-Metriken pro Job.
- Ein Smoke-Test (N=200) lieferte stabile Werte ±12 % Laufzeitkosten.
- Unit-Tests prüfen Konsistenz der Aggregation, Grenzwerte und Schema-Kompatibilität.
**Algorithmen / Verfahren:**
- Berechnung median_bandpower über FFT auf verdichteten Sub-Traces.
- peak_amplitude als Maximalwert der Feldstärke in Zeitdomäne.
- crosscorr_with_clockevents über normierte Kreuzkorrelation.
### Bootstrap-Übersicht
Resampling der EM-Summary-Metriken über CI-Runs zur Stabilitätsschätzung.
**Zielgrößen:**
- Varianz
- Konfidenzintervall der Mittelwerte
- Outlier-Rate
### Resampling-Setup
- Nightly-Run
- Branch-Build
**Stichprobeneinheit:** CI-Lauf (1 Durchgang)
**Resampling-Schema:**
- Bootstrap mit 1000 Iterationen
**Konfidenzintervalle:**
- Niveau: 0.95
- Typ: percentile-based
- Ableitung: über Bootstrap-Distribution
### Abgeleitete Effektgrößen
**Risk Difference (Differenz der Raten):**
- Definition: Differenz der Outlier-Anteile zwischen Spacer- und Reference-Jobs.
- Bootstrap: Resampling der Jobgruppen mit Rekombination
**Risk Ratio:**
- Definition: Quotient der Outlier-Wahrscheinlichkeiten zweier Gruppen.
- Bootstrap: Log-Transformation des Verhältnisses zur CI-Schätzung.
### C-State-Kontrolle
**Ziel:** Minimierung systematischer HF-Abweichungen durch CPU-Zustandsvariation.
**Vorgehen:**
- C-State-Logging pro Run aktivieren.
- Stratifizierte Resampling-Auswertung zur Isolierung der C-State-Effekte.
## Input / Output
### Input-Anforderungen
**Hardware:**
- HF-taugliche Messsonde
- geerdeter Spacer
- Embedded-Board mit Clocktrace-Signal
**Software:**
- trace_agg.py >= 2.3
- Python >= 3.10
- pytest >= 7.0
**Konfiguration:**
- EM-Summary-Collection = enabled
- Schema-Version = v1
### Erwartete Rohdaten
**Felder pro Run:**
- run_id
- timestamp
- peak_amplitude
- median_bandpower
- crosscorr_with_clockevents
**Formatbeispiele:**
- 1234, 2024-05-20T12:03, 0.0021, 0.018, 0.63
**Trace-Daten:**
- Format: kompakte JSON-Summary pro Run
- Hinweis: Keine Volltraces in CI; Rohdaten nur On-Demand.
### Analyse-Ausgaben
**Pro Gruppe / pro Governor:**
- Mittelwert
- Varianz
- Outlier-Anteil
- CI-Intervall
**Vergleichsausgaben:**
- mit Spacer vs ohne Spacer
- Δ: -60 % peak_amplitude
- CI(Δ): [58%;63%]
- RR: 0.38
- CI(RR): [0.34;0.42]
- Tests: p<0.01
- C-State-Korrelation: r≈0.5
- Trace-Muster: HF-Absenkung stabil bei 0.5 mm Spacer
## Workflow / Nutzung
**Analyse-Workflow:**
- Smoke-Test in CI starten (N=200).
- trace_agg.py-Output prüfen.
- Unit-Tests mit pytest ausführen.
- Bootstrap-Auswertung über summary.csv fahren.
- Bericht erstellen (Metriken + CIs).
### Trace-Template-Anforderungen
**Ziel:** Nachverfolgbarkeit der EM-Zusammenfassung und Schema-Gültigkeit pro Commit.
**Erforderliche Tags & Metadaten:**
- schema_version
- run_id
- board_id
- clocksource_offset
- measurement_env
**trace-cmd-Setup:**
- trace-cmd record --event em_summary_collect
- sampling_rate = 1/50 runs
- Speicherung ausschließlich von Summary-Feldern
## Interpretation & erwartete Ergebnisse
**Kernbefunde:**
- EM-Summaries zeigen starke Korrelation zu HF-Outliers.
- Spacer-Effekt klar detektierbar über peak_amplitude.
- Kein Einfluss auf clocksource_offset beobachtet.
**Implikationen für Experimente:**
- EM-Features als standardisierte Diagnose-Metrik in CI-Frameworks.
- Einführung versionierter EM-Schema-Definitionen.
**Planungsziel:**
- Ziel: Langfristige Integration der EM-Signaldaten zur automatisierten Fehlerdiagnose.
- Vorgehen:
- Unit-Tests als Stabilitätsanker des Messpfads.
- Bootstrap-CI zur statistischen Vergleichbarkeit der Hardwareläufe.
## Limitationen & Fallstricke
**Datenbezogene Limitationen:**
- Summaries können lokale Peaks glätten und Fehlindikationen liefern.
- HF-Messrauschen kann Outlier-Erkennung beeinflussen.
**Bootstrap-spezifische Limitationen:**
- Nichtstationäre Effekte zwischen Nightly-Runs wirken verzerrend.
- Kleine N pro Gruppe kann CI-Unsicherheit erhöhen.
**Kausalität & Generalisierbarkeit:**
- Spacer-Effekt nicht zwingend auf andere Boards übertragbar.
- Fehlende Isolation anderer EM-Störquellen.
**Praktische Fallstricke:**
- 12% Laufzeitmehrbelastung in CI zu berücksichtigen.
- Parserrobustheit bei inkompletten Fields testen.
- Schema-Version strikt prüfen, um Inkompatibilitäten zu vermeiden.
## Nächste Schritte & Erweiterungen
**Geplante Experimente:**
- Kernel-Trace in isolierter VM mit stratifizierten C-States.
- Vergleich verschiedener EM-Abschirmungen.
**Analyseziele:**
- Quantifizierung der HF-Störkorrelation mit Systemlatenzen.
- Ableitung neuer Alert-Thresholds für Regressionsprüfungen.
**Regression & Modellierung:**
- Aufbau eines Regressionsmodells über EM- und Timing-Metriken.
- Integration in CI-Pipeline mit adaptiver Schwellenlogik.
**Community-Beiträge:**
- Review der verpflichtenden EM-Schemafelder.
- Vorschläge zu Retentionsdauer On-Demand-Rohtraces.
- Standardisierung von Alert-Thresholds im PR-Template.