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 programmerarar skriv kode med feil. Det viktige er å finne og rette dei systematisk.

Tre typar feil

Syntaksfeil – bryt med grammatikken til Python (manglande kolon, feil innrykk). Lett å finne.

Køyretidsfeil – oppstår under køyring: int("abc") (ValueError), 10/0 (ZeroDivisionError).

Logiske feil – koden køyrer, men gir feil resultat: a + b / 2 i staden for (a + b) / 2. Vanskelegast å 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 han, 3) Forstå han, 4) Rett han, 5) Test.

Feilhandtering med try-except

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

Einingstesting 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 sjekkar om uttrykket er True. Viss False, krasjar programmet med feilmelding. Skriv testar for å fange feil tidleg.

Oppsummering

- Syntaksfeil blir oppdaga av Python og hindrar køyring (t.d. manglande kolon eller parentes).
- Logiske feil gir feil resultat utan feilmelding og er vanskelegare å oppdage.
- Køyretidsfeil oppstår under køyring (t.d. deling på null eller ugyldig indeks).
- Print-debugging bruker print() til å vise variabelverdiar undervegs for å finne feil.
- try-except handterer køyretidsfeil og lèt programmet halde fram sjølv om noko går gale.
- Einingstesting med assert sjekkar at funksjonar gir forventa resultat og fangar feil tidleg.
- Systematisk feilsøking inneber å lese feilmeldinga, isolere problemet og teste éin ting om gongen.

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.