Fuzz testiranje, ili fuzzing, metoda je provjere kako će računalni program ili sustav reagirati na različite, ponekad nasumične, ulaze i informacije. Proces uključuje generiranje neke vrste podataka, bilo potpuno nasumičnih ili nasumičnih unutar određenih ograničenja, a zatim unos tih podataka u program kako bi se testiralo kako obrađuje neočekivane informacije. Najosnovniji oblik fuzz testiranja uključuje slanje slučajnog niza pritisaka tipki ili znakova u program i provjeru da ih ispravno obrađuje. Složenija verzija fuzz testiranja koristi strukturirane podatke koji se zatim nasumično manipuliraju i šalju programu. Podaci mogu doći do programa kao događaji u sustavu, unosi s tipkovnice, lažni mrežni signali ili čak kao datoteke koje se trebaju učitati.
Postoje različiti dijelovi računalnog programa koji se mogu testirati pomoću generatora fuzz. Grafičko korisničko sučelje (GUI) može se testirati stvaranjem niza nasumičnih događaja miša i tipkovnice i provjerom je li GUI u stanju nositi se s unosom bez rušenja, zamrzavanja ili izvođenja neočekivanog zadatka. Mrežni protokoli se mogu testirati dopuštajući generatoru fuzz nasumično mijenjanje dijelova valjanog paketa podataka, a zatim osiguravajući da protokol može nastaviti funkcionirati nakon primanja krivo oblikovanih podataka. Osnovni elementi unosa gotovo svakog programa mogu se provjeriti na njihovu sposobnost da se odupru pogreškama, kao što je ulaz koji je predug za vrstu pohrane, ulaz koji je različite vrste od očekivanog i unos koji je nekako nepotpun ili netočan.
Industrija računalne sigurnosti može koristiti fuzz testiranje kako bi osigurala da nema očitih sigurnosnih rupa u određenim sustavima. To se može učiniti korištenjem fuzz generatora dizajniranog za testiranje računalne sigurnosti. Ovi programi će pokušati koristiti ključne riječi sustava, poznate zadane administratorske lozinke, funkcije unutar knjižnica koje program koristi i nasumične pozive funkcijama sustava kako bi vidjeli kako će program reagirati.
Različite vrste fuzz testiranja mogu se prilagoditi tako da budu unutar određenih raspona, ili čak da testiraju samo određene vrste ulaznih podataka. To znači da bi program mogao imati samo valjane naredbe koje mu se šalju, ali one mogu biti besmislenim redoslijedom. Postoje složeniji fuzz programi za testiranje koji mogu uzeti elemente ciljnog programa i manipulirati njima kako bi proizveli situacije koje bi se mogle zlonamjerno iskoristiti. To može uključivati promjenu redoslijeda procesa koji se stvaraju, izmjene dopuštenja ili izmjenu temeljnih podataka i datoteka biblioteke.
Krajnji rezultat fuzz testiranja je vidjeti je li program siguran i ponaša li se kako bi trebao kada se suoči s neočekivanom situacijom. Kada se koristi u tandemu sa softverom za profiliranje i analizu, također može otkriti curenje memorije u područjima programa kao što su rukovanje pogreškama ili uska grla u izvedbi. U slučajevima računalne sigurnosti, opasni problemi kao što su preljevi koji mogu ugroziti sustav mogu se uhvatiti ispravnim postavljanjem. Fuzz testiranje, međutim, ne može se koristiti kao jedina metoda testiranja softvera i mora biti dio šireg procesa osiguranja kvalitete i inspekcije softvera.