Библиотека сайта rus-linux.net
Фреймворк Talos
Глава 8 из книги "Производительность приложений с открытым исходным кодом".
Оригинал: Talos
Авторы: Clint Talbert, Joel Maher
Дата публикации: 21 Сентября 2012 г.
Перевод: А.Панин
Дата перевода: 17 Января 2014 г.
Одна из самых первых систем автоматизации компании Mozilla являлась фреймворком тестирования производительности под названием "Talos". Фреймворк Talos добросовестно сопровождался без значительных модификаций с момента завершения его разработки в 2007 году, несмотря на то, что многие начальные предположения и архитектурные решения, относящиеся непосредственно к Talos, были утрачены в процессе передачи управления развитием проекта в руки других разработчиков.
Летом 2011 года мы наконец начали замечать недовольство статистическим шумом в выводимых фреймворком Talos данных и их непостоянством, после чего приступили к размышлениям о том, как мы можем внести небольшое изменение в систему для начала ее последующей безболезненной модификации. Мы еще не задумывались о том, что открываем ящик Пандоры.
В данной главе мы детально рассмотрим наши открытия, совершенные в процессе последовательного рассмотрения уровней данного программного продукта, проблемы, с которыми мы столкнулись и шаги, которые мы предприняли для их решения, с надеждой на то, что вы сможете извлечь полезную информацию из наших ошибок и успехов.
Обзор
Давайте исследовать различные части фреймворка Talos. Сердцем Talos является простая система тестирования, средствами которой создается новый профиль Firefox, происходит его инициализация, калибровка браузера, выполнение заданного теста и, наконец, создание отчета о результатах теста. Тесты находятся в репозитории Talos и разделены на два типа: одностраничные тесты, после выполнения которых вычисляется значение отдельного показателя (например, время запуска функции сценария с помощью обработчика события onload
веб-страницы) и тесты на основе коллекций страниц, которые циклически загружаются в процессе тестирования для измерения времени загрузки страниц. На низком уровне для циклической загрузки страниц и сбора такой информации, как потребление памяти и время загрузки страниц, для принудительного запуска сборщика мусора и тестирования работы браузера в различных режимах, используется специализированное расширение Firefox. Изначальной целью создания фреймворка тестирования было создание настолько обобщенной системы тестирования, насколько это возможно для того, чтобы у нее была возможность выполнять все типы тестов и формировать некоторый набор показателей производительности, обозначенный самим тестом.
Для передачи собранных данных система тестирования Talos имеет возможность сохранять их в документе формата JSON и отправлять их серверу графического представления (Graph Server): находящемуся в комплекте поставки Talos веб-приложению для формирования графического отображения данных, которое принимает любые собранные Talos данные всегда, когда они соответствуют специфичному заранее установленному в рамках каждого теста формату значений, платформе и конфигурации. Сервер графического представления также предоставляет интерфейс для исследования тенденций изменения значений и поиска регрессий производительности. Локальная копия стандартного веб-сервера Apache предоставляет страницы в ходе тестирования.
Последним компонентом Talos является набор инструментов для сообщения о регрессиях. После каждой серии изменений кода в репозитории Firefox выполняется несколько тестов Talos, причем результаты выполнения этих тестов передаются соответствующему серверу графического представления, а другой сценарий получает данные от сервера графического представления и выясняет, присутствует ли в данном случае регрессия. В случае обнаружения регрессии (т.е., в том случае, когда проведенный сценарием анализ указывает на то, что проверенный внесенный в репозиторий код сделал производительность текущего теста значительно хуже, чем она была ранее), этот сценарий отправляет электронное сообщение в список рассылки, а также человеку, который внес вызывающий подозрение код в репозиторий.
- Статистический шум - сценарий, рассматривающий входящие данные, выводит такой объем результирующих данных теста со статистическим шумом, что фактические регрессии невозможно четко выявить.
- Для выявления регресии сценарий сравнивал результаты тестирования каждого изменения кода Firefox с результатами тестирования трех предыдущих и трех последующих версий кода. Это означает, что результаты тестирования вашего кода с помощью Talos могут не быть доступны в течение нескольких часов.
- Сервер графического представления предъявлял жесткое требование, заключающееся в том, что все входящие данные привязывались к ранее установленным платформе, ветви, типу теста и конфигурации. Это означает, что добавление новых тестов осложнялось необходимостью выполнения SQL-запроса к базе данных для каждого нового теста.
- Саму систему тестирования фреймворка Talos было сложно запускать из-за того, что требование к ее обобщенности было воспринято слишком буквально - она использовала этап "конфигурирования", предназначенный для генерации сценария конфигурации, который впоследствии использовался для выполнения теста на следующем этапе.
Рисунок 8.1 - Архитектура фреймворка Talos
В ходе работы над системой тестирования фреймворка Talos летом 2011 года, нацеленной на добавление поддержки новых платформ и тестов, мы столкнулись с материалами защиты кандидатской диссертации Jan Larres, в которых он исследовал значительный статистический шум, возникающий при выводе результатов после выполнения тестов средствами Talos. Он проанализировал различные факторы, включая используемые аппаратное обеспечение, операционную систему, файловую систему, драйверы, и версию Firefox, оказывающие в совокупности влияние на результаты выполняемого средствами Talos тестирования. Основываясь на этой работе, Stephen Lewchuk посвятил период своей стажировки работе, заключающейся в сокращении статистического шума, обнаруженного нами в ходе этих тестов.
Базируясь на работе и интересе упомянутых людей, мы начали формировать план ликвидации или сокращения статистического шума в данных, собираемых в результате выполнения тестов средствами Talos. Мы собрали разработчиков системы тестирования вместе для работы над самой системой тестирования, веб-разработчиков для усовершенствования сервера графического представления, а также людей, обладающих знаниями в области обработки статистических данных, для установления оптимального способа выполнения каждого из тестов с выводом предсказуемых результатов с минимальным статистическим шумом.
Продолжение статьи: Понимание измеряемых параметров.