Как сделать тесты надежными: property-based-тестирование и fuzzing на практике Проблемы и приключения
Программист в команде инфраструктуры ВКонтакте. Разрабатывает специализированные базы данных и другие компоненты инфраструктуры.
До работы во ВКонтакте разрабатывал mission critical-системы для морских судов.
Тезисы
Большинство разработчиков считают, что fuzzing - это когда какому-нибудь json-парсеру подают случайные строчки в надежде найти segfault. Это важный кейс, но если посмотреть шире, эта технология может предоставить гораздо больше возможностей практически каждому разработчику. Например, можно особым образом генерировать входные параметры для вашей системы и проверять, всегда ли она работает так, как вы ожидали. То есть проверять не набор отобранных примеров, а свойство системы.
Такой метод тестирования называется property based testing. Он уже давно используется в нашей команде и дает большую уверенность в работоспособности нашего кода. В докладе я расскажу, что это такое, и покажу реальные примеры, где один такой тест заменяет десятки классических юнит-тестов.
