Modellierung und Simulation - Modultest: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
| Zeile 97: | Zeile 97: | ||
= 4. Mehrere Testfälle = | = 4. Mehrere Testfälle = | ||
<syntaxhighlight lang="matlab" line style="border: none; background-color: #EFF1C1; font-size:small">classdef TestQuadrat < matlab.unittest.TestCase | |||
methods(Test) | |||
function testPositive(testCase) | |||
actual = quadrat(4); | |||
expected = 16; | |||
testCase.verifyEqual(actual,expected); | |||
end | |||
end | |||
end | |||
</syntaxhighlight> | |||
=5. Toleranzen bei Fließkommazahlen= | |||
Direkte Vergleiche sind problematisch: | |||
0.1 + 0.2 == 0.3 | |||
Daher | |||
<syntaxhighlight lang="matlab" line style="border: none; background-color: #EFF1C1; font-size:small">actual = sin(pi); | |||
testCase.verifyEqual( ... | |||
actual,... | |||
0,... | |||
'AbsTol',1e-10); | |||
</syntaxhighlight> | |||
---- | ---- | ||
→ [[MATLAB-Befehle| MATLAB<sup>®</sup> Befehlsübersicht]]<br> | → [[MATLAB-Befehle| MATLAB<sup>®</sup> Befehlsübersicht]]<br> | ||
→ zurück zum Hauptartikel: [[BSE Modellierung und Simulation - SoSe26]] | → zurück zum Hauptartikel: [[BSE Modellierung und Simulation - SoSe26]] | ||
Version vom 25. Juni 2026, 12:51 Uhr
| Autor: | Prof. Dr.-Ing. Schneider |
| Lektion: | 11 |
| Termin: | 26.06.2026 |
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.
Lernziele
Nach dieser Lektion können Sie
- die Bedeutung von Unit-Tests erklären,
- MATLAB-Testklassen erstellen,
- Tests mit dem matlab.unittest Framework durchführen,
- Test Fixtures verwenden,
- Fehlerfälle gezielt prüfen,
- Testberichte interpretieren,
- Unit-Tests in Entwicklungsprozesse integrieren.
Vorbereitung
- 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.
1. Motivation
Bei wissenschaftlicher Software entstehen häufig Fehler durch:
- Änderungen am Algorithmus
- Erweiterungen bestehender Funktionen
- Refactoring
- Teamarbeit
Unit-Tests stellen sicher, dass eine Funktion auch nach Änderungen weiterhin korrekt arbeitet.
Beispiel
Gegeben sei die Funktion:
function y = celsius2fahrenheit(x)
y = x*9/5 + 32;
end
Frage: Wie kann sichergestellt werden, dass zukünftige Änderungen keine Fehler verursachen?
Antwort: → Automatisierte Unit-Tests.
2. Das MATLAB Unit-Test Framework
MATLAB stellt das Paket
matlab.unittest
bereit.
| Element | Zweck |
|---|---|
TestCase |
Basisklasse für Tests |
verifyEqual |
Ergebnis prüfen |
verifyTrue |
Wahrheitswert prüfen |
verifyError |
Fehler erwarten |
TestSuite |
Testsammlung |
TestRunner |
Testausführung |
3. Erster Test
Zu testende Funktion
function y = quadrat(x)
y = x.^2;
end
Testklasse
classdef TestQuadrat < matlab.unittest.TestCase
methods(Test)
function testPositive(testCase)
actual = quadrat(4);
expected = 16;
testCase.verifyEqual(actual,expected);
end
end
end
Test ausführen
results = runtests('TestQuadrat');
Ausgabe:
Running TestQuadrat . Done TestQuadrat
4. Mehrere Testfälle
classdef TestQuadrat < matlab.unittest.TestCase
methods(Test)
function testPositive(testCase)
actual = quadrat(4);
expected = 16;
testCase.verifyEqual(actual,expected);
end
end
end
5. Toleranzen bei Fließkommazahlen
Direkte Vergleiche sind problematisch:
0.1 + 0.2 == 0.3
Daher
actual = sin(pi);
testCase.verifyEqual( ...
actual,...
0,...
'AbsTol',1e-10);
→ MATLAB® Befehlsübersicht
→ zurück zum Hauptartikel: BSE Modellierung und Simulation - SoSe26