Programvaretesting er en underdisiplin av programvareutvikling, og er en aktivitet som utføres for å evaluere og forbedre kvaliteten til programvare ved å identifisere defekter og problemer.
IEEE definerer programvaretesting til å være dynamisk verifikasjon av oppførselen til et program på et endelig sett av tester utvalgt fra det vanligvis uendelig settet i det kjørbare domenet, målt opp mot forventet oppførsel.
De skråstilte ordene i forrige avsnitt tilsvarer nøkkelbegreper innenfor disiplinen:
Dynamisk: Dette betyr at alltid innebærer å kjøre programmet mot et sett inn-verdier. Dette inkluderer også tilstanden til systemet som en helhet.
Endelig: Selv i enkle programmer så er det praktisk umulig å teste mot hele settet av mulige inn-verdier.
Utvalgt: Siden man tester på et begrenset sett med inn-verdier, så må disse velges ut for å gi mest mulig verdi til testen.
Forventet: Oppførselen til programmet må sjekkes mot brukerens forventninger, mot spesifikasjonen og mot implisitte krav eller «sunn fornuft». Å ikke vite hva som forventes av programmet gjør testen verdiløs.
Programvaretesting har utviklet seg fra å være programvareutviklingens stebarn til å bli en integrert del av moderne prosesser.