Интеграционные тесты Rails: сокращение времени выполнения

Я хочу поделиться своими находками и услышать от других об успешных и неудачных попытках сократить время выполнения интеграционных тестов приложений Rails (будь то "обычные" тесты, основанные на Cucumber или RSpec).

Вопрос подразумевает, что тесты включают в себя базу данных, рендеринг представления и, возможно, JavaScript/AJAX. Ei test не заглушайте / не высмеивайте медленные части приложения.

1 ответ

Решение

Авторский ответ. Я попробовал две вещи: плагин Spork и базу данных в памяти. Моя конфигурация dev: Ubuntu VirtualBox, размещенная на Win7, Ruby 1.8.7, Rails 3, SQLite.

Плагин Spork уменьшил время запуска моих тестов с 35 до 2 секунд. Я суммировал здесь шаги, но они достаточно хорошо описаны в github readme. В этом посте также описывается, как использовать его с Guard для обеспечения перезапуска сервера spork при изменении файлов.

Я пытался использовать базу данных в памяти, чтобы сократить время выполнения. В некоторых случаях они сокращают время выполнения на 10%, но имеют 2-секундные накладные расходы на время запуска для создания схемы. И результаты очень больше, чем я мог наблюдать улучшение. Поэтому я решил для себя, что улучшение не стоит хлопот.

Также я использовал RVM для замены Ruby 1.8.7 на 1.9.2. Уменьшено время выполнения с 58 до 42 секунд.

Вывод: Spork и замена 1.8.7 на 1.9.2 могут значительно улучшить ваш опыт работы с TDD.

Другие вопросы по тегам