О чём я говорю, когда говорю о тестировании корректности работы компилятора

Тестирование, нагрузочное тестирование

Тестирование

C/C++
Tarantool
Отказоустойчивость
Методы и техника разработки ПО
Функциональное тестирование
Автоматизация тестирования
Lua

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

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

Фаззинг — вопрос непростой, но полезный многим. Из доклада узнаете о фаззинге простым языком и с примерами на Lua.

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

Разработчики компиляторов, продвинутые тестировщики и все, кому интересно тестирование сложных технологий.

Тезисы

Любая программа, запущенная на компьютере, была создана компилятором и, так как компиляторы являются важной частью инфраструктуры для создания программного обеспечения, их корректность имеет первостепенное значение. Чтобы проверить и повысить правильность поведения компиляторов, значительные усилия во время разработки направлены на тестирование компиляторов.

В Tarantool за поддержку языка Lua отвечает LuaJIT, который включает в себя как среду исполнения языка, так и трассирующий JIT-компилятор. Мы решили использовать фаззинг-тестирование для LuaJIT, потому что стандартное тестирование не позволяет выявить все проблемы во время разработки. Несмотря на популярность рандомизированного тестирования и множество доступных инструментов для фаззинга, нам пришлось изучить методы, показавшие эффективность при тестировании других компиляторов, и разработать собственные инструменты. Мы попробовали фаззинг без грамматики, фаззинг с грамматикой на основе LibFuzzer и LibProtobufMutator, собственный мутатор для Lua-программ и проверку оптимизаций с помощью SMT-решателя.

В докладе я расскажу про различные аспекты проблемы тестирования корректности компилятора, в том числе то, как генерировать случайные программы, какие тестовые оракулы использовать для определения того, правильно ли ведет себя компилятор, как эффективно выполнять тесты компилятора и эффективных методах тестированиях компиляторов на основе нашего опыта тестирования LuaJIT.

Разработчик в Tarantool.

Tarantool, VK

Tarantool — платформа in-memory-вычислений с гибкой схемой данных для эффективного создания высоконагруженных приложений. VK — это больше 200 технопроектов. Свыше 10 000 человек создают и развивают одни из самых популярных и высоконагруженных интернет-сервисов в стране. Делают комфортнее, легче и интереснее жизнь сотне миллионов людей.

Видео