Сквозное тестирование веб-службы RESTful (Rails)

Я пытаюсь отсеять множество тестовых решений, и я даже не уверен, что иду правильное направление. История такова: мы запускаем веб-службу RESTful, реализованную как приложение Rails, которое поддерживает наших мобильных клиентов. Мы модульное тестирование веб-службы (конечно), но это включает в себя имитацию многих частей приложения, например, стека поиска (Apache SOLR).

Более того, наши тесты этого не делают (т.е. не могут!) охватывают критические маршруты, такие как мобильный процесс входа в систему / входа в систему, поскольку он включает в себя взаимодействие между приложением API и мобильным веб-сайтом, где пользователь может ввести учетные данные, например для SSO (Janrain Engage). Следовательно, стандартный интеграционный тест Rails не годится.

Я понимаю, что теоретически, если набор тестов очень хорошо спроектирован, когда имитация выполняется строго в тех точках соединения, где начинаются тесты для следующего уровня, тогда Путем модульного или функционального тестирования API сервиса и мобильного веб-сайта по отдельности можно получить одинаковое тестовое покрытие. Я считаю, что на практике это иллюзия, если у вас есть несколько разработчиков, работающих над набором тестов независимо; Я просто признаю, что наши модульные тесты просто не так хорошо разработаны. В частности, при выполнении TDD я обнаружил, что хотя тесты могут управлять кодом приложения,дизайн тестового кода адаптирован только к тестируемому модулю, в результате чего получается довольно сильно разросшийся набор тестов.

Еще я обнаружил, что иногда мы не обнаруживали регрессии исключительно с помощью модульных тестов, где, например, неверные запросы были отправлены на сервер SOLR из-за эффектов постукивания. Вот почему я подумал, что единственный верный способ гарантировать, что весь стек работает по критическим маршрутам, - это автоматическое сквозное тестирование его на промежуточном сервере перед каждым развертыванием, т.е. отправка реальных HTTP-запросов в приложение.

У меня будут следующие вопросы:

  • как вы думаете, это вообще разумно? Я нашел очень мало информации о сквозном тестировании живого API в Интернете, что заставило меня задуматься, не имею ли я вообще никакого смысла
  • , какие инструменты / настройки вы бы предложили? Мы используем Watir для выполнения приемочных тестов для нашего веб-сайта, но это кажется излишним для веб-службы (не требуется среда браузера, нет JS или чего-либо еще в стиле пользовательского интерфейса). Что-нибудь такое же простое, как сценарий Ruby?
  • любые общие передовые методы или советы, которые вы можете мне дать w.r.t. для разработки таких тестов?
6
задан Matthias 15 June 2011 в 09:00
поделиться