SHAREWOOD
![SHAREWOOD](/data/avatars/m/212/212047.jpg?1574700945)
SHAREWOOD
Редактор
- Регистрация
- 25/11/2019
- Сообщения
- 131.157
- Репутация
- 71.782
Складчина: Профилирование и оптимизация тестов Rails-приложений [Тариф: Слушатель] [Thinknetica] [Владимир Дементьев]
Описание:
Этот воркшоп нацелен на Ruby и Rails разработчиков, желающих ускорить временные рамки выполнения тестов на CI и/или локально. C его помощью вы сможете минимизировать время между публикацией обновлений и их реализацией, а также сократить затраты на CI-инфраструктуру.
Что предстоит?
- Методы
Обсудим различные методы профилирования и оптимизации тестов, придерживаясь стратегии "максимальная эффективность с минимальными изменениями" (ведь никто не будет переписывать тесты или менять архитектуру программы, чтобы увеличить скорость тестов). - Инструментарий
Изучим общедоступные инструменты для профилирования Ruby-приложений, такие как Stackprof и Vernier, а также подробно ознакомимся с специализированным пакетом TestProf. - Умения
Полученные навыки можно будет мгновенно применить на своих проектах. Не удивляйтесь, если всего за несколько часов вы сможете увеличить скорость ваших тестов в несколько раз!
День 1. Столкновение с медленными тестами. Профилирование тестов как стандартного кода на Ruby.
Вначале обсудим, почему медленное выполнение тестов влияет на процесс разработки. Разберем способы ускорения тестов без необходимости профилирования и оптимизации тестового кода.
Затем попробуем применить стандартные методы для выявления слабых мест в коде на Ruby для оптимизации тестов. Узнаем, какие типы проблем они способны выявить и как решать эти проблемы.
Вы получите:
- информацию о альтернативных методах ускорения тестов, которые не требуют профилирования и рефакторинга, и их ограничениях;
- практический опыт использования таких инструментов профилирования, как StackProf, RubyProf, Vernier;
- навыки чтения flamegraphs;
- знания о распространенных проблемах конфигурации тестов, влияющих на скорость выполнения.
Ознакомимся с инструментами профилирования, включенными в TestProf, которые помогают уточнить область рефакторинга тестов для минимизации соотношения затрат к получаемому ускорению:
- научитесь выделять медленные типы при помощи TagProf;
- сможете оценить влияние определенных методов или событий в коде на быстродействие с помощью EventProf;
- разберетесь, как делать профилирование использования фабрик при помощи FactoryProf.
Вы сможете:
определить небольшой набор тестов, чья оптимизация, с одной стороны, приведет к значительному увеличению скорости, а с другой — позволит разработать набор техник рефакторинга, специфичный для приложения.
День 3. Ускорение тестов через повторное использование данных. Автоматизация профилирования и рефакторинга.
В заключительной части мы перейдем к оптимизации конкретных файлов и познакомимся с инструментами TestProf для повторного использования данных в тестах:
- before_all / let_it_be для повторного использования данных в контексте RSpec (локальные фикстуры);
- AnyFixture для генерирования глобальных фикстур программным методом.
В результате вы:
сформулируете методы рефакторинга тестов, специфичные для вашего проекта, которые могут быть применены к тестовым файлам для достижения желаемого увеличения скорости.
В завершение обсудим возможности автоматизации, представленные TestProf, в частности TestProf Autopilot.
Автор
Владимир Дементьев
разработчик в Evil Martians, создатель TestProf, contribute в Rails, лауреат Ruby Hero Russia 2017
- RoR-разработчик со стажем в 15 лет.
- Разработчик в EvilMartians
- Имеет навыки работы не только с RoR, но и c Erlang, Python, ActionScript, С++, Java
- Коммитер в Rails, создатель гемов AnyCable и LiteCable
- Регулярно участвует в международных Ruby-конференциях наравне с DHH и Матцем
Материал «Профилирование и оптимизация тестов Rails-приложений [Тариф: Слушатель] [Thinknetica] [Владимир Дементьев]», возможно, скоро появится на SHAREWOOD.
Воспользуйтесь поиском, может быть, он уже опубликован.