• Проекты
  • Услуги
  • Блог
  • Доклады

Доклады и подкасты

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 - Тестирование Системного Програмного Обеспечения

Your browser does not support the audio element.

2016, Heisenbug: Просто о сложном в тестировании СУБД на примере PostgreSQL

Материалы: видео, слайды.

В наше время базы данных используются повсеместно: от интернет-форума для хранения сообщений пользователей до распределённых поисковых систем для хранения индексов отсканированных веб-страниц. Да что там говорить — сейчас встраиваемые БД есть в любом телефоне. PostgreSQL давно заняла нишу надёжной, расширяемой, реляционной базы данных, которая находит применение и в простом интернет-сервисе, и в высоконагруженном портале, как Avito или Яндекс.Почта. В компании PostgresPro Сергей и команда занимаются разработкой новой функциональности для PostgreSQL под нужды заказчиков. Сергей расскажет о проблематике тестирования баз данных и о своём опыте того, как добивается качества в разработке PostgreSQL.

2016, Интервью в журнале “Linux Format”: №01 (204) Январь 2016

Материалы: вырезка из журнала.

2016, Подкаст SDCast: Выпуск № 47: в гостях Сергей Бронников и Владимир Порохов, ребята из команды OpenVZ/Virtuozzo

Your browser does not support the audio element.

Эпизод на сайте подкаста

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 контейнеров

Материалы: видео, слайды.

© 2013–2023, Сергей Бронников