Size: a a a

pro.graphon (and gamedev)

2021 April 09

AT

Anatoly Tomilov in pro.graphon (and gamedev)
Из последнего опыта: надо фаззить. Уже на очень маленьких инпутах могут находиться плохие случаи.
Вот, постигаю искусство фаззинга геометрии
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
А дальше понимать, как быть с плохими инпутами.
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
VRS с MSAA как-то совместно используется?
источник

d

disba1ancer in pro.graphon (and gamedev)
Фаззить?
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
y
источник

d

disba1ancer in pro.graphon (and gamedev)
Не понимаю
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
yes
источник

d

disba1ancer in pro.graphon (and gamedev)
А что это значит вообще (я про само действие)?
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
это значит генерировать случайные корректные инпуты для алгоритма в надежде, что код крашнется или вызовет abort (из assert-а, например)
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
есть более интеллектуальные способы
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
например прикрутить генетический алгоритм
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
там два оператора — кроссовера (смешиваешь два корректных инпута, чтобы получить другой корректный инпут) и мутации (из корректного инпута делаешь чуть-чуть другой корректный инпут)
источник

D

Deathwish in pro.graphon (and gamedev)
kd-tree, обязательно изучу гит репозиторий
источник

D

Deathwish in pro.graphon (and gamedev)
Может там лучше реализация, чем у меня есть
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
далее есть способы для отсеивания инпутов так, чтобы фаззинг лучше искал ошибки
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
например неплохо бы, чтобы набор инпутов вызывал срабатывание как можно большего количество бранчей, вызывал для рекурсивных функций разные глубины вызова (в т.ч. выявил условия при которых оно бесконечное) и т.п.
источник

D

Deathwish in pro.graphon (and gamedev)
Я просто хочу полностью реализовать kd-tree (почти сделано), r-tree и bvh. Именно на интерес, ну и получить структуры, чтобы перфоманс был хороший
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
например в if (a || b) хорошо бы обе "причины" срабатывания проверить
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
для этого существует profile-guided fuzzing — код собирается специальным образом (инструментируется) и во всех таких местах, где есть ветвление, вставляются дешёвые счётчики: заводится массив специальный (например, с unsigned char-ами) counters и в начале каждого (условно говоря) if и else ставится ++counters[i];. Периодически эти counters проверяются и если какой-то инпут привёл к тому, что какой-то новый, ещё не сработавший ранее счетчик (и соответственно путь исполнения) сработал, то такой инпут сохраняется. И потом уже генетическим алгоритмом мутируется или комбинируется с другими инпутами из так называемого "корпуса".
источник

d

disba1ancer in pro.graphon (and gamedev)
Это про генерацию входных данных для тестирования?
источник