Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test-suite optimization #41

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions case-study.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Оптимизация времени выполнения тестов

Для оптимизации был выбран рабочий проект.

# Подготовка

Первое что необходимо было сделать это замерить текущее время прогона всех тестов
и настроить отправку этой метрики в `InfluxDB`.

Изначальное время выполнения `1444` тестов оказалось почти `6` минут:

```
Finished in 5 minutes 54 seconds (files took 3.78 seconds to load)
1444 examples, 0 failures
```

С отправкой метрик в `InfluxDB` возникли некоторые сложности.

Вначале я хотел сделать отправку в cloud версию этой БД что бы не пришлось её разворачивать у себя,
но по какой то причине данные туда не уходили, соединение с сервисом отваливалось по таймауту,
так что пришлось отказаться от этой идеи.

После чего я решил развернуть эту БД у себя локально с помощью `docker`-а. В процессе работы было выяснено
что в `Chronograf`-е особой необходимости нет, т.к. контейнер с `InfluxDB` уже предоставляет неплохой
интерфейс с возможностью отрисовки графиков и создания Dashboard-ов.

Итоговый конфиг в докере для `InfluxDB` оказался таким:

```yml
services:
influxdb:
image: influxdb
ports:
- '8086:8086'
volumes:
- influxdb-storage:/var/lib/influxdb2

volumes:
influxdb-storage:
```
В этой конфигурации данные успешно уходят в `InfluxDB`.

# Оптимизация

## parallel_tests

После распараллеливания время прогона тестов упало с `360` до `150` секунд.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍


### TODO

Наибольшее время занимает прогон `feature` тестов, требующих браузера.
В дальнейшем, по мере увеличения количества тестов,
можно будет разделить запуск тестов на тесты требующие браузер (и долго выполняющиеся) и все остальные.
И локально запускать только быстрые, не требующие браузера, тесты.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, это хорошая идея, так намного приятнее работать

А если что-то сломается, то CI подскажет. Но CI конечно тоже не хотелось бы чтоб сильно тупил. Можно например только перед мержем в мастер требовать чтобы браузерные тесты прогонялись или что-то в этом духе

Полный прогон в любом случае будет выполняться в CI.
Binary file added tests-duration.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.