Комментарии 7
Стоит отметить, что Go — это первый из распространённых языков, в котором есть встроенный фаззер.
LibFuzzer (C/C++) был раньше
Конечно, фаззеры появились задолго до языка Go. Это, например, CrashMe, ClusterFuzz, AFL, libFuzzer и другие.
ClusterFuzz это инфраструктура для фаззинга
И Go использует LibFuzzer (C/C++)
Спасибо, поправил формулировку и убрал ClusterFuzz из списка.
Да, это тоже фаззинг, но фаззинг без обратной связи. Если вам тоже интересно тестирование компиляторов с помощью фаззинга, то возможно заинтересует доклад на эту тему:
Доклад посмотрю, спасибо!
Фаззер для PHP/KPHP не вполне доделан, так что рановато пока говорить о результатах. Там сейчас очень плохой раннер, которые запускает генератор и проверяет результаты, а генератор более-менее нормальный. Какие-то проблемы нашлись, но хотелось бы большего.
В нашем конкретном случае есть ещё проверка того, что output у программ, запущенных на двух реализациях (компилируемый KPHP и интерпретатор PHP), одинаковый.
Что такое фаззинг и зачем он нужен?