Тестирование приложений, построенных на основе веб-сервисов RESTful - PullRequest
2 голосов
/ 21 октября 2010

Позвольте сказать;Я разрабатываю веб-приложение, которое для определенных вещей общается с веб-сервисом RESTful.

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

В такой системе приемочные (огуречные) или функциональные тесты могут быть выполнены двумя способами:

  1. Путем отсеивания всех внешних вызовов с использованием библиотеки насмешек на уровне объектов;такие как Mocha или JMock.
  2. Выполняя насмешку на уровне http, используя библиотеки, такие как webmock.
  3. Фактически позволяя основному приложению выполнить фактический вызов.

Проблема с #1 и # 2, если API базового приложения изменяется;мои тесты будут проходить успешно, и код будет фактически ломаться, и, следовательно, в первую очередь победит цель тестов.

Проблема с # 3 в том, что я не могу сделать rollback данных, как набор тестовделает на teardown.И я параллельно выполняю свои тесты, и, следовательно, если я позволю работе реальных веб-сервисов, я получу такие ошибки, как «имя пользователя взято» или что-то в этом роде.

Итак, вопрос для сообщества заключается в том, что является лучшим методом?

Ответы [ 2 ]

2 голосов
/ 21 октября 2010

Поместите ваше основное приложение в среду разработки или подготовки.Раскрутите свой веб-сервис в той же среде.Пусть один позвонит другому.Управляйте данными прибора для обоих.Это не насмешка;вы не получаете фальшивую реализацию.

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

0 голосов
/ 21 октября 2010

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

Вы можете попробовать fakeweb и получать свежую копию ожидаемых результатов каждый день, чтобы ваши тесты не работали с устаревшими ответами на данные.

...