Skip to content

GopherConRu/pb-fuzz-workshop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

09e458d · Apr 25, 2021

History

19 Commits
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021

Repository files navigation

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