Fuzz testování (fuzzing) je technika testování softwaru, často automatizovaná alespoň částečně, která na vstup počítačovému programu poskytuje chybná, neočekávaná, nebo náhodná data. U programu jsou při tom monitorovány vzniklé výjimky, jako jsou pády, nesplnění testovacích výrazů, nebo paměťové úniky. Fuzz testování se běžně používá pro testování bezpečnostních problémů v aplikacích a počítačových systémech.

Obor zabývající se tímto testováním se díky Bartonu Millerovi zrodil na Univerzitě ve Wisconsinu v roce 1988. Toto rané dílo zahrnuje nejen použití náhodného nestrukturalizovaného testování, ale také sadu nástrojů pro vyhodnocení široké škály softwarových nástrojů na různých platformách. Také umožňuje systematickou analýzu druhu chyb, které byly odhaleny tímto druhem testování. Kromě toho je s veřejným přístupem k dispozici zdrojový kód tohoto nástroje, testovací procedury a surová výsledná data.

Program pro fuzz testování má dvě formy, které mohou být využity pro různé druhy testování (white box, grey box a black box testování). Nejčastějším cílem testování jsou formáty souboru a síťové protokoly, ale jakýkoli druh vstupu může být testován. Zajímavé druhy vstupů jsou proměnné prostředí, události klávesnice a myši a pořadí volání API. Dokonce i položky, které nejsou považovány za vstup, mohou být testovány. Jako například obsah databáze, sdílená paměť, nebo přesné prokládání vláken.

Pro bezpečnostní účely je nejpodstatnější vstup, který protíná hranice důvěry (vstup z nedůvěryhodných zdrojů). Například je mnohem důležitější testovat kód, který zpracovává nahrávání souboru libovolným uživatelem, než testování kódu který analyzuje konfigurační soubor, který je přístupný pouze privilegovaným uživatelům.

Reference editovat

V tomto článku byl použit překlad textu z článku Fuzz testing na anglické Wikipedii.