Gå til indholdet

Test

Test handler om at kontrollere, at din kode faktisk gør det, du tror, den gør. Det er let at skrive et program, der virker i det ene eksempel, du selv prøver. Det er noget helt andet at have rimelig sikkerhed for, at det også virker i andre situationer.

Som begynder kan test virke som noget, man først tager fat på senere. I praksis er det en god vane at lære tidligt, fordi test hænger tæt sammen med både fejlhåndtering og kodekvalitet.

Hvorfor teste?

Test hjælper dig med at:

  • opdage fejl tidligere
  • kontrollere at eksisterende kode stadig virker efter ændringer
  • få mere tillid til dine programmer
  • gøre det lettere at ændre og udvide kode senere

Man kan sige, at test er en måde at spørge programmet: “Virker du stadig, når jeg prøver noget andet end det mest oplagte?”

Manuelle tests og automatiserede tests

Der findes groft sagt to måder at teste på:

  • Manuel test: Du prøver selv programmet af og ser, om det opfører sig rigtigt.
  • Automatiseret test: Du skriver kode, som automatisk kontrollerer andre dele af koden.

Begge dele er nyttige. Som begynder starter man ofte med manuel test, men automatiserede tests bliver hurtigt vigtige, når programmerne vokser.

Unit tests

En unit test tester en lille afgrænset del af programmet, typisk en funktion eller metode.

def adder(a, b):
    return a + b

def test_adder():
    assert adder(2, 3) == 5
    assert adder(-1, 1) == 0
    assert adder(0, 0) == 0

Fordelen ved unit tests er, at de er hurtige og præcise. Hvis en lille funktion holder op med at virke, kan du ofte opdage det med det samme.

Integrationstests

En integrationstest kontrollerer, om flere dele af systemet arbejder rigtigt sammen. Det kan for eksempel være, om en webapplikation kan hente data fra en database og vise dem korrekt.

Integrationstests er ofte langsommere og mere komplekse end unit tests, men de er vigtige, fordi mange fejl opstår i samspillet mellem komponenter.

End-to-end tests

End-to-end tests prøver hele systemet af, næsten som en bruger ville opleve det. I en webapplikation kan det være at åbne siden, udfylde en formular og kontrollere, at resultatet bliver vist rigtigt.

Denne type test giver høj realisme, men er ofte dyrere og mere skrøbelig end små tests. Derfor bruger man normalt flere typer test sammen i stedet for kun én.

Hvad bør du kunne som begynder?

Som begynder er det rigeligt, hvis du forstår:

  • at test er en måde at kontrollere kode systematisk på
  • at små funktioner er lettere at teste end store uklare kodeblokke
  • at test ikke fjerner alle fejl, men reducerer risikoen
  • at test og fejlhåndtering hjælper hinanden

Du behøver ikke starte med et stort testsetup. Det vigtigste er at opbygge vanen med at kontrollere, om koden faktisk virker efter ændringer.

Se også

  • Læs Fejlhåndtering, hvis du vil forstå, hvordan fejl opdages og håndteres.
  • Læs Kodekvalitet, hvis du vil se, hvorfor god struktur gør kode lettere at teste.
  • Læs Infrastruktur, hvis du vil se, hvordan test senere indgår i CI/CD og større udviklingsmiljøer.