Afprøvning
(eller: test, programtest, debugging).
Som et led i udviklingen og vedligeholdelsen af programmel skal der foretages afprøvning af alle programmer af hensyn til kvalitetssikringen.
Afprøvning af et program foregår ved at køre programmet på en computer med omhyggeligt udvalgte inddata. Kørslen giver resultater, som sammenlignes med de forventede resultater, og eventuelle afvigelser danner efter et grundigt studium grundlag for rettelser i programmet, hvorefter der køres en ny afprøvning. Sådan fortsættes, indtil der ikke findes flere fejl. Ved afprøvning er det vigtigt dels at sørge for at organisere inddata, så der opdages så mange fejl som muligt i hver kørsel, dels at vælge inddata, så alle fejltyper afsløres. Afprøvning kan desværre kun vise at der er fejl tilstede, men aldrig vise at et program er fejlfrit.
Afprøvning af et program foregår normalt i to faser. Den første er aflusningen (eller debugging) af et nyudviklet program, hvor de groveste fejl søges fanget, så programmet kan køre uden at gå ned (der er "hul igennem"). Den anden fase er den systematiske afprøvning, som også anvendes under vedligeholdelse. Den opdeles i tre dele:
- Den interne afprøvning (open box test, white-box test, glass-box test), hvor der ud fra kendskab til programmets indhold opstilles inddata, der afprøver alle detaljer i programmet. En intern afprøvning kan blive ret omfattende, både i mængden af testdata og i dokumentationen af afprøvningsresultaterne. Ved en intern afprøvning må der sørges for, at alle sætninger gennemløbes, herunder at alle muligheder ved valg prøves, at løkker gennemløbes nul, én og et større antal gange, at data antager normale og ekstreme værdier, og at programmets reaktion på patologiske data (kombinationer af inddata, der aldrig burde forekomme) prøves.
- Den eksterne afprøvning (closed box test, black-box test, systemtest), hvor der kun afprøves de krav, f.eks. fra kravspecifikationen, som programmet burde kunne leve op til. En dækkende ekstern afprøvning kan være besværlig eller så godt som umulig at konstruere og gennemføre ved større programmer og programmer med mange interne tilstande. Dette skyldes at skridtet fra ekstern specifikation til konkret implementation kan være uigennemskueligt på grund af programmørens mulighed for at vælge mellem forskellige metoder.
- Brugerafprøvningen, hvor kommende brugere arbejder med programmet i situationer, der er så virkelighedsnære som muligt. Brugerafprøvningen udføres som regel først efter adskillige interne og eksterne afprøvningsrunder, når programmet stort set er fejlfrit. Se alfa-test, beta-test og brugsvenlighedstest.
Er programmellet opdelt i moduler, kan disse afprøves hver for sig ved modultest og senere samles og afprøves ved en integrationstest, der afprøver samarbejdet mellem modulerne.
Ved afleveringen af større programmelsystemer til kunden vil der normalt finde en afleveringsprøve sted, som eventuelt også omfatter en benchmark test.
Se også afprøvningsværktøjer,

