Test-driven development
Programmering B · HTX · B-niveau · Software-udvikling
💻 Test-Driven Development (TDD)
TDD = skriv testen FØR du skriver koden.
Red-Green-Refactor:
1. Red: skriv en test der fejler
2. Green: skriv minimal kode der får testen til at bestå
3. Refactor: forbedre koden uden at bryde testen
pytest — simpelt eksempel:
```python
test_kalkulator.py
def test_add():
assert add(2, 3) == 5
def test_add_negative():
assert add(-1, 1) == 0
def test_add_float():
assert add(0.1, 0.2) == pytest.approx(0.3)
kalkulator.py
def add(a, b):
return a + b
```
Kør tests:
```bash
pytest # kør alle tests
pytest -v # verbose output
pytest test_kalk.py # én specifik fil
pytest --cov # test-coverage
```
Arrange-Act-Assert (AAA-mønstret):
```python
def test_bankkonto_indsætning():
# Arrange
konto = Bankkonto("Alice", 1000)
# Act
konto.indsæt(500)
# Assert
assert konto.get_saldo() == 1500
```
Mocking: erstat ekstern afhængighed (database, API) med fake:
```python
from unittest.mock import patch
def test_hent_vejr():
with patch("requests.get") as mock:
mock.return_value.json.return_value = {"temp": 15}
resultat = hent_vejr("Odense")
assert resultat["temp"] == 15
```
Læringsmål
- Følge Red-Green-Refactor cyklen i et projekt
- Skrive tests med pytest og AAA-mønstret
- Bruge mocking til at isolere afhængigheder
- Måle og fortolke test-coverage
Sådan kan du arbejde med emnet
- Forklar princippet i TDD: skriv test først, derefter kode
- Skriv en simpel test for en funktion, der lægger to tal sammen
- Diskutér en fordel ved at have automatiserede tests, når man ændrer i et program
Træningsforslag
- Implementer FizzBuzz med TDD — skriv alle tests først
- Tilføj tests til et eksisterende projekt og find fejl de afslører
- Sæt GitHub Actions op til at køre tests automatisk ved push
Øv dette emne med AI — quizzer, forklaringer og feedback tilpasset dit niveau.
Prøv Fagportalen gratis