Skip to content

Commit 522c024

Browse files
committed
Test-suite optimization
1 parent b38af28 commit 522c024

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

case-study.md

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# Оптимизация времени выполнения тестов
2+
3+
Для оптимизации был выбран рабочий проект.
4+
5+
# Подготовка
6+
7+
Первое что необходимо было сделать это замерить текущее время прогона всех тестов
8+
и настроить отправку этой метрики в `InfluxDB`.
9+
10+
Изначальное время выполнения `1444` тестов оказалось почти `6` минут:
11+
12+
```
13+
Finished in 5 minutes 54 seconds (files took 3.78 seconds to load)
14+
1444 examples, 0 failures
15+
```
16+
17+
С отправкой метрик в `InfluxDB` возникли некоторые сложности.
18+
19+
Вначале я хотел сделать отправку в cloud версию этой БД что бы не пришлось её разворачивать у себя,
20+
но по какой то причине данные туда не уходили, соединение с сервисом отваливалось по таймауту,
21+
так что пришлось отказаться от этой идеи.
22+
23+
После чего я решил развернуть эту БД у себя локально с помощью `docker`-а. В процессе работы было выяснено
24+
что в `Chronograf`-е особой необходимости нет, т.к. контейнер с `InfluxDB` уже предоставляет неплохой
25+
интерфейс с возможностью отрисовки графиков и создания Dashboard-ов.
26+
27+
Итоговый конфиг в докере для `InfluxDB` оказался таким:
28+
29+
```yml
30+
services:
31+
influxdb:
32+
image: influxdb
33+
ports:
34+
- '8086:8086'
35+
volumes:
36+
- influxdb-storage:/var/lib/influxdb2
37+
38+
volumes:
39+
influxdb-storage:
40+
```
41+
42+
В этой конфигурации данные успешно уходят в `InfluxDB`.
43+
44+
# Оптимизация
45+
46+
## parallel_tests
47+
48+
После распараллеливания время прогона тестов упало с `360` до `150` секунд.
49+
50+
### TODO
51+
52+
Наибольшее время занимает прогон `feature` тестов, требующих браузера.
53+
В дальнейшем, по мере увеличения количества тестов,
54+
можно будет разделить запуск тестов на тесты требующие браузер (и долго выполняющиеся) и все остальные.
55+
И локально запускать только быстрые, не требующие браузера, тесты.
56+
Полный прогон в любом случае будет выполняться в CI.

0 commit comments

Comments
 (0)