- 1 Abschnitt
- 9 Lektionen
- Um den Kurs in deinem Profil zu hinterlegen klicke oben auf Starten
Analyse der Testergebnisse
Interpretation der Testergebnisse
Nach der Durchführung von Modultests ist es entscheidend, die Testergebnisse korrekt zu interpretieren. Dies hilft dabei, die Ursache von Fehlern zu identifizieren und geeignete Maßnahmen zur Behebung zu ergreifen.
1. Verstehen von Testberichten und Fehlermeldungen:
Testframeworks wie pytest, JUnit oder Mocha generieren Berichte, die Informationen über die ausgeführten Tests und deren Ergebnisse enthalten. Diese Berichte müssen sorgfältig analysiert werden.
Beispiel: Testbericht von pytest:
============================= test session starts =============================
collected 4 items
tests/test_my_module.py .... [100%]
============================== 4 passed in 0.02s ==============================
Beispiel: Fehlermeldung in pytest:
============================= test session starts =============================
collected 4 items
tests/test_my_module.py ...F [ 75%]
================================== FAILURES ===================================
_____________________________ test_factorial ________________________________
def test_factorial():
> assert factorial(-1) == 1
E AssertionError: ValueError not raised
tests/test_my_module.py:12: AssertionError
=========================== short test summary info ===========================
FAILED tests/test_my_module.py::test_factorial - AssertionError: ValueError not raised
============================== 1 failed, 3 passed in 0.02s =====================
2. Analyse von Fehlertypen und -ursachen:
Fehlertypen können vielfältig sein und unterschiedliche Ursachen haben. Es ist wichtig, den Fehlertyp zu identifizieren und die zugrunde liegende Ursache zu verstehen.
Häufige Fehlertypen:
- Syntaxfehler: Fehler im Code, die durch falsche Syntax verursacht werden.
- Logikfehler: Fehler in der Logik des Codes, die zu falschen Ergebnissen führen.
- Laufzeitfehler: Fehler, die während der Ausführung des Codes auftreten, z.B. durch ungültige Eingabewerte.
Beispiel: Analyse einer AssertionError:
_____________________________ test_factorial ________________________________
def test_factorial():
> assert factorial(-1) == 1
E AssertionError: ValueError not raised
Analyse:
- Der Test erwartet, dass die Funktion
factorialbei negativen Eingaben eineValueErrorauslöst. - Die Fehlermeldung zeigt, dass diese Erwartung nicht erfüllt wurde.
- Mögliche Ursache: Die Funktion
factorialbehandelt negative Eingaben nicht korrekt.
Maßnahmen bei fehlschlagenden Tests
Wenn Tests fehlschlagen, sind folgende Schritte hilfreich, um die Probleme zu beheben:
1. Debugging-Techniken:
Debugging hilft, die genaue Ursache von Fehlern zu identifizieren und zu beheben. Dies kann durch den Einsatz von Debugging-Tools oder das Hinzufügen von Debugging-Ausgaben im Code geschehen.
Beispiel: Hinzufügen von Debugging-Ausgaben in Python:
def factorial(n):
if n < 0:
print("Debug: Negative input encountered") # Debugging-Ausgabe
raise ValueError("Negative input not allowed")
result = 1
for i in range(1, n + 1):
result *= i
return result
2. Schrittweise Fehlerbehebung:
Fehler sollten systematisch und schrittweise behoben werden. Dies beinhaltet das Testen von Änderungen, um sicherzustellen, dass der Fehler behoben ist und keine neuen Fehler eingeführt wurden.
Beispiel: Schrittweise Fehlerbehebung bei einem fehlschlagenden Test:
def factorial(n):
if n < 0:
raise ValueError("Negative input not allowed")
result = 1
for i in range(1, n + 1):
result *= i
return result
def test_factorial():
assert factorial(5) == 120
assert factorial(3) == 6
assert factorial(0) == 1
with pytest.raises(ValueError):
factorial(-1)
Best Practices bei der Analyse der Testergebnisse
1. Regelmäßige Überprüfung:
Testergebnisse sollten regelmäßig überprüft werden, insbesondere nach jeder Codeänderung. Dies hilft, Fehler frühzeitig zu erkennen und zu beheben.
2. Dokumentation:
Fehler und deren Behebung sollten dokumentiert werden. Dies hilft, ähnliche Fehler in der Zukunft zu vermeiden und das Wissen im Team zu teilen.
3. Automatisierte Benachrichtigungen:
Automatisierte Benachrichtigungen über fehlschlagende Tests können helfen, schnell auf Probleme zu reagieren. CI/CD-Tools bieten oft integrierte Benachrichtigungsfunktionen.
Beispiel: Benachrichtigung in GitHub Actions:
jobs:
build:
steps:
- name: Run tests
run: pytest
- name: Notify on failure
if: failure()
run: echo "Tests failed. Please check the build logs for details."
