Как собрать генеративное тестирование на Zig в 256 строк
Для эксперимента с алгоритмом согласования состояния между узлами автор сначала за пару часов написал свою библиотеку, а затем тест, который сам собирает случайные сценарии. Он нашёл дюжину обычных ошибок в коде и глубокий изъян в самой идее алгоритма.
Парадокс в основе: генератор не создаёт бесконечный поток чисел, а читает заранее подготовленный массив байтов и сообщает, когда тот закончился. Из этих байтов тест выбирает узел, данные запроса и следующее действие: запрос, доставку сообщения или сбой.
В разборе реализации есть путь от выдачи байтов и целых чисел до взвешенного выбора событий в симуляции. Материал пригодится, если хочется понять механику генеративных тестов без большой готовой библиотеки и изучить самодостаточные примеры на Zig.
Post #14858
4.48K
matklad.github.io 256 Lines or Less: Test Case Minimization Property Based Testing and fuzzing are a deep and science-intensive topic. There are enough advanced techniques there for a couple of PhDs, a PBT daemon, and a client-server architecture. But I have this weird parlor-trick PBT library, implementable in a…
- ❤ 2
- 👏 2
- 🤔 2
- 😢 2
- 🔥 1
- 🏆 1
- 👻 1
- 😇 1
- 😨 1
- 🎅 1
- 🎄 1