diff --git a/case-study.md b/case-study.md new file mode 100644 index 0000000..b42d364 --- /dev/null +++ b/case-study.md @@ -0,0 +1,23 @@ +# Оптимизация времени выполнения тестов + +Для оптимизации был выбран рабочий проект. + +Тест сьют рабочего проекта выполняется на 5 параллельных воркерах и +среднее время выполнения тестов составляет 17 минут. + +Вывод результатов тестов указывает 10 самых медленных тестов и 10 самых медленных групп тестов. +Собственно, точками роста были взяты медленные тесты и группы тестов. + +Основным интрументом для оптимизации был FactoryProf из пакета`test-prof`. +Анализ тестов FactoryProf показал, что большинство тестов выполняются медленно из-за создания ассоциаций. +Для ускорения создания ассоциаций было внесены изменения в фабрики как на примере ниже: +```ruby +factory :user do + account { Account.first || create(:account) } +end +``` +Из интересного было обнаружено, что Resolv.getaddress(host) занимает до 20 секунд на выполнение, +и правильный мок метода позволил ускорить выполнение тестов. + +После оптимизации тестов среднее время выполнения тестов 12 минут. +Таким образом, скорость выполнения тестов ускорена на 40 процентов. \ No newline at end of file