Tilbake
2.8
Feilsøking og testing

2.8 Feilsøking og testing

Lær systematiske metoder for å finne og rette feil i kode, og forstå betydningen av testing for kvalitetssikring.

50 min
6 oppgaver
Syntaksfeil vs. logiske feilDebuggingsverktøyPrint-debuggingEnhetstestingFeilhåndtering med try-except
Du leser den tradisjonelle versjonen
Din fremgang i kapitlet
0 / 6 oppgaver

Feilsøking og testing

Alle programmerere skriver kode med feil. Det viktige er å finne og rette dem systematisk.

Tre typer feil

Syntaksfeil – bryter med Pythons grammatikk (manglende kolon, feil innrykk). Lett å finne.

Kjøretidsfeil – oppstår under kjøring: int("abc") (ValueError), 10/0 (ZeroDivisionError).

Logiske feil – koden kjører, men gir feil resultat: a + b / 2 i stedet for (a + b) / 2. Vanskeligst å finne.

Debugging med print

def rabatt(pris, prosent):
    print(f"DEBUG: pris={pris}, prosent={prosent}")
    return pris - pris * prosent / 100

Systematisk: 1) Reproduser feilen, 2) Isoler den, 3) Forstå den, 4) Rett den, 5) Test.

Feilhåndtering med try-except

try:
    tall = int(input("Tall: "))
    print(100 / tall)
except ValueError:
    print("Ugyldig tall!")
except ZeroDivisionError:
    print("Kan ikke dele på null!")

Enhetstesting med assert

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

assert adder(2, 3) == 5
assert adder(-1, 1) == 0
assert adder(0, 0) == 0
print("Alle tester bestått!")

assert sjekker om uttrykket er True. Hvis False, krasjer programmet med feilmelding. Skriv tester for å fange feil tidlig.

Oppsummering

- Syntaksfeil oppdages av Python og hindrer kjøring (f.eks. manglende kolon eller parentes).
- Logiske feil gir feil resultat uten feilmelding og er vanskeligere å oppdage.
- Kjøretidsfeil oppstår under kjøring (f.eks. deling på null eller ugyldig indeks).
- Print-debugging bruker print() til å vise variabelverdier underveis for å finne feil.
- try-except håndterer kjøretidsfeil og lar programmet fortsette selv om noe går galt.
- Enhetstesting med assert sjekker at funksjoner gir forventet resultat og fanger feil tidlig.
- Systematisk feilsøking innebærer å lese feilmeldingen, isolere problemet og teste en ting om gangen.

Oppgaver

Lett2 oppgaver
Medium3 oppgaver
Vanskelig1 oppgave

Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.