Skip to content

Commit 1390da4

Browse files
committed
Added tests optimizations case-study
1 parent 9496bb6 commit 1390da4

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

case-study.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
Решил оптимизировать мой текущий проект(~83% покрытия и 1905 тестов), тесты гонялись в один поток ~10 минут, но уже ранее до того как начал проходить курс я предложил использовать parallel tests и скорость прогона упала до ~2.7 минут на моей локальной машине(12 потоков), к сожалению в ci используем только одно ядро так что parallel tests тут не помог
2+
3+
# Шаг 1
4+
начал с RD_PROF и он мне показал 5 самых медленных тестов, один из которых гонялся ~1 минуту
5+
6+
использовал let_it_be в нужных местах и скорость прогона в целом упала до 1,8 минут
7+
8+
с let_it_be были проблемы, то он не хотел работать с тестами вложенные в несколько контекстов, то не хотел работать с timecop и прочее но главной проблемой было то что если запустить файл с тестами то они проходили но если запустить все тесты в проекте то часть тестов не проходила, поскольку он почему то для фабрик сбрасывал ассоциации которые были нужны в тесте, нативного решение не нашел и пришлось переписать тест так что бы ассоциации создавалась прямо внутри теста.
9+
но в целом let_it_be очень крутая находка.
10+
11+
12+
# Шаг 2
13+
Потом пошел проверять фабрики и картинка была довольно печальной, переделывать фабрики не стал так как времени на это не хватало, но что уже примерно с этим можно сделать я уже знаю.
14+
15+
# Results
16+
В целом время на выполнение тестов было равномерно размазано и дергать каждый по отдельности заняло бы много времени.
17+
18+
так же я попробовал запускать все инструменты из скринкастов что бы прощупать.
19+
20+
let_it_be помог решить проблему когда после паралелльного прогона в конце хвостиком шел очень медленный тест который тратил целую минуту на свое завершение.
21+
22+
Конечно в плане оптимизации тестов в проекте непаханое поле, но проект скоро сдавать и на это времени нет(((
23+
24+
в качестве челенджа в будущем попробую запускать тесты прям в оперативной памяти держа базу в ней
25+
26+
Результат оптимизации:
27+
28+
![Результат оптимизации](https://i.imgur.com/HIptMAH.png)

0 commit comments

Comments
 (0)