Сквозное тестирование веб-службы RESTful (Rails) - PullRequest
6 голосов
/ 15 июня 2011

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

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

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

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

Мои вопросы будут:

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

1 Ответ

1 голос
/ 15 июня 2011

Это может вас заинтересовать: http://groups.google.com/group/ruby-capybara/browse_thread/thread/5c27bf866eb7fad3

То, что вы можете попробовать - это объединить огурец (или аналогичный) с одним из инструментов, упомянутых в ссылке выше, так что вы можете сделать что-нибудькак

Given I have 2 posts
When I send "DELETE" to post with id 1
Then I should have 1 post

Таким образом, вы можете протестировать полный стек API и проверить результат.

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