2010-12-29 4 views
-3

У меня есть проект, что тесты далеки от идеала. Для выполнения всех тестов требуется около 15 минут, и для меня это проблема. Каков максимум, который должен пройти тест рейка?Сколько стоит слишком много времени для запуска рейк-теста?

Я понимаю, что это личное дело, пожалуйста, напишите немного о том, почему, а также, или вставьте ссылку, чтобы оправдать свой ответ, пожалуйста.

+3

вы просили нас написать причины, почему ваши тесты так долго? Будете ли вы нас с нами по электронной почте своему боссу? – Bnjmn

+0

Будет ли это больше подходит программистам SE? –

ответ

3

В качестве базовой линии мое текущее приложение имеет 2 набора модульных тестов (для кода, не зависящего от рельсов, и для кода, зависящего от рельсов). 2 из самых трудоемких вещей при запуске rake в среде рельсов загружают рельсы и bundle exec. Именно поэтому мы переносим столько наших тестов в среду, не связанную с рельсами, и не связанную с пакетом. Поэтому, касаясь частей нашей существующей системы, мы перемещаем спецификации в секцию, не зависящую от рельсов.

Вот разбивка синхронизации наш текущий набор тестов:

времени грабли спецификации: no_rails Законченный в 0.14229 секунд 141 примеров, 0 сбоев

реальных 0m0.981s пользователя 0m0.783s SYS 0m0.168s

время рек спецификация Законченной в 11,86 секундах 677 примеров, 0 сбоев, 2 в ожидании

реального 0m28.613s пользователя 0m23.435s SYS 0m3.180s

Я уверен, что вы можете понять, почему мы двигаемся не Рельсы-зависимые примеры кода от Рельсы-зависимых из них. Есть еще несколько преимуществ для того, чтобы ваш код зависел от рельсов, но скорость тестов является одной из самых важных. Минимизация цикла обратной связи крайне важна, чтобы получить максимальную выгоду от ваших тестов в качестве регрессии.

ОБНОВЛЕНИЕ Так же, как и обновление, поскольку мы перемещаем вещи, вот текущая статистика для наших спецификаций. Мы определенно находим, что скорость должна быть преимуществом, а также расчетное давление, чтобы изолировать себя от рельсов. Когда вы быстро запускаете свои спецификации, вы можете запускать их чаще, что сводит к минимуму цикл обратной связи между выполнением чего-либо и наблюдением, работает ли система. время рек Spec: no_rails закончил в 0.36083 секундах 316 примеров, 0, 1 отказов в ожидании реального 0m1.019s пользователя 0m0.858s SYS 0m0.147s

времени грабли спецификации: with_rails Законченных в 12,86 секундах 706 примеров, 0 неудачи, 2 ожидающие реальных 0m21.316s пользователя 0m18.610s SYS 0m1.954s

2

Невозможно ответить, не зная подробностей. У вас много тестов? Я слышал о больших системах с сотнями или даже тысячами тестов, требующих часов для полного набора.

OTOH у вас может быть несколько тестов, которые бывают медленными. Пробовали ли вы сегментирование тестовых случаев, чтобы убедиться, что они занимают особенно длительное время? Есть ли у вас тесты, зависящие от потенциально медленных ресурсов, таких как операции с сетью или файловой системой?

+1

С другой стороны, Ruby1.9.2 имеет 940+ тестов и работает примерно через минуту. – EnabrenTane

+0

@EnabrenTane: Это всего в два раза больше тестов, чем у моего проекта работы. –

Смежные вопросы