Если вы хотите получить полный CI / CD, тогда контрактное тестирование и / или функциональное тестирование абсолютно необходимо.
Если система следует более строгому проекту по контракту , ясно, что это контракт между частями, взаимное соглашение о том, как подсистемы взаимодействуют, например, каковы Ответы API от бэкэнда, которые требует ваш внешний интерфейс.
Если одному потребителю требуется, например, новая схема для одного указанного c API или если один производитель обновляет схему одного указанного c API , как вы описываете, вещи будут sh. Вот почему контракты должны проверяться каждый раз, когда обновляется любая из подсистем.
Как это сделать?
Сначала вам нужно подумать о своем рабочем процессе разработки .
- Некоторые люди применяют потребительские контракты . Это просто заявляет о философской позиции, которая выступает за то, чтобы потребители API были в центре процесса проектирования.
- Некоторые другие предпочитают запускать бэкэнд-диск.
- В некоторых случаях это непредсказуемо, и потребителям или поставщикам может потребоваться изменить ситуацию в разные моменты, или в некоторых микросервисах, например, sh, потребители являются производителями, а производители - потребителями.
Вам необходимо иметь любой инструмент для любого из API-тестирования, функционального тестирования, контрактного тестирования . Очень нормальные, которые дали мне много душевного спокойствия, это REST-Assured и Runscope (который теперь принадлежит Blazemeter , так что вы можете использовать мониторинг API, функциональное тестирование и многие другие функции). Кроме того, я не использовал их, но вы можете посмотреть pact.io и pactflow.io , и некоторые люди, похоже, добились хороших результатов, выполняя потребительский контракт тестирование с почтальоном и вообще непрерывное API тестирование с почтальоном с помощью newman
И, наконец, реализовать тестирование в вашем CICD . В зависимости от вашего рабочего процесса и доступных инструментов, вам нужно будет
- решить, где хранить контракты, это может быть как схема в одном из репозиториев (т. Е. Интерфейс, бэкэнд) или в отдельном репо только для схем API или описания теста, или в самом инструменте.
- решить, как запустить тесты. Для этого, поскольку вы уже запускаете тесты (я полагаю, по крайней мере, модуль / интеграцию) в своих конвейерах CI / CD, вам просто нужно добавить необходимые шаги для проверки всех контрактов при развертывании любой подсистемы. Таким образом, go не будет запущено, если какая-либо из других подсистем не находится в требуемой версии, создавая ожидаемые схемы.
- обновляйте свои схемы ПЕРВЫМ, когда одна из подсистем использует новые требования. Т.е. в вашем случае веб-интерфейсу требуется бэкэнд-версия 1.1, поэтому, когда вы пишете изменения в веб-интерфейсе, вы уже знаете, что это за изменения, поэтому вы можете обновить схемы, использованные в тестировании. При развертывании в любой среде развертывание будет успешным только в средах, в которых проходит тестовый контракт. Т.е. он может работать в средах с песочницей / dev / QA, если бэкэнд 1.1 уже существует, но если в работе его нет, CICD остановится, так как тест по контракту не пройдет.