Reliability Engineering WS25/26 - Modultest: Unterschied zwischen den Versionen
Die Seite wurde neu angelegt: „{|class="wikitable" |- | '''Dozent:''' || Prof. Dr.-Ing. Schneider |- | '''Modul''' || Mechatronik, Systementwicklung (Wahlpflichtprofil „Systems Design Engineering“), Wintersemester |- | '''Modulbezeichnung:''' || MTR-B-2-7.09 |- | '''Modulverantwortung:''' || Mirek Göbel |- | '''Lehrveranstaltung:''' || Reliability Engineering |- | '''Zeit:''' || Donnerstag, 08:15 - 09:45 Uhr, uKW |- | '''Ort:''' || Labor L3.3-E01-1…“ |
|||
| (2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 17: | Zeile 17: | ||
| '''SVN-URL:''' || [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Reliability_Engineering/WS25/ <code>https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Reliability_Engineering/WS25/</code>] | | '''SVN-URL:''' || [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Reliability_Engineering/WS25/ <code>https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Reliability_Engineering/WS25/</code>] | ||
|} | |} | ||
= Einleitung = | |||
Modultests bilden die unterste Ebene des Testprozesses und dienen dazu, einzelne Softwareeinheiten frühzeitig und isoliert auf ihre korrekte Funktion zu überprüfen. Ziel ist es, Fehler bereits in einem sehr frühen Entwicklungsstadium zu erkennen, um spätere Integrationsprobleme zu vermeiden und die Gesamtqualität des Systems nachhaltig zu erhöhen. Dabei wird jedes Modul unabhängig von anderen Komponenten getestet, wobei sowohl funktionale Anforderungen als auch typische Fehlerszenarien betrachtet werden. Durch klar definierte Testfälle, reproduzierbare Testumgebungen und objektive Bewertungskriterien stellen Modultests sicher, dass die implementierten Funktionen robust, zuverlässig und spezifikationskonform sind. | |||
= Aufgabe 3 - Modultest = | = MATLAB<sup>®</sup> Modultest = | ||
== Aufgabe 3 - Modultest == | |||
# Studieren Sie das Video [https://youtu.be/oRrnhgFkFTg?si=xRjYo0bbWFMqVbka Erste Schritte mit dem MATLAB Unit Test Framework]. | # Studieren Sie das Video [https://youtu.be/oRrnhgFkFTg?si=xRjYo0bbWFMqVbka Erste Schritte mit dem MATLAB Unit Test Framework]. | ||
# Weitere Informationen finden Sie im Artikel [https://de.mathworks.com/help/matlab/matlab_prog/ways-to-write-unit-tests.html Ways to Write Unit Tests]. | # Weitere Informationen finden Sie im Artikel [https://de.mathworks.com/help/matlab/matlab_prog/ways-to-write-unit-tests.html Ways to Write Unit Tests]. | ||
| Zeile 38: | Zeile 41: | ||
|} | |} | ||
= Simulink Modultest = | |||
== 1. Simulink Test (offizielle MATLAB<sup>®</sup>/Simulink-Erweiterung)== | |||
[[Reliability_Engineering_WS25/26_-_Simulink Test|<code>Simulink Test</code>]] ist das bestes und umfangreichste Werkzeug für systematische Modultests. | |||
Funktionen: | |||
* Test Manager für verwaltete Testsuiten | |||
* Unit-Tests für einzelne Subsysteme oder Modelle | |||
* Signal- und Parameter-Stubbing | |||
* Baseline-Tests (Soll-Ist-Vergleich) | |||
* Simulation-Based Tests | |||
* Equivalence Testing (z.&thinspB. Modell vs. generierter Code) | |||
* Coverage-Messung | |||
'''Vorteile:''' | |||
* Voll integriert | |||
* GUI | |||
* Automation (MATLAB scripts) | |||
Link zum MATLAB<sup>®</sup> Artikel: | |||
[https://de.mathworks.com/help/sltest/index.html Simulink Test] | |||
=== PDF-Dokumentation für Simulink Test === | |||
*[https://de.mathworks.com/help/pdf_doc/sltest/sltest_gs.pdf Simulink Test Getting Started Guide] | |||
* [https://de.mathworks.com/help/pdf_doc/sltest/sltest_ug.pdf Simulink Test User’s Guide] | |||
* [https://de.mathworks.com/help/pdf_doc/sltest/sltest_ref.pdf Simulink Test Reference] | |||
* [https://de.mathworks.com/help/pdf_doc/sltest/rn.pdf Simulink Test Release Notes] | |||
== 2. Simulink Subsystem-In-The-Loop (SIL/Model-in-the-Loop) == | |||
=== Model-in-the-Loop (MIL) === | |||
Du testest das Subsystem direkt im Modell. | |||
Gut für funktionale Tests ohne Codegeneration. | |||
=== Software-in-the-Loop (SIL) === | |||
Test gegen generierten C-Code zur Prüfung von: | |||
* Algorithmusgleichheit | |||
* Rechenarteffekten | |||
* Überläufen | |||
* Fixed-Point-Fehlern | |||
=== Processor-in-the-Loop (PIL) === | |||
Test direkt auf deinem Zielprozessor/Mikrocontroller. | |||
'''Vorteile:''' Testet den Modell-/Code-Pfad realistisch. | |||
'''Nachteile:''' Etwas Setup-Aufwand. | |||
== 3. Manuelle Modultests im Simulink-Modell == | |||
Möglichkeiten: | |||
* Test-Harness bauen (virtuelle Umgebung, die dein Subsystem isoliert) | |||
* Input-Signals aus MATLAB erstellen (z. B. timeseries, Signal Builder) | |||
* Assertions und Verify-Blöcke nutzen | |||
* Scope-Aufzeichnungen automatisiert vergleichen (MATLAB Skript) | |||
Tools in Simulink dafür: | |||
* Simulink Test Harness (auch ohne Lizenz nutzbar!) | |||
* Verification Subsystem (Assertions) | |||
* MATLAB Test Framework (xUnit-ähnlich) | |||
== 4. MATLAB-basierte Tests (xUnit-Framework) == | |||
Sie können mit MATLAB-Klassen (matlab.unittest.TestCase) automatisierte Tests programmieren. | |||
Beispiel: | |||
* Modell per Script laden | |||
* Parameter setzen | |||
* Simulation starten | |||
* Outputs prüfen | |||
'''Vorteil:''' Voll automatisierbar | |||
CI/CD einbindbar (GitLab/Jenkins/GitHub Actions) | |||
== 5. Requirements-basiertes Testen== | |||
* Anforderungen mit Testfällen verknüpfen | |||
* Coverage nach Anforderung auswerten | |||
* Testbewertungen automatisch generieren | |||
* Standard in sicherheitskritischen Bereichen (ISO 26262, DO-178C). | |||
== 6. Code-basierte Unit Tests (für generierten C-Code) == | |||
Nach Codegenerierung über Embedded Coder kannst du klassische Unit-Test-Frameworks verwenden: | |||
* Ceedling (C Unit Tests) | |||
* GoogleTest | |||
* Tessy (Industrie-Tool) | |||
* VectorCAST | |||
Dann über SIL/PIL wieder ans Modell anbinden. | |||
= Nützliche Artikel = | |||
* [https://de.mathworks.com/help/sltest/gs/create-a-test-harness.html MATLAB<sup>®</sup>: Erstellen eines Testrahmens] | |||
---- | ---- | ||
→ zurück zum Hauptartikel: [[Reliability_Engineering_WS25/26|Reliability_Engineering_WS25/26]]<br> | → zurück zum Hauptartikel: [[Reliability_Engineering_WS25/26|Reliability_Engineering_WS25/26]]<br> | ||
Aktuelle Version vom 3. Dezember 2025, 13:04 Uhr
| Dozent: | Prof. Dr.-Ing. Schneider |
| Modul | Mechatronik, Systementwicklung (Wahlpflichtprofil „Systems Design Engineering“), Wintersemester |
| Modulbezeichnung: | MTR-B-2-7.09 |
| Modulverantwortung: | Mirek Göbel |
| Lehrveranstaltung: | Reliability Engineering |
| Zeit: | Donnerstag, 08:15 - 09:45 Uhr, uKW |
| Ort: | Labor L3.3-E01-180 (Autonome Systeme) |
| SVN-URL: | https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Reliability_Engineering/WS25/
|
Einleitung
Modultests bilden die unterste Ebene des Testprozesses und dienen dazu, einzelne Softwareeinheiten frühzeitig und isoliert auf ihre korrekte Funktion zu überprüfen. Ziel ist es, Fehler bereits in einem sehr frühen Entwicklungsstadium zu erkennen, um spätere Integrationsprobleme zu vermeiden und die Gesamtqualität des Systems nachhaltig zu erhöhen. Dabei wird jedes Modul unabhängig von anderen Komponenten getestet, wobei sowohl funktionale Anforderungen als auch typische Fehlerszenarien betrachtet werden. Durch klar definierte Testfälle, reproduzierbare Testumgebungen und objektive Bewertungskriterien stellen Modultests sicher, dass die implementierten Funktionen robust, zuverlässig und spezifikationskonform sind.
MATLAB® Modultest
Aufgabe 3 - Modultest
- Studieren Sie das Video Erste Schritte mit dem MATLAB Unit Test Framework.
- Weitere Informationen finden Sie im Artikel Ways to Write Unit Tests.
- Besuchen Sie den Online-Kurs Unit Testing
- Lassen Sie sich vom Copilot helfen einen Test zu generieren.
MATLAB Test features
- Generate Test with Copilot
| ID des Testfalls | Testfallname | Ersteller | Datum | ID der Anforderung | ID aus der Komponenntenspezifikation | Ausgangszustand | Aktion(en) | Erwartetes Ergebnis | Ergebnis | Bewertung | Test durchgeführt von | Test durchgeführt am | Bemerkung |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 01 | Stationären Endwert und damit den Verstärkungsfaktor prüfen | Prof. Schneider | 22.10.25 | 01 | 05 | PT1-Integratoren = 0, Eingang = 0 | Eingangssprung von 0 auf 1 bei t=0s | Stat. Endwert = 1 | xa(t=50s) = 1.4 | n.i.O. | Mustermann | 22.10.25 | Kp überprüfen |
| 02 | Beispiel | Beispiel | Beispiel | Beispiel | Beispiel | Beispiel | Beispiel | Beispiel | Beispiel | Beispiel | Beispiel | Beispiel | Beispiel |
| 03 | Beispiel | Beispiel | Beispiel | Beispiel | Beispiel | Beispiel | Beispiel | Beispiel | Beispiel | Beispiel | Beispiel | Beispiel | Beispiel |
Simulink Modultest
1. Simulink Test (offizielle MATLAB®/Simulink-Erweiterung)
Simulink Test ist das bestes und umfangreichste Werkzeug für systematische Modultests.
Funktionen:
- Test Manager für verwaltete Testsuiten
- Unit-Tests für einzelne Subsysteme oder Modelle
- Signal- und Parameter-Stubbing
- Baseline-Tests (Soll-Ist-Vergleich)
- Simulation-Based Tests
- Equivalence Testing (z.&thinspB. Modell vs. generierter Code)
- Coverage-Messung
Vorteile:
- Voll integriert
- GUI
- Automation (MATLAB scripts)
Link zum MATLAB® Artikel: Simulink Test
PDF-Dokumentation für Simulink Test
- Simulink Test Getting Started Guide
- Simulink Test User’s Guide
- Simulink Test Reference
- Simulink Test Release Notes
2. Simulink Subsystem-In-The-Loop (SIL/Model-in-the-Loop)
Model-in-the-Loop (MIL)
Du testest das Subsystem direkt im Modell. Gut für funktionale Tests ohne Codegeneration.
Software-in-the-Loop (SIL)
Test gegen generierten C-Code zur Prüfung von:
- Algorithmusgleichheit
- Rechenarteffekten
- Überläufen
- Fixed-Point-Fehlern
Processor-in-the-Loop (PIL)
Test direkt auf deinem Zielprozessor/Mikrocontroller.
Vorteile: Testet den Modell-/Code-Pfad realistisch. Nachteile: Etwas Setup-Aufwand.
3. Manuelle Modultests im Simulink-Modell
Möglichkeiten:
- Test-Harness bauen (virtuelle Umgebung, die dein Subsystem isoliert)
- Input-Signals aus MATLAB erstellen (z. B. timeseries, Signal Builder)
- Assertions und Verify-Blöcke nutzen
- Scope-Aufzeichnungen automatisiert vergleichen (MATLAB Skript)
Tools in Simulink dafür:
- Simulink Test Harness (auch ohne Lizenz nutzbar!)
- Verification Subsystem (Assertions)
- MATLAB Test Framework (xUnit-ähnlich)
4. MATLAB-basierte Tests (xUnit-Framework)
Sie können mit MATLAB-Klassen (matlab.unittest.TestCase) automatisierte Tests programmieren.
Beispiel:
- Modell per Script laden
- Parameter setzen
- Simulation starten
- Outputs prüfen
Vorteil: Voll automatisierbar
CI/CD einbindbar (GitLab/Jenkins/GitHub Actions)
5. Requirements-basiertes Testen
- Anforderungen mit Testfällen verknüpfen
- Coverage nach Anforderung auswerten
- Testbewertungen automatisch generieren
- Standard in sicherheitskritischen Bereichen (ISO 26262, DO-178C).
6. Code-basierte Unit Tests (für generierten C-Code)
Nach Codegenerierung über Embedded Coder kannst du klassische Unit-Test-Frameworks verwenden:
- Ceedling (C Unit Tests)
- GoogleTest
- Tessy (Industrie-Tool)
- VectorCAST
Dann über SIL/PIL wieder ans Modell anbinden.
Nützliche Artikel
→ zurück zum Hauptartikel: Reliability_Engineering_WS25/26