Преимущества фаззинга при динамическом анализе кода:
- Возможность автоматически находить ошибки в сложном коде с большим количеством ветвлений. 1 Фаззинг может обнаружить ошибки, которые почти невозможно найти при ручном и статическом анализе. 1
- Поиск ошибок, которые не получается обнаружить в ходе других видов тестирования. 2
- Возможность убедиться в безопасности программного обеспечения. 2 Фаззинг помогает выявить слабые места, которые могут эксплуатироваться для межсайтового скриптинга, SQL-инъекций, DoS-атак и других угроз. 2
- Минимизация человеческого участия в процессе анализа. 2 Машинное тестирование обходится гораздо дешевле, чем проверки, выполняемые командой разработчиков. 2
Некоторые недостатки фаззинга:
- Необходимость в специалистах высокого уровня. 1 Они должны хорошо понимать особенности тестируемого продукта, разбираться в компьютерной безопасности, низкоуровневой работе программного кода и его компиляции и даже нюансах работы операционных систем. 1
- Затраты на аппаратные ресурсы. 1 При внедрении фаззинг-тестирования стоит учитывать эти расходы. 1
- Значительные временные затраты. 23 Чем быстрее проводится анализ, тем меньше шансов обнаружить серьёзные проблемы. 2
- Возможность фиксировать лишь ошибки, приводящие к аварийному завершению (ошибки сегментирования, вызовы assert() и другие) либо к зависанию программы. 4