Какую сторону выбрать для тестирования REST API?

Я разрабатываю REST API, используя Scala и Play Framework 2. Похоже, сейчас самое подходящее время для написания технических условий для этого веб-сервиса. Для этого API существует два типа пользователей: веб-сайт и приложение для iPad.

Итак, вопрос в том, какую сторону я должен выбрать для написания спецификаций приемки?


Если быть более конкретным, то под приемочными условиями я подразумеваю такие виды испытаний:

"user" should {
  "be able to register with login, email and pass" in {
      ... // registration process here
   }
}

Вот мои чек-листы

Серверная часть (scala + spec2)

  • [+] легко интегрируется в процесс сборки
  • [+] больше знаком со scala
  • [-] легко пропустить некоторые детали браузера (например, CORS)

Клиентская сторона (js + простой ajax или какой-нибудь тестовый фреймворк)

  • [-] сложнее автоматизировать (требуется node.js, v8, phantomJS или что-то в этом роде)
  • [-] больше знаком со scala
  • [+] учитываются все данные браузера
  • [+] есть свою собственную собачью еду. Возможность использовать API на стороне сервера в качестве программиста на стороне клиента.
  • [+] своего рода примеры для клиентских программистов

person Alex Povar    schedule 30.09.2013    source источник


Ответы (2)


На мой взгляд, тесты, которые вы назвали «Серверная сторона», могут быть модульными тестами, они должны быть быстрыми и интегрированными в процесс сборки, там вы должны проверять правильность API, а не такие функции, как CORS, которые принадлежат клиентской стороне.

Для клиентской части я рекомендую вам использовать Selenium IDE, это плагин для браузера, который позволяет записывать действие и утверждать, что происходит на странице, позволяя вам воспроизвести все действия позже, намного быстрее, чем это мог бы сделать человек.

Однако у меня нет опыта интеграции этого в рабочий процесс сборки, поэтому, если вам нужно также включить это в процесс сборки, я предлагаю вам оценить CasperJS, у него замечательная документация и полезные функции тестирования.

Если вам просто нужны приемочные тесты, я бы определенно пошел на фронтенд.

person Alberto Zaccagni    schedule 30.09.2013

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

Если вы тестируете через JavaScript, это больше похоже на интеграционный тест.

Поэтому я подумал, что в REST API Scope, чтобы убедиться, что ваш REST API приемлем, вам нужно реализовать тест, не заботясь о том, кто является потребителями, и тестировать только в том случае, если простые запросы, поступающие к вашему API, получают ответ.

Но на стороне клиента вам нужно гарантировать, что код, использующий ответ REST API, хорош, поэтому вы создаете макет своего REST API (для javascript я рекомендую Жасмин или Синон).

Затем, чтобы проверить, правильно ли работает вся система, вам нужно использовать такой инструмент, как Seleniun.

Я надеюсь, что это поможет вам

person Claudio Santos    schedule 30.09.2013