Как сделать тесты надежными: property-based-тестирование и fuzzing на практике

Проблемы и приключения

Доклад принят в программу конференции

Мнение Программного комитета о докладе

Property-based-тестирование существует уже более 20 лет, но используется довольно редко. А зря, ведь этот подход может избавить от необходимости придумывать кучу тест-кейсов для юнит-тестов. Николай расскажет, чем этот подход отличается от фаззинга и как его применить в вашем проекте.

Целевая аудитория

Разработчики, которые что-то слышали о property based-тестировании и fuzzing, но думают, что в их кейсах эти технологии неприменимы.

Тезисы

Большинство разработчиков считают, что fuzzing - это когда какому-нибудь json-парсеру подают случайные строчки в надежде найти segfault. Это важный кейс, но если посмотреть шире, эта технология может предоставить гораздо больше возможностей практически каждому разработчику. Например, можно особым образом генерировать входные параметры для вашей системы и проверять, всегда ли она работает так, как вы ожидали. То есть проверять не набор отобранных примеров, а свойство системы.

Такой метод тестирования называется property based testing. Он уже давно используется в нашей команде и дает большую уверенность в работоспособности нашего кода. В докладе я расскажу, что это такое, и покажу реальные примеры, где один такой тест заменяет десятки классических юнит-тестов.

Николай Климов

VK, ВКонтакте

Программист в команде инфраструктуры ВКонтакте. Разрабатывает специализированные базы данных и другие компоненты инфраструктуры.

До работы во ВКонтакте разрабатывал mission critical-системы для морских судов.

VK, ВКонтакте

ВКонтакте — крупнейшая социальная сеть в России и странах СНГ. Ставят перед собой масштабные вызовы и делают технологии доступными для каждого пользователя. ВКонтакте помогает решать любые повседневные задачи — и даже больше!

Видео

Другие доклады секции

Проблемы и приключения