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