Еще раз о проверках ответов

Что мы проверяем в ответах сервиса? И почему мы это проверяем?

Как оказалось, это не такой простой и ясный вопрос и поэтому он требует отдельной темы. 

Сначала вернемся к описанию того, что делает API: веб-сервис выдает некоторый пул информации для своих клиентов. Или что-то создает (и в ответе тоже выдает информацию о том, что он создал). Клиентов чаще всего несколько и каждый из предоставленного ответа берет то, что нужно именно ему. И берет он это из заранее оговоренных полей (а мы же помним, что SOAP - это протокол обмена четко структурированными xml-сообщениями).

Рассмотрим это на примере сервиса записи пациентов к врачам где разные методы используют сущность "Пациент", у которой есть следующие поля:

  • ID
  • Фамилия
  • Имя
  • Отчество
  • Дата рождения
  • Полис
  • Адрес 
  • Телефон
  • Пол
  • Льготы

Когда метод возвращает эту сущность, различные сервисы берут различные ее части: сервис расписаний возьмет только фамилию (все равно в списке расписаний врача будет записана только фамилия записанного пациента), сервис вызовов на дом возьмет фамилию, адрес и телефон, сервис льготного обеспечения лекарствами возьмет только ID и льготу. И так далее.

Получается, что каждый сервис парсит только какие-то свои поля, поэтому нам жизненно необходимо проверить, что:

  1. все обязательные поля, описанные в документации, возвращаются в ответе
  2. все необязательные поля, описанные в документации, возвращаются когда они заполнены
  3. в ответе тип поля соответствует документации (если написано, что приходит int, то и прийти должен не string)
  4. названия полей соответствуют документации
  5. если возвращается сообщение об ошибке, то оно должно соответствовать этой ошибке
  6. soapui валидирует ответ по схеме (можно настроить ассерт на это, а можно руками проверить - в поле ответа нажать alt+v

Если все это будет возвращаться с отклонениями, то клиенты будут падать от невозможности получить что либо. Соответственно самая первая проверка ответов должна быть не на бизнес-логику, а на соответствие ответов схеме. Ну и запросов, конечно (собственно тут такая же проблема, как и с ответами, просто скорее всего при некорректном запросе вы и ответ то не получите).


© 2021 YU-GO.RU