Mjukvarutestning – grunderna

Mjukvarutestning handlar om att hitta fel innan användarna gör det – och om att visa att systemet gör det det ska. Här går vi igenom grunderna: testnivåer, testtekniker och hur man väljer vad som ska testas när det är omöjligt att testa allt.

Testning visar fel, inte felfrihet

En grundprincip inom testning är att tester kan visa att fel finns, men aldrig bevisa att ett system är helt felfritt. Därför handlar bra testning om att välja tester som har störst chans att hitta de fel som spelar roll – utifrån risk, användning och hur systemet är byggt.

Testnivåerna

  • Enhetstest – testar minsta byggstenarna, till exempel en funktion eller klass, oftast automatiskt av utvecklaren.
  • Integrationstest – testar att delarna fungerar tillsammans, till exempel mot en databas eller ett annat system.
  • Systemtest – testar hela systemet mot kraven, i en miljö som liknar den riktiga.
  • Acceptanstest – kunden eller användarna bekräftar att systemet löser deras behov.

Kombinationsexplosionen

När ett system har många inställningar växer antalet kombinationer snabbt. Fem parametrar med tre värden var ger 243 kombinationer. Erfarenhet visar att många fel utlöses av samspelet mellan två parametrar, och därför används ofta parvis testning: man väljer en mängd testfall där varje par av värden förekommer minst en gång.

// hur många testfall?

Ange hur många värden varje parameter kan ha, till exempel 3 webbläsare, 2 operativsystem och 4 språk. Lämna 0 för parametrar som inte används.

Alla kombinationer = produkten av antalet värden. Parvis testning kräver minst lika många fall som de två största parametrarna multiplicerat med varandra; verktyg för parvis generering hamnar ofta strax över den gränsen.

Fler tekniker att känna till

  • Ekvivalensklasser – dela in indata i grupper som bör behandlas likadant och testa ett värde ur varje.
  • Gränsvärdesanalys – fel hamnar ofta vid gränserna, så testa precis på, under och över varje gräns.
  • Beslutstabeller – för regler med många villkor, så att alla kombinationer av villkor täcks.
  • Utforskande testning – erfarna testare undersöker systemet fritt och lär sig medan de testar.

Läs vidare om kvalitetssäkring av säkerhetskritiska system.