Как написать интеграционный тест для систем, которые взаимодействуют асинхронно - PullRequest
3 голосов
/ 01 марта 2011

Предположим, что у меня есть функция с именем PlaceOrder, которая при вызове вставляет детали заказа в локальную БД и помещает сообщение (детали заказа) в очередь TIBCO EMS.

После получения сообщения TIBCO BW затем вызывает другую систему (скажем, ExternalSystem) для передачи деталей заказа.

Теперь я написал свои интеграционные тесты

  1. Позвоните, чтобы оформить заказ
  2. Сон, и проверить детали существуют в локальной БД
  3. В системе ExternalSystem имеются данные о сне и проверке.

Является ли вышеуказанный подход правильным? Приведенный выше тест дает мне уверенность в том, что сквозная интеграция работает, но есть ли лучший способ проверить описанный выше сценарий?

1 Ответ

2 голосов
/ 24 марта 2011

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

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

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

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

"Есть два способа, которыми тест может наблюдать за системой: путем выборки ее наблюдаемого состояния или прослушивания событий, которыеон отправляет. Из них выборка часто является единственным вариантом, потому что многие системы не отправляют какие-либо события мониторинга. Обычно тест включает в себя оба метода взаимодействия с различными «концами» своей системы "

(*) http://my.safaribooksonline.com/book/software-engineering-and-development/software-testing/9780321574442

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