Обзор тестирования асинхронных служб

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

Службы WS-Notification

Асинхронные службы стандартизованы в спецификациях WS-Notification:

Можно протестировать веб-службы и службы XML, реализующие спецификацию WS-Notification, путем создания асинхронного запроса в тесте. Асинхронный запрос содержит интерфейсы для соответствующей спецификации WS-Notification вместе со структурой обратного вызова.

Частные асинхронные службы

Можно протестировать частные асинхронные службы, которые не реализуют спецификацию WS-Notification. Для тестирования этих служб необходимо вручную создать запрос к службе, содержащий интерфейсы для службы, а затем можно добавить к запросу асинхронную структуру обратного вызова.

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

Структура обратного вызова

Для тестирования асинхронных служб необходимо создать асинхронную структуру запроса в тесте как показано на следующей диаграмме:

Пример асинхронной структуры запроса
Запрос к веб-службе или простой запрос XML предоставляет действие подписки и содержит элемент обратного вызова, описывающий поведение теста в трех состояниях:
  • Параллельный содержит элементы теста, выполняемые после запроса на подписку и во время ожидания ответа уведомления.
  • Получение содержит элементы теста, выполняемые при получении из службы ответа уведомления.
  • Тайм-аут содержит элементы теста, выполняемые, если ответ уведомления не получен после задержки, указанной в элементе обратного вызова.

Когда завершено выполнение всего, что содержится в элементах "параллельный", "получение" и "тайм-аут", выполнение продолжается в следующем элементе теста после асинхронного запроса.

Метод генерации асинхронной структуры обратного вызова в тесте зависит от того, использует ли асинхронная служба спецификацию WS-Notification:
  • Службы WS-Notification: Создайте асинхронный запрос в тесте.
  • Частные службы: Вручную создайте запрос к веб-службе или запрос XML в тесте, а затем добавьте асинхронную структуру обратного вызова к запросу.

Комментарии