Первые официально опубликованные результаты исследований, посвящённые тестированию поведения программ при использовании псевдослучайных внешних данных, проводились в начале 80-х годов XX века в Юго-Западном исследовательском институте в Сан-Антонио и в Техасском университете в Далласе. При этом, по воспоминаниям Джеральда Вайнберга, работавшего в НАСА на проекте «Меркурий» по запуску первого человека в космос, в 50-х годах XX века тестирование разрабатываемого программного обеспечения проводилось на пачках перфокарт, вынутых из мусорных корзин или случайно перемешанных. В 1970 году была представлена работа, в которой описывается метод псевдослучайной генерации по заданной грамматике синтаксически корректных программ для тестирования компиляторных фронтендов. В 1983 году Стив Кэппс разработал инструмент The Monkey для тестирования программы MacPaint. Через специальный программный интерфейс инструмент подключался к программе и с высокой скоростью, как будто компьютером управляла злая обезьяна, генерировал псевдослучайные последовательности нажатий клавиш на клавиатуре и воздействий на манипулятор «мышь». Фактически The Monkey является первым известным примером промышленного инструмента тестирования программы на устойчивость к ошибочным внешним данным программы.
Термин «фазз» (англ. fuzz – неточный, расплывчатый) впервые упомянут в названии исследовательского проекта «Operating System Utility Program Reliability – The Fuzz Generator», который проводился в Висконсинском университете в Мадисоне с 1988 года под руководством профессора Барта Миллера. В статье, посвящённой описанию предложенного метода и результатам исследования, рассказывается, что на идею исследования техники случайного отрицательного тестирования программ натолкнула ситуация, когда один из авторов подключился по телефонной линии с использованием модема к удалённой компьютерной системе в ночь, когда был ураган с дождём. Дождь сильно влиял на качество связи и приводил к тому, что на вход утилитам командной строки подавались неправильные аргументы в связи со случайно внедрёнными неправильными символами. Подобный шум из-за влияния дождя на линию был ожидаем, но совершенно неожиданным наблюдением стало то, что получение на вход некорректных аргументов командной строки приводило к аварийному завершению утилит операционной системы. Данное наблюдение натолкнуло авторов исследования на идею автоматического тестирования программ путём генерации псевдослучайных внешних данных, или фаззинга. Авторы исследования описывают свой метод не как замену тестированию или формальной верификации, а как недорогой механизм обнаружения ошибок с целью увеличения надёжности системы в целом. При этом использовался очень грубый показатель корректности: программа считалась повреждённой, если в процессе её исполнения происходило аварийное завершение работы программы или обнаруживалось её зависание. Если представить программу как сложный конечный автомат, то предложенный механизм можно описать как случайный обход пространства состояний этого конечного автомата с целью поиска неопределённых состояний. #история