Что вы посоветуете для тестирования моего приложения Ruby on Rails? - PullRequest
1 голос
/ 15 сентября 2011

Я использую Ruby on Rails 3.0.10 и планирую перейти на версию i 3.1 как можно скорее.С новой версией RoR я планирую также добавить автоматизированные тесты в мое приложение.

  1. Что вы посоветуете для тестирования моего приложения?
  2. DoВы советуете какую-нибудь книгу для чтения и \ или программное обеспечение для использования?
  3. Если я начну писать тесты для RoR 3.0.10, они будут доступны и совместимы с RoR 3.1?

В двух словах я хотел бы знать все о тестировании, которое я могу, должен и должен использовать для улучшения своих приложений ( также для тестирования кода jQuery-JavaScript).

Ответы [ 3 ]

2 голосов
/ 15 сентября 2011

Что вы подразумеваете под автоматизированными тестами?

Если вы имеете в виду модульные / функциональные / интеграционные тесты, то вы должны иметь их перед обновлением до Rails 3.1.Они будут очень полезны для определения того, где происходит сбой во время обновления, и когда все они пройдут, вы можете быть уверены, что ваше приложение снова заработает.

Если под автоматизированными тестами вы подразумеваете нечто более высокое,как и тестирование пользовательского интерфейса (именно это я и интерпретирую), я бы предложил Watir или Selenium .Подобные тесты все еще должны функционировать и не будут зависеть от базовой реализации (будь то Rails 3.0.10 или 3.1).Пока приложение все еще работает, эти тесты будут работать.

1 голос
/ 16 сентября 2011
  1. Использование Rspec 2
  2. Использование Капибара
  3. Использование Spork
  4. Использование Guard

Guard + Spork (+ Rspec + Capybara) = Автоматическое тестирование.

Я не рекомендую использовать огурец.Все любят огурец, но это гораздо больше работы, чем стоит.Это слой регулярных выражений поверх того, что вы можете очень легко сделать с помощью Rspec + Capybara с новой функцией приемочного тестирования (это был отдельный гем, теперь он включен в rspec).

Когда вы создаете свое приложение, я рекомендую следующее:

  1. Поскольку вы концептуализируете свои модели , напишите описания испытаний моделей Rspec.Такие вещи, как it "should save a :start_date".Сначала начните строить свои модели, написав тесты для атрибутов (какие значения start_date он принимает, как обрабатывать недопустимые значения и т. Д.).Затем при необходимости напишите интеграционные тесты между моделями.Это тесты модель , а не тесты unit .Когда вы пишете тесты для атрибутов модели, это модульные тесты (тесты изолированного класса).Когда вы тестируете функциональность между моделями (когда я делаю user.posts.create(:title => "My first blog post"), я ожидаю, что для этого пользователя создается пост), это, на мой взгляд, "интеграционные" тесты.В Rspec это «модельные» тесты.
  2. После того, как вы познакомитесь с некоторыми основами ваших моделей, write view tests .Чтобы реализовать утверждения в тестах представлений, вам понадобятся настройки Spork, Guard и Capybara.И тогда вам нужно написать свой Haml ... а затем код вашего контроллера ... В конце концов, вы будете писать код, чтобы пройти тест представления.Идея проведения тестов как контроллера, так и представления является излишней.С помощью приемочных тестов Rspec + Capybara вы можете поместить все в каталог spec/acceptance.Экономит ваше время и много мыслей.В конце вы тщательно тестируете свои модели и полностью выполняете запросы / html.
  3. По мере того, как ваше приложение становится больше, тесты будут выполняться намного дольше.Все тесты могут легко занять 10-20 минут!Это быстро отключит вас, особенно если вам нужно просто исправить опечатку перед повторным нажатием.Чтобы избежать этого, найдите умные способы использования начальных данных (данные, которые вам не нужно воссоздавать между каждым тестом), или умные способы использования ложных данных, и настройте Spork.Не перегружая сервер Rails между тестовыми прогонами, вы сокращаете ТОННУ времени.А с Guard + Spork вам не нужен автотест (автотест устарел).
  4. Если вы хотите пойти еще дальше, вы можете протестировать свой javascript.Это все еще очень новая область.Сейчас есть два подхода: 1) использовать Capybara с драйвером с поддержкой javascript (селен - единственный, который действительно работает на этом посте), или 2) использовать jasmine .Я бы подождал, если ваше приложение не является «чисто javascript» приложением.

Для тестов Javascript я думаю создать какой-то слой node.js / websocket, который позволяет вам запускать тесты жасмина локально на вашем тестовом сервере Rails + Spork, на вашем Mac и Windows (через Parallels или VMWare Fusion или что-либо еще), является гораздо лучшим способом для тестирования view + javascript, потому что вы получаетевсе приложение, как оно есть на самом деле.

Это все, что вам нужно на данный момент для создания надежного приложения на Rails.Надеюсь, это поможет, Ланс.

0 голосов
/ 15 сентября 2011

Прежде всего, перед написанием кода должны быть написаны тесты.

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

Я предпочитаю использовать rspec и огурец вместе.Это два разных подхода тестирования TDD (rspec) и BDD (огурец).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...