Fuzz -testaus tai fuzzing on tapa tarkistaa, miten tietokoneohjelma tai -järjestelmä reagoi erilaisiin, joskus satunnaisiin tuloihin ja tietoihin. Prosessiin kuuluu tietyn tyyppisen datan luominen, joko täysin satunnainen tai satunnainen tietyissä rajoissa, ja syöttämällä sitten tiedot ohjelmaan testatakseen, miten se käsittelee odottamattomia tietoja. Yksinkertaisin fuzz -testausmuoto on lähettää ohjelmalle satunnainen näppäinpainallusten tai merkkien sarja ja tarkistaa, että se käsittelee ne oikein. Monimutkaisempi versio fuzz -testauksesta käyttää jäsenneltyä dataa, jota sitten käsitellään satunnaisesti ja lähetetään ohjelmalle. Tiedot voivat päästä ohjelmaan järjestelmätapahtumina, näppäimistötuloina, pilkkasignaaleina tai jopa ladattavina tiedostoina.
Tietokoneohjelmassa on useita osia, joita voidaan testata sumutusgeneraattorilla. Graafista käyttöliittymää (GUI) voidaan testata luomalla sarja satunnaisia hiiren ja näppäimistön tapahtumia ja tarkistamalla, että graafinen käyttöliittymä pystyy käsittelemään syötettä kaatumatta, jäädyttämättä tai suorittamatta odottamatonta tehtävää. Verkkoprotokollia voidaan testata antamalla fuzz -generaattorin vaihtaa satunnaisesti osia kelvollisesta datapaketista ja varmistamalla sitten, että protokolla voi jatkaa toimintaansa väärin muotoillun datan vastaanottamisen jälkeen. Lähes minkä tahansa ohjelman perussyöttöelementit voidaan tarkistaa niiden kyvystä vastustaa virheitä, kuten syötettä, joka on aivan liian pitkä tallennustyypille, erilaista kuin odotettua tuloa ja syöttöä, joka on jotenkin epätäydellinen tai virheellinen.
Tietoturva -ala voi käyttää sumutestausta varmistaakseen, että tietyissä järjestelmissä ei ole ilmeisiä suoja -aukkoja. Tämä voidaan tehdä käyttämällä sumun generaattoria, joka on suunniteltu tietokoneen turvallisuuden testaamiseen. Nämä ohjelmat yrittävät käyttää järjestelmän avainsanoja, tunnettuja järjestelmänvalvojan salasanoja, ohjelman käyttämien kirjastojen toimintoja ja satunnaisia kutsuja järjestelmän toimintoihin nähdäkseen, miten ohjelma reagoi.
Erilaiset sumutestaustyypit voidaan mukauttaa tiettyjen rajojen sisällä tai jopa vain tietyntyyppisten tulojen testaamiseksi. Tämä tarkoittaa, että ohjelmalle voi lähettää vain kelvollisia komentoja, mutta ne voivat olla järjettömässä järjestyksessä. On olemassa monimutkaisempia fuzz -testausohjelmia, jotka voivat ottaa kohdeohjelman osia ja manipuloida niitä tuottaakseen tilanteita, joita voitaisiin hyödyntää haitallisesti. Tämä voi sisältää syntyvien prosessien järjestyksen muuttamisen, käyttöoikeuksien muutokset tai ydintietojen ja kirjastotiedostojen muuttamisen.
Fuzz -testauksen lopputuloksena on nähdä, onko ohjelma turvallinen ja käyttäytyykö sen odotetussa tilanteessa. Kun sitä käytetään yhdessä profilointi- ja analysointiohjelmiston kanssa, se voi myös havaita muistivuotoja ohjelman alueilla, kuten virheiden käsittelyssä tai suorituskyvyn pullonkauloissa. Tietokoneen suojauksen yhteydessä vaaralliset ongelmat, kuten ylivuoto, joka voi vaarantaa järjestelmän, voidaan havaita oikealla asetuksella. Fuzz -testausta ei kuitenkaan voida käyttää ainoana ohjelmistotestausmenetelmänä, ja sen on oltava osa laajempaa laadunvarmistus- ja ohjelmistotarkastusprosessia.