3

したがって、私のアプリスタックは本番環境で次のようになります。

  • バックエンド: AWS API Gateway + Lambda + DynamoDB + ElastiCache(redis)
  • バックエンド - アルゴリズム: 実行時間の長いプロセス - ECS (Fargate) で実行されている Docker 化された Java アプリ
  • フロントエンド: S3 から提供される Angular アプリ

https://www.cypress.io/をエンド ツー エンドのテストに使用し、 https://circleci.com/をビルド サーバーに使用したいと考えています。

エンド ツー エンドのテストを実行できる環境を作成するにはどうすればよいですか?

オプション:

1) Terraform を使用してインフラストラクチャのスクリプトを作成し、エンドツーエンドのテストを実行するたびに環境全体を作成/破棄します。これは、スピンアップ時間の点で大きなオーバーヘッドのように思えます。また、完全にスクリプト化された環境の作成とセットアップは、大変な作業のように思えます!

2) 段階的に展開する専用の長期的な環境を作成します。これはぐちゃぐちゃになりそうです。テストを実行する場所としては理想的ではありません。

3) 環境をローカルで実行できるようにします。したがって、おそらくAWSのSAMまたはこのプロジェクトのようなものを使用してください https://github.com/gertjvr/serverless-plugin-simulate

その最後のオプションは、ローカル開発環境のセットアップの問題にも答える可能性がありますが、サーバーレス技術をローカルでモックするものはすべてベータ版のようであり、その道をたどると、多くの時間を費やした後にいくつかの問題が発生する可能性があるのではないかと心配しています. ...

4

4 に答える 4

1

私の側では、テスト戦略を次のように分割します。

Api: - 単体テスト: (言語のお気に入りのフレームワークを使用) - 統合テスト: InfraAsCode の選択によって異なります。SAM またはサーバーレス フレームワークを使用している場合は、イベントを関数にローカルで直接注入できます。DynamoDB や S3 インタラクションなどの統合部分を追加する場合は、LocalStack ( https://github.com/localstack/localstack ) を使用してこれらのサービスをエミュレートすることを検討する必要があります。

フロント: - その部分については、常にスタブを使用して API リクエストをモックし、フロント エンド部分のみをテストします (以前に API 部分をテストしました)。そして、ヒノキやその他のフレームワークを使用できるようになります。

于 2019-03-26T15:31:27.940 に答える