Доклады и подкасты
2022, Highload: О чём я говорю, когда говорю о тестировании корректности работы компилятора
Материалы: cлайды, видеозапись.
Любая программа, запущенная на компьютере, была создана компилятором и, так как
компиляторы являются важной частью инфраструктуры для создания программного
обеспечения, их корректность имеет первостепенное значение. Чтобы проверить и
повысить правильность поведения компиляторов, значительные усилия во время
разработки направлены на тестирование компиляторов.
В Tarantool за поддержку языка Lua отвечает LuaJIT, который включает в себя как
среду исполнения языка, так и трассирующий JIT-компилятор. Мы решили
использовать фаззинг-тестирование для LuaJIT, потому что стандартное
тестирование не позволяет выявить все проблемы во время разработки. Несмотря на
популярность рандомизированного тестирования и множество доступных инструментов
для фаззинга, нам пришлось изучить методы, показавшие эффективность при
тестировании других компиляторов, и разработать собственные инструменты. Мы
попробовали фаззинг без грамматики, фаззинг с грамматикой на основе LibFuzzer и
LibProtobufMutator, собственный мутатор для Lua-программ и проверку оптимизаций
с помощью SMT-решателя.
В докладе я расскажу про различные аспекты проблемы тестирования корректности
компилятора, в том числе то, как генерировать случайные программы, какие
тестовые оракулы использовать для определения того, правильно ли ведет себя
компилятор, как эффективно выполнять тесты компилятора и эффективных методах
тестированиях компиляторов на основе нашего опыта тестирования LuaJIT.
Тезисы доклада на сайте конференции.
2022, Heisenbug: Делаем фаззер для Lua на основе LibFuzzer
Материалы: cлайды, видеозапись.
Один из компонентов СУБД Tarantool — это сервер приложений на Lua, который
предоставляет Lua API к самой СУБД и четырем десяткам вспомогательных модулей.
До сих пор тестирование функциональности с помощью Lua ограничивалось
тестированием на основе примеров. Рандомизированное тестирование было
ограничено из-за отсутствия поддержки Lua в фаззерах. Спикер реализовал
поддержку фаззинга Lua-скриптов в популярных движках American Fuzzy Lop и
libFuzzer, что позволило найти проблемы, которые не находили другие тесты.
Доклад будет интересен всем, кто разрабатывает серверное ПО, интересуется
рандомизированным тестированием или планирует добавить поддержку нового языка в
AFL или libFuzzer. Знание Lua не потребуется.
2022, Highload: Jepsen с человеческим лицом
Материалы: видео, cлайды, Фреймворк Jepsen и его минусы.
Jepsen - это популярная библиотека для тестирования согласованности в
распределённых системах. Jepsen позволяет тестировать распределённые системы
как чёрный ящик и проверять насколько система ведёт себя корректно в
соответствии с выбранной моделью согласованности. Чтобы убедиться в
эффективности Jepsen достаточно почитать отчёты о тестировании с её помощью
таких популярных проектов, как etcd, mongodb и другие. Когда в Tarantool
появилась поддержка синхронной репликации, то мы решили сделать несколько
тестов для Tarantool с использованием Jepsen. И этой задачей занимался я. До
этого я сталкивался с различными библиотеками для написания тестов: pytest,
avocado, самописные фреймворки. И после использования Jepsen у меня остались
смешанные чувства. С одной стороны это библиотека, которая с высокой
вероятностью поможет найти проблемы с репликации и MVCC, бери, да пользуйся. А
с другой стороны Jepsen неидеален, в ней есть несколько проблем, без которых
она была бы ещё лучше. Вот про эти проблемы, присущие Jepsen, я и хотел здесь
написать.
В мини-докладе я презентовал три инструмента для тестирования распределенных
систем: molly - фреймворк на языке Lua для
написания тестов в стиле Jepsen,
elle-cli - чекер истории операций и
unreliablefs - ФС для эмуляции
различных видов сбоев.
2020, Подкаст GenericTalks: S02E07 - Тестирование Системного Програмного Обеспечения
2016, Heisenbug: Просто о сложном в тестировании СУБД на примере PostgreSQL
Материалы: видео, слайды.
В наше время базы данных используются повсеместно: от интернет-форума для
хранения сообщений пользователей до распределённых поисковых систем для
хранения индексов отсканированных веб-страниц. Да что там говорить — сейчас
встраиваемые БД есть в любом телефоне. PostgreSQL давно заняла нишу надёжной,
расширяемой, реляционной базы данных, которая находит применение и в простом
интернет-сервисе, и в высоконагруженном портале, как Avito или Яндекс.Почта. В
компании PostgresPro Сергей и команда занимаются разработкой новой
функциональности для PostgreSQL под нужды заказчиков. Сергей расскажет о
проблематике тестирования баз данных и о своём опыте того, как добивается
качества в разработке PostgreSQL.
2016, Интервью в журнале “Linux Format”: №01 (204) Январь 2016
Материалы: вырезка из журнала.
2016, Подкаст SDCast: Выпуск № 47: в гостях Сергей Бронников и Владимир Порохов, ребята из команды OpenVZ/Virtuozzo
Эпизод на сайте подкаста
2015, Linux Plumbers: Containers in the upstream kernel
Материалы: слайды.
Исторически так сложилось, что мы в компании Parallels/SWsoft разрабатывали
собственные ядра OpenVZ/Virtuozzo как ответвления от ванильных (а позже и RHEL)
ядер с массивными наборами исправлений и множеством дополнительных функций.
Однако в течение последних 10 лет мы усердно работали над внедрением этих
функций в исходное ядро, и это было выгодно как нам (меньше кода для
портирования на новые ядра), так и другим (скажем, LXC и Docker теперь могут
использовать ванильное ядро). Хотя исходное ядро достаточно хорошее, оно все
еще не соответствует уровню OpenVZ.
Мы только что закончили портирование ядра OpenVZ с ядра RHEL6 (на основе
2.6.32) на ядро RHEL7 (на основе 3.10). На этой сессии мы обобщаем наш опыт и
выводы, включая ответы на то, чего все еще не хватает в основном ядре. На
сессии также излагаются наши планы внести свой вклад в развитие основной ветки ядра.
2015, ВМК МГУ: Как разрабатывать коммерческое ПО с высокой долей инноваций
Материалы: видео (часть 1, часть 2), слайды.
2015, OSDEVCONF: Когда уже OpenVZ будет в основном Linux ядре?
Материалы: YouTube, 0x1.tv,
слайды.
Доклад о том, что делать форк открытого проекта вредно для здоровья, потому что
поддержка форка требует больших усилий.
Докладчик расскажет об опыте работы с разработчиками основной ветки Linux ядра
в плане интеграции патчей для контейнерной виртуализации, наших успехах в этом
направлении и предстоящих планах.
2015, LVEE: Мифы и легенды о проекте OpenVZ
Материалы: YouTube, 0x1.tv, слайды.
В 1999 году в компании SWsoft (Parallels) родилась концепция контейнерной
виртуализации. Сотрудники компании сформулировали три главных компонента,
составляющих контейнеры: набор процессов с изоляцией пространства имен,
файловая система для разделения кода и памяти и изоляция ресурсов. В 2000 году
сотрудники компании подготовили концепт коммерческого продукта Virtuozzo,
который позволял создавать в ОС Linux изолированные окружения (контейнеры). В
2002 году компания выпускает публичную версию Virtuozzo и в том же году
появляются первые коммерческие пользователи. В 2005 году компания Parallels
запускает проект OpenVZ для разработки открытой реализации Linux контейнеров. В
рамках этого проекта команда проекта разрабатывает Linux ядро с поддержкой
контейнеров, утилиту для управления контейнерами и другие вспомогательные
утилиты. За прошедшие 10 лет проект приобрёл популярность. OpenVZ используют не
только как платформу для хостинга, но и для инфраструктурных задач, требующих
изоляции приложений. За время существования проекта появились мифы и
заблуждения о проекте, которые не получилось развенчать ответами на форумах, в
блогах и почтовых переписках. Одни и те же вопросы возникают снова и снова.
Этот доклад призван окончательно развенчать мифы о проекте OpenVZ.
Тезисы на сайте конференции.
2015, РИФ: Семь проблем Linux контейнеров
Материалы: видео,
слайды.