Локальный облачный стек для Azure похож на LocalStack для AWS?
Существует ли для Azure среда для подражания, аналогичная LocalStack для AWS? Пожалуйста, поймите, что я ищу не макет SDK, а макет стека ресурсов.
Настолько, что я мог бы заменить конфигурации моего локального стека Azure фактическими ресурсами Azure в моем проекте, и функциональность осталась бы прежней. Очень похоже на то, как это работает с Localstack.
Я обнаружил, что Azure Cloud Fabric ближе всего подходит к этому, но он тесно связан с Visual Studio IDE.
2 ответа
Хотя эквивалента LocalStack для Azure нет, Microsoft публикует три эмулятора, которые можно запускать локально, чтобы помочь в тестировании интеграции:
Основные инструменты функций Azure, локальная версия среды выполнения функций Azure, позволяющая выполнять функции Azure локально без их развертывания.
Эмулятор хранения Azure, локальный эмулятор хранилища Azure.
Эмулятор Cosmos DB, локальный эмулятор CosmosDB.
Вышеупомянутые три могут дать вам много возможностей для тестирования интеграции, однако, поскольку функции Azure, AWS Lambda и большинство современных веб-стеков, даже без серверов, перешли на использование сервисов, а не просто использование программных модулей, единственный способ обеспечить полное равенство между интеграцией. Тестовая и производственная среды предназначены для автоматизации создания и демонтажа реальных платных услуг.
Рецепт сквозного / интеграционного тестирования в Azure:
- Используйте Azure DevOps Piplines для автоматизации всего процесса непрерывной интеграции
- Добавьте задачи в конвейер для создания и удаления (реальных) ресурсов текстовых фиксторов с постоянным состоянием (базы данных, хранилище файлов и т. Д.) С помощью инструментов командной строки Azure.
- Предоставьте тестируемому приложению доступ к реальным службам без сохранения состояния (таким как Azure Cognitive Services и т. Д.), Как и в рабочей среде.
- Используйте группы переменных Azure для хранения имен, строк подключения и т. Д. Для ресурсов тестового набора. Вы можете сохранить другой набор для производства в другой группе, что позволит легко переключаться между ними в YAML на разных этапах. Эти переменные также могут быть шаблонизированы в их собственном файле YAML.
- Используйте эмулятор основных инструментов Azure Functions для размещения и выполнения функций в агенте CI, а не для развертывания, при этом платформа модульного тестирования отправляет им запросы. Функции будут использовать неэмулированные сервисы, представленные как тестовые инструменты.
- Или создайте развертывание для этапа тестирования, опубликовав API на практике, затем напишите тесты API, которые делают необработанные HTTP-запросы, или используйте его в качестве бэкэнда для веб-драйвера Selenium, тестирующего UI/ интерфейс.
Вышеупомянутый подход основан на реальных сервисах для обеспечения тестирования, а не на имитационных, тестируя что-то, что довольно близко к тому, что вы развертываете в производственной среде. Плата за использование будет взиматься при каждом запуске тестов. Если это проблема, сначала используйте модульное тестирование и интеграционное тестирование эмулятора в конвейере и добавьте проверку человеком / другой конвейер для этого уровня тестирования, которое вы выполняете только перед запуском в производство.
Также стоит поискать слоты Azure.
Теперь https://github.com/azure/azurite предоставляет также докер https://hub.docker.com/_/microsoft-azure-storage-azurite .