Fuzz и Property-Based тесты в Go. Валерий Мелешкин, Алексей Палажченко. 25 апреля, 15:00 - 18:00.
Вы пишете тесты дни напролёт но ваш код всё равно падает со странным багом через неделю? Вы включили радио в машине, но отказали тормоза?! Что-то слышали про фаззинг, но не понимаете как его применить к вашему коду? На этом воркшопе мы:
- погрузим наши руки в рандомизированные подходы тестирования: property based и fuzz testing;
- обсудим их различия, плюсы, минусы и подводные камни;
- поговорим о том, в каких ситуациях стоит применять эти подходы, а в каких – нет;
- обсудим как не ломая голову определить подходящие для проверок свойства;
- рассмотрим написание генераторов для сложных структур данных;
- разберём код примеров разной сложности: от фаззинга и элементарных свойств вида ∀ X: decode(encode(X)) ≡ X до проверки эквивалентности модели с состоянием.
Участникам воркшопа будет нужен установленный 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