Есть способы сделать это, но ни один из них не встроен в какие-либо фреймворки, о которых я знаю.
Ниже приведены три способа решения этой проблемы в прошлом:
- использовать VMWare Server / ESX. В последнее время мы фактически создали образы виртуальных машин для сервера и клиентского компьютера с подключаемым вторым диском (диском данных). Затем мы собираем и тестируем наше программное обеспечение, перед тестом производительности запускаем виртуальную машину, затем внедряем код на диск данных. После этого мы развертываем на компьютерах набор тестовых сценариев и запускаем их (через Powershell). Это работает довольно хорошо, имеет хорошие возможности воспроизведения и позволяет нам предоставлять тестовые серверы другим командам / клиентам для их оценки. Недостатком является то, что он очень ресурсоемкий.
- Тестовые наборы для выделенного сервера и клиента - у нас было два разных репозитория исходного кода, один для сервера и один для клиента. Затем мы выполнили сборку, как описано выше, но по одному, развернув сервер (и протестировав его на старом клиенте), развернув клиент (и протестировав его на старом сервере), а затем развернув оба и протестировав комбинацию. Это работало довольно хорошо, но требовало некоторого ручного тестирования для определенных сценариев и могло стать громоздким, если бы нам нужно было проверить несколько изменений сервера или изменений клиента одновременно.
- Проверка только в отношении производства - мы обновляли только клиент ИЛИ сервер, а затем обновляли эту часть и проверяли ее в соответствии с текущими настройками производства. Недостатком этого, конечно, является то, что нам пришлось развертывать намного медленнее и вносить постепенные изменения в одну или другую систему, развертывать, тестировать и выпускать, а затем вносить изменения в другой компонент. Промыть и повторить.
Если у вас есть ресурсы, я настоятельно рекомендую # 1. Первоначально его сложнее настроить, но он окупается очень быстро, и после его настройки его можно повторить и для других продуктов (если они следуют относительно схожему шаблону развертывания).