Как я могу автоматизировать сквозное тестирование моего безсерверного веб-приложения? - PullRequest
0 голосов
/ 20 сентября 2018

Так что мой стек приложений выглядит следующим образом:

  • Backend: AWS API Gateway + Lambda + DynamoDB + ElastiCache (redis)
  • Backend - алгоритм: длительный процесс -Dockerized Java-приложение, работающее на ECS (Fargate)
  • Внешний интерфейс: угловое приложение, обслуживаемое с S3

Я хотел бы использовать https://www.cypress.io/ для сквозного соединенияи я хотел бы использовать https://circleci.com/ для моего сервера сборки.

Как мне создать среду, позволяющую выполнять сквозные тесты?

Опции:

1) Используйте Terraform для создания сценариев инфраструктуры и создания / разрушения всей среды каждый раз, когда мы запускаем сквозные тесты.Это звучит как огромные накладные расходы с точки зрения ускорения.Кроме того, создание и настройка среды в полном сценарии звучит как большая работа!

2) Создайте выделенную, долгоживущую среду, которую мы будем развертывать постепенно.Звучит так, будто все будет грязно - не идеально для места, где можно проводить тесты.

3) Сделайте так, чтобы мы могли запускать среду локально.Поэтому, возможно, используйте AWS SAM или что-то вроде этого проекта https://github.com/gertjvr/serverless-plugin-simulate

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

Ответы [ 3 ]

0 голосов
/ 20 сентября 2018

Вы можете использовать безсерверную инфраструктуру для кодирования вашего приложения в качестве инфраструктуры в виде кода и создания тестов

https://serverless.com
https://serverless.com/framework/docs/providers/aws/guide/testing

0 голосов
/ 26 марта 2019

Со своей стороны, я разделил свою стратегию тестирования, как показано ниже:

Api: - модульный тест: (используйте ваш любимый языковой фреймворк) - интеграционный тест: это зависит от вашего выбора InfraAsCode, если вы используете SAM илиБезсерверный фреймворк, тогда вы сможете вводить событие непосредственно в вашу функцию локально.Если вы хотите добавить интеграционную часть, например взаимодействие с DynamoDB или S3, вам следует рассмотреть возможность использования LocalStack (https://github.com/localstack/localstack) для эмуляции этих сервисов.

Front: - Для этой части я всегда высмеиваю запросы API с использованием заглушкии только тестировать переднюю часть (я уже тестировал API-часть ранее). И тогда вы сможете использовать кипарис или другой фреймворк.

0 голосов
/ 20 сентября 2018

«Кроме того, создание и настройка среды с полным сценарием звучит как большая работа» - так и есть.это также правильная вещь.он позволяет вам не только создавать версии кода, но и среды, в которых он выполняется. Автоматизация развертывания - это больше, чем просто код.я бы порекомендовал это.

...