Как правильно работать с внешними сервисами в тестовом окруж
От: vsb Казахстан  
Дата: 06.07.22 21:32
Оценка:
Система взаимодействует с другими системами (написанными в других компаниях). Имеется понятие тестового окружения. Думаю, тут ничего объяснять не надо. Если у других систем есть тестовое окружение, наверное логично подключить тестовое окружение своей системы к тестовому окружению той системы. Хотя и тут есть нюансы: обычно над тестовым окружением чужой системы контроля нет и это неудобно. А есть у других систем нет тестового окружения, то тем более возникает проблема того, что, собственно, делать.

Я вижу такие варианты:

1. Самый лучший вариант на мой взгляд это написать эмулятор другой системы. Который будет в рамках используемого API реагировать на запросы каким нужно образом. Вплоть до написания какого-то UI, своей БД и тд. Чтобы тестировщики и прочие могли полноценно протестировать все аспекты.

Эта задача может осложняться тем, что другая система может давать не HTTP API, а клиента. Недавно такая проблема была с twilio/whatsapp. У них есть SDK, понятно, что под капотом там REST, но разбираться с исходниками SDK, вкуривать их протокол — это уже задача получается не тривиальная. В будущем могут и поменять протокол.

2. Если взаимодействие с другой системой вынесено в какой-то компактный сервис, то можно написать вторую версию этого сервиса — которая уже будет работать примерно как в п.1.

3. Эту вторую версию сервиса можно писать не отдельным проектом, а в виде настройки для основного сервиса. И понавтыкать там в каждый endpoint if-ов. Кажется не очень красиво, но следить за двумя проектами и синхронизировать в них изменения тоже может быть неудобно.

4. В некоторых случаях можно завести фейковые номера телефонов, например, и если идёт отправка сообщения на этот номер (это я опять про ватсап), то не отправлять, а проводить нужную имитацию (тот же if в нужных endpoint-ах, но не по настройке сервиса, а по входным данным). И считать, что на тестовой системе все номера будут такие, фейковые. Ну может быть неудачный пример, но я видел ситуацию, когда это казалось удачным.

Может ещё какие-то варианты есть? Как лучше делать?
Отредактировано 06.07.2022 21:34 vsb . Предыдущая версия . Еще …
Отредактировано 06.07.2022 21:33 vsb . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.