Enhedstest og integrationstest
Kommunikation og IT A · HTX · A-niveau · Systemudvikling
💻 Test-pyramide
Testpyramiden (Mike Cohn) beskriver tre testniveauer:
```
/\
/ \
/ E2E\ (få, langsomme, dyre)
/------\
/Integra-\
/ tionstest\
/------------\
/ Enhedstest \ (mange, hurtige, billige)
/________________\
```
Enhedstest: tester én isoleret funktion/klasse.
```python
def test_beregn_skat():
assert beregn_skat(50000) == 15000
```
- Hurtig, isoleret, billig
- Brug mocking til at isolere afhængigheder (database, API)
Integrationstest: tester at komponenter virker sammen.
```python
def test_bruger_kan_logge_ind():
response = client.post("/login", data={"brugernavn": "alice", "password": "123"})
assert response.status_code == 200
assert "session" in response.cookies
```
End-to-end test: tester hele applikationen som en bruger (Selenium, Playwright).
Code coverage: procentdel af kode dækket af tests. Stræb efter 70-90%.
Læringsmål
- Skrive enhedstests med pytest og unittest
- Bruge mocking til at isolere databasekald
- Skrive en integrationstest mod et Flask-endpoint
- Måle og fortolke test-coverage
Sådan kan du arbejde med emnet
- Forklar forskellen på en enhedstest og en integrationstest med et eksempel
- Skriv en enhedstest for en funktion der validerer formatet af et CPR-nummer
- Diskutér hvorfor det ikke er nok kun at teste enkeltfunktioner i et større system
Træningsforslag
- Tilføj unit tests til et eksisterende Python-projekt
- Mock en database-funktion og test logik-laget isoleret
- Sæt pytest op i GitHub Actions til automatisk test ved push
Øv dette emne med AI — quizzer, forklaringer og feedback tilpasset dit niveau.
Prøv Fagportalen gratis