pb-fuzz-workshop

Fuzz и Property-Based тесты в Go. Валерий Мелешкин, Алексей Палажченко. 25 апреля, 15:00 - 18:00.

Вы пишете тесты дни напролёт но ваш код всё равно падает со странным багом через неделю? Вы включили радио в машине, но отказали тормоза?! Что-то слышали про фаззинг, но не понимаете как его применить к вашему коду? На этом воркшопе мы:

  • погрузим наши руки в рандомизированные подходы тестирования: property based и fuzz testing;
  • обсудим их различия, плюсы, минусы и подводные камни;
  • поговорим о том, в каких ситуациях стоит применять эти подходы, а в каких – нет;
  • обсудим как не ломая голову определить подходящие для проверок свойства;
  • рассмотрим написание генераторов для сложных структур данных;
  • разберём код примеров разной сложности: от фаззинга и элементарных свойств вида ∀ X: decode(encode(X)) ≡ X до проверки эквивалентности модели с состоянием.

Сборка Go

Участникам воркшопа будет нужен установленный Go 1.16, git и любимый редактор кода. Также нужно будет скомпилировать ветку dev.fuzz репозитория Go из исходников. Для этого нужно запустить следующие команды в терминале:

git clone https://go.googlesource.com/go goroot
cd goroot/src
git checkout dev.fuzz

После чего запустить сборку: на macOS и Linux командой ./make.bash, на Windows – make.bat.

Проверить можно запустив команду go version. В выводе должно быть go version devel +7a7eee8ab7.

Дополнительная информация: https://golang.org/doc/install/source

Подготовка

git clone https://github.com/GopherConRu/pb-fuzz-workshop.git
cd pb-fuzz-workshop
make init