Funksjonell testing

Funksjonell testing er en kvalitetssikrings-prosess og en type svartbokstesting som baserer testtilfellene på kravspesifikasjonene til programvaren som er under testing. Funksjoner testes ved å mate dem med innputt og vurdere utputtet, og innvendig programstrukturer blir sjelden vurdert (i motsetning til hvitebokstesting). Funksjonelle tester utføres for å vurdere hvorvidt et system eller en komponent er i samsvar med spesifikke funksjonelle krav. Funksjonell testing beskriver vanligvis hva et system gjør.

Siden funksjonell testing er en type svartbokstesting kan programvarens funksjonalitet testes uten behov for kjennskap til den interne virkemåten til programvaren. Dette betyr at testerne ikke trenger å kunne programmeringsspråk eller vite hvordan programvaren har blitt implementert. Dette kan igjen føre til redusert utviklerbias (eller bekreftelsesbias) i testing siden testerne ikke har vært involvert i programvareutviklingen.

Funksjonell testing innebærer ikke at man tester funksjoner (metoder) i en modul eller klasse. Funksjonell testing tester en del av funksjonaliteten til hele systemet.

Funksjonell testing er forskjellig fra systemtesting ved at funksjonell testing verifiserer et program ved å sjekke det mot designdokumenter eller spesifikasjoner, mens systemtesting validerer et program ved å kontrollere det mot publiserte bruker- eller systemkrav. Konseptet med å inkludere testing tidligere i leveransesykelen er ikke begrenset til funksjonelle tester.

Typer 
Det finnes mange typer funksjonelle tester:

 Brukbarhetstesting
 Regresjonstesting
 Rimelighetstesting

Seks steg 
Funksjonell testing innebærer vanligvis seks steg.

 Identifisering av funksjonene som programvaren forventes å utføre
 Utforming av inngangsdata basert på funksjonsspesifikasjonene
 Bestemmelse av utgangsdata basert på funksjons spesifikasjoner
 Kjøring av testtilfellet
 Sammenligning av faktiske og forventede utfall
 Sjekk om applikasjonen fungerer etter kundens behov

Se også 
 Akseptansetest (programvare), test for å avgjøre om kravene i en spesifikasjon eller kontrakt er oppfylt
 Databasetesting, uilke former for testing av databaser
 Enhetstesting, type programvaretesting hvor individuelle deler testes for å se om de er egnet for bruk (validering)
 Ikke-funksjonell testing, testing av programvare opererer i stedet for spesifikke oppførsler eller funksjoner
 Integrasjonstesting, fase i programvaretesting der individuelle programvaremoduler kombineres og testes som en gruppe; gjøres etter enhetstesting og før systemtesting
 Lasttesting (programvare), belastning av et system samt måling av respons og kvalitet på tjenester
 Programvaretesting, undersøkelser for å gi informasjon om kvaliteten på en programvare
 Regresjonstesting, sjekk for å se om endringer i programvare har ødelagt funksjonalitet som pleide å fungere
 Sikringstesting, tester for å detektere svakheter i sikringsmekanismer som skal beskytte data og opprettholde funksjonalitet til et informasjonssystem
 Systemtesting, testing av et komplett integrert system for å evaluere systemets samsvar med spesifiserte krav
 Testautomasjon, bruk av separat programvare for å styre testgjennomføring og analysere resultater

Referanser 

Programvareutvikling