- 1 Abschnitt
- 9 Lektionen
- Um den Kurs in deinem Profil zu hinterlegen klicke oben auf Starten
Durchführung von Modultests
Automatisierung von Modultests
Automatisierung ist ein zentraler Aspekt bei der Durchführung von Modultests. Durch die Automatisierung können Tests regelmäßig und konsistent ausgeführt werden, was die Qualität und Zuverlässigkeit des Codes erheblich verbessert.
1. Integration in CI/CD-Pipelines:
Continuous Integration (CI) und Continuous Deployment (CD) sind Praktiken, die sicherstellen, dass Codeänderungen kontinuierlich getestet und automatisch bereitgestellt werden. Modultests sind ein wesentlicher Bestandteil dieser Pipelines.
Beispiel: Integration von pytest in eine GitHub Actions CI/CD-Pipeline:
.github/workflows/python-app.yml:
name: Python application
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pytest
- name: Run tests
run: |
pytest
2. Verwendung von Test-Suites und Test-Runnern:
Test-Suites und Test-Runner helfen dabei, mehrere Tests zu organisieren und systematisch auszuführen. Sie ermöglichen es, Tests in Gruppen zu bündeln und Berichte über die Testergebnisse zu erstellen.
Beispiel: Verwendung von pytest als Test-Runner in Python:
Test-Suite in tests/test_my_module.py:
import pytest
from my_module import add, factorial
# Testmethode für die Addition von zwei Zahlen
def test_add():
assert add(2, 3) == 5
assert add(-1, 1) == 0
assert add(0, 0) == 0
# Testmethode für das Faktorial
def test_factorial():
assert factorial(5) == 120
assert factorial(3) == 6
assert factorial(0) == 1
with pytest.raises(ValueError):
factorial(-1)
if __name__ == "__main__":
pytest.main()
Teststrategien
1. Einzeltests vs. Batch-Tests:
- Einzeltests: Tests, die einzeln ausgeführt werden, um spezifische Funktionalitäten zu überprüfen. Sie sind nützlich, um detaillierte Fehlerquellen zu identifizieren.
- Batch-Tests: Tests, die in Gruppen oder Batches ausgeführt werden, um die Gesamtfunktionalität zu überprüfen. Sie sind effizienter und bieten eine umfassende Sicht auf die Systemstabilität.
Beispiel: Ausführung von Einzeltests in pytest:
pytest tests/test_my_module.py::test_add
Beispiel: Ausführung von Batch-Tests in pytest:
pytest tests/
2. Testen von Grenz- und Sonderfällen:
Grenz- und Sonderfälle sind spezielle Testszenarien, die potenzielle Schwachstellen und unerwartete Bedingungen überprüfen.
Beispiel für das Testen von Grenzfällen:
# Testmethode für das Faktorial mit Grenzwerten und Sonderfällen
def test_factorial_edge_cases():
# Test für große Eingabewerte
assert factorial(10) == 3628800
# Test für kleine Eingabewerte (einschließlich Null)
assert factorial(0) == 1
assert factorial(1) == 1
# Test für ungültige Eingabewerte (negative Zahlen)
with pytest.raises(ValueError):
factorial(-1)
Automatisierte Berichterstellung
Automatisierte Testberichte sind wichtig, um den Teststatus und die Testergebnisse zu überwachen. Sie bieten eine detaillierte Übersicht über erfolgreiche und fehlgeschlagene Tests.
Beispiel: Generierung eines HTML-Berichts mit pytest:
pytest --html=report.html
Beispiel: Beispielhafte Struktur eines HTML-Testberichts:
Test Report
-----------
Test File: tests/test_my_module.py
---------------------------------
Test Case: test_add
Status: Passed
Test Case: test_factorial
Status: Passed
Test Case: test_factorial_edge_cases
Status: Passed
