# Testplan

| Feld            | Wert                          |
|-----------------|-------------------------------|
| Projekt         | [Projektname]                 |
| Datum           | [YYYY-MM-DD]                  |
| Version         | [1.0]                         |
| Status          | [Entwurf / Freigegeben]       |
| ASIL            | [QM / A / B / C / D]         |
| Bezug           | SWE-Plan Version [X.Y]       |

---

## 1. Testziele

- Nachweis, dass die Software die spezifizierten Anforderungen erfuellt
- Nachweis der strukturellen Code-Abdeckung gemaess ASIL-Vorgaben
- Nachweis der Robustheit gegenueber Fehlbedienung und Grenzwerten
- Identifikation von Defekten vor der Integration / Auslieferung

## 2. Teststrategie

| Teststufe           | Testziel                                    | Methode          | Automatisierung |
|---------------------|---------------------------------------------|------------------|-----------------|
| Unit Test           | Einzelne Funktionen / Module korrekt        | White-Box        | CI (automatisch)|
| Integrations-Test   | Zusammenspiel der Module                    | Grey-Box         | CI / SiL        |
| System-Test         | Erfuellung der System-Anforderungen         | Black-Box        | SiL / HiL       |
| Regressionstest     | Keine Seiteneffekte durch Aenderungen       | Automatisiert     | CI              |

### Unit Tests

- Framework: [CppUTest / Google Test / Unity+CMock]
- Laufen auf Host-Plattform (x86)
- Jede Anforderung hat mindestens einen zugehoerigen Testfall
- Negative Tests und Grenzwerte sind Pflicht

### Integrationstests

- Pruefen Schnittstellen zwischen Modulen
- Laufen auf Host oder SiL-Umgebung
- Kommunikationsschnittstellen (CAN, SPI, UART) werden per Mock oder Simulator getestet

### System-Tests

- Pruefen gegen System-Anforderungen
- Laufen auf SiL oder HiL
- Testfaelle werden aus System-Requirements abgeleitet

## 3. Coverage-Ziele

| Metrik              | Zielwert       | Messung          |
|---------------------|----------------|------------------|
| Statement Coverage  | >= [X]%        | gcov/lcov        |
| Branch Coverage     | >= [X]%        | gcov/lcov        |
| MC/DC               | >= [X]% (falls anwendbar) | MCDC-Star / kommerziell |

Referenz: ISO 26262 Part 6, Table 9.

| ASIL | Statement | Branch  | MC/DC        |
|------|-----------|---------|--------------|
| QM   | empfohlen | —       | —            |
| A    | Pflicht   | empfohlen | —          |
| B    | Pflicht   | Pflicht | —            |
| C    | Pflicht   | Pflicht | empfohlen    |
| D    | Pflicht   | Pflicht | Pflicht      |

## 4. Testumgebung

| Komponente          | Beschreibung                                       |
|---------------------|----------------------------------------------------|
| Host-Plattform      | [Linux x86_64 / macOS ARM64]                       |
| Cross-Compiler      | [GCC ARM X.Y]                                      |
| Test-Framework      | [CppUTest / Google Test / Unity]                   |
| SiL-Framework       | [Python + pytest, Kommunikation: UART/CAN/TCP]     |
| HiL-System          | [dSPACE Scalexio / vom Kunden gestellt / entfaellt] |
| CI-Runner           | [GitLab Runner, Docker Image: ...]                  |

## 5. Testdaten

- Testdaten werden im Repository unter `tests/data/` versioniert
- Grenzwerte aus Anforderungen ableiten
- Ungueltige Eingaben explizit testen
- Testdaten fuer Regressionen aus Bug-Reports ableiten

## 6. Pass/Fail-Kriterien

### Einzelner Testfall

- **Pass:** Erwartetes Ergebnis stimmt mit tatsaechlichem ueberein
- **Fail:** Abweichung vom erwarteten Ergebnis

### Teststufe gesamt

| Kriterium                              | Bedingung fuer Pass                    |
|----------------------------------------|----------------------------------------|
| Alle Testfaelle ausgefuehrt            | Ja                                     |
| Alle Testfaelle bestanden              | Ja (oder Fails bewertet und genehmigt) |
| Coverage-Ziel erreicht                 | Ja                                     |
| Keine offenen Critical Findings        | Ja                                     |
| Traceability vollstaendig              | Jede Anforderung hat mindestens einen Test |

Fehlgeschlagene Tests, die nicht behoben werden, muessen per Non-Conformity oder Change Request dokumentiert und bewertet werden.

## 7. Traceability

Jeder Testfall muss auf mindestens eine Anforderung rueckfuehrbar sein.

```
Anforderung (GitLab Issue, Label: req::software)
  → Testfall (GitLab Issue, Label: test::unit / test::integration / test::system)
    → Testergebnis (CI-Artefakt / JUnit-XML)
```

Umsetzung:
- Testfall-Issue verlinkt auf Anforderungs-Issue ("relates to" oder "verified by")
- Im Testcode: Kommentar mit Anforderungs-ID (`// Verifies: SWR-042`)
- Traceability-Report wird per Skript aus GitLab API generiert

---

*Aenderungen an diesem Plan werden im GitLab-Wiki versioniert.*
