Presentationer Slide 1/1

Kap 5.5

Testning, dokumentation och reflektion

Kontrollera kvaliteten och visa hur projektet fungerar.

Mål

Efter lektionen ska du kunna...

  • testa ett program systematiskt
  • jämföra faktiskt och förväntat resultat
  • skriva kommentarer som förklarar varför
  • skapa en användbar README
  • skriva en konkret reflektion

Tre delar

Ett projekt är mer än fungerande kod

Testning

Visar om programmet fungerar i olika situationer.

Dokumentation

Gör programmet begripligt och möjligt att använda.

Reflektion

Visar vad du har lärt dig och hur du löste problem.

Testning

Det lyckade fallet räcker inte

Ett test med korrekt indata visar bara att programmet fungerar i bästa fall.

Testa också när:

  • användaren skriver fel
  • data saknas
  • värden ligger på en gräns
  • samma funktion körs flera gånger

Testfall

En bestämd situation att kontrollera

Ett testfall beskriver minst:

  1. vad som testas
  2. vilken indata som används
  3. vilket resultat som förväntas
  4. vilket resultat testet faktiskt gav

Fyra typer

Blanda olika testfall

  • Normalt: förväntad och giltig indata.
  • Feltest: text där programmet kräver ett tal.
  • Gränsfall: exempelvis 0 eller tom text.
  • Upprepat: samma funktion körs flera gånger.

Testprotokoll

Skriv vad du förväntar dig

Test: Lägg till post
Indata: "Testnamn"
Förväntat: Posten sparas
Faktiskt: Posten sparades
Godkänt: Ja

Förväntat resultat skrivs före testet.

Faktiskt resultat fylls i efter testet.

Databasprojekt

Testa både giltig och tom indata

Funktion: Lägg till
Indata: namn="Pasta", info="Tomatsås"
Förväntat: Raden sparas och visas.
Funktion: Lägg till
Indata: namn="", info="Saknar namn"
Förväntat: Felmeddelande visas.
            Raden sparas inte.

Ett feltest ska även kontrollera att felaktig data inte sparas.

Tänk som en testare

Vad kan gå fel?

  • tomma fält
  • fel datatyp
  • specialtecken
  • extremt långa värden
  • avbrott eller trasig anslutning
  • data som redan finns

Dokumentation

Kommentarer ska tillföra information

# Mindre bra: upprepar koden
antal = antal + 1  # ökar antal med 1
# Bättre: förklarar varför
antal = antal + 1  # räknar poster som sparades

Kodens namn bör förklara vad. Kommentaren förklarar vid behov varför.

Kommentar

Förklara logik som inte är självklar

def add_recipe():
    # Läser formuläret och sparar receptet
    # först efter att fälten har validerats.
    ...

Kommentarer är särskilt användbara vid:

  • felhantering
  • databasanslutningar
  • API-anrop
  • ovanliga tekniska beslut

README

Projektets startpunkt

En README ska hjälpa någon annan att komma igång utan att först läsa all kod.

  • Vad gör programmet?
  • Vilka funktioner finns?
  • Hur startas programmet?
  • Vilka paket eller tekniker används?
  • Vilka begränsningar finns?

README-exempel

En tydlig grundstruktur

# Receptregister

Programmet sparar och söker efter recept.

## Funktioner
- Lägg till recept
- Visa recept
- Sök efter recept

## Så kör du programmet
1. Öppna projektmappen.
2. Kör main.py.

## Kända begränsningar
- Recept kan ännu inte redigeras.

README-kontroll

Kan en ny användare starta programmet?

  • Är syftet tydligt beskrivet?
  • Står det vilken fil som ska köras?
  • Står det om projektet använder sqlite3, requests eller tkinter?
  • Finns ett konkret användningsexempel?
  • Finns kända begränsningar?

Reflektion

Beskriv vad du faktiskt gjorde

Otydligt: ”Det gick bra, men databasen var svår.”

Tydligare: ”Min tomma sökning visade alla poster. Jag löste det genom att kontrollera sökordet före SQL-frågan.”

En konkret reflektion visar problem, orsak, lösning och lärdom.

Reflektionsmall

Frågor att besvara

  • Planering: Vad hjälpte och vad saknades?
  • Implementation: Vad byggde du först och varför?
  • Problem: Vilka fel eller svårigheter uppstod?
  • Lösning: Hur hittade och åtgärdade du orsaken?
  • Testning: Vilka testfall gav viktig information?
  • Vidare: Vad skulle du förbättra?

Före inlämning

Arbetsgång

  1. Starta programmet från början.
  2. Testa normala fall, feltest och gränsfall.
  3. Dokumentera testresultaten.
  4. Lägg till kommentarer där de hjälper.
  5. Uppdatera README-filen.
  6. Skriv en konkret reflektion.

Kontrollfråga

Vilket test saknas?

Programmet kräver en ålder mellan 0 och 120.

Test 1: 25
Test 2: "hej"

Exempel på gränsfall: 0, 120, -1 och 121.

Testa både precis innanför och precis utanför gränsen.

Sammanfattning

Kom ihåg

  • Testfall innehåller indata och förväntat resultat.
  • Blanda normala test, feltest, gränsfall och upprepade test.
  • Kommentarer ska förklara sådant som inte redan är tydligt.
  • README visar hur projektet används.
  • Reflektionen beskriver problem, lösningar och lärdomar.