Hva er fuzz-testing?

Fuzz testing, eller fuzzing, er en metode for å sjekke for å se hvordan et dataprogram eller system vil reagere på forskjellige, noen ganger tilfeldige, innganger og informasjon. Prosessen innebærer å generere en type data, enten helt tilfeldige eller tilfeldige innenfor visse begrensninger, og deretter mate disse dataene inn i programmet for å teste hvordan de håndterer uventet informasjon. Den mest grunnleggende formen for fuzz-testing innebærer å sende en tilfeldig rekkefølge av tastetrykk eller tegn til programmet og sjekke at den behandler dem riktig. En mer kompleks versjon av fuzz-testing bruker strukturerte data som deretter blir manipulert og sendt til programmet tilfeldig. Dataene kan nå programmet som systemhendelser, tastaturinnganger, spotte nettverkssignaler eller til og med som filer som skal lastes.

Det er forskjellige deler av et dataprogram som kan testes med en fuzzgenerator. Det grafiske brukergrensesnittet (GUI) kan testes ved å lage en sekvens av tilfeldige mus- og tastaturhendelser og kontrollere at GUI er i stand til å håndtere inndata uten å krasje, fryse eller utføre en uventet oppgave. Nettverksprotokoller kan testes ved å la fuzzgeneratoren tilfeldig endre deler av en gyldig datapakke og deretter sikre at protokollen kan fortsette å fungere etter mottak av misdannede data. De grunnleggende inngangselementene i nesten ethvert program kan sjekkes for deres evne til å motstå feil, for eksempel inngang som er altfor lang for lagringstypen, innganger som er av en annen type enn forventet og inngang som på en eller annen måte er ufullstendig eller feil.

Datasikkerhetsindustrien kan bruke fuzz-testing for å sikre at det ikke er noen åpenbare sikkerhetshull i visse systemer. Dette kan gjøres ved å bruke en fuzzgenerator designet for testing av datasikkerhet. Disse programmene vil prøve å bruke system nøkkelord, kjente standard administratorpassord, funksjoner i bibliotekene programmet bruker, og tilfeldige anrop til systemfunksjoner for å se hvordan programmet vil reagere.

De forskjellige typene av fuzz-testing kan tilpasses for å være innenfor bestemte områder, eller til og med for å teste bare bestemte typer input. Dette betyr at et program bare kan ha gyldige kommandoer sendt til det, men at de kan være i en nonsensisk rekkefølge. Mer komplekse fuzz-testprogrammer finnes som kan ta elementer av målprogrammet og manipulere dem til å produsere situasjoner som kan utnyttes ondsinnet. Dette kan omfatte å endre rekkefølgen på prosesser som er spawned, modifikasjoner av tillatelser eller modifisering av kjernedata og bibliotekfiler.

Sluttresultatet av fuzz-testing er å se om et program er sikkert og oppfører seg som det skal når det blir konfrontert med en uventet situasjon. Når den brukes sammen med profilerings- og analyseprogramvare, kan den også registrere minnelekkasjer i områder av programmet, for eksempel feilhåndtering eller flaskehalser i ytelsen. I tilfeller av datasikkerhet kan farlige problemer som overløp som kan gå ut over et system, fanges opp med riktig oppsett. Fuzz-testing kan imidlertid ikke brukes som den eneste metoden for programvaretesting og må være en del av en større prosess med kvalitetssikring og programvareinspeksjon.

ANDRE SPRÅK

Hjalp denne artikkelen deg? Takk for tilbakemeldingen Takk for tilbakemeldingen

Hvordan kan vi hjelpe? Hvordan kan vi hjelpe?