翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
よくある質問
他のサービスを呼び出さずに計算を実行して結果を返す Lambda 関数があります。クラウドでのテストが本当に必要ですか?
はい。 AWS Lambda 関数には、テストの結果を変更する可能性のある設定パラメータがあります。すべての Lambda 関数コードはタイムアウトとメモリ設定に依存しているため、正しく設定されていない場合、関数が失敗する可能性があります。Lambda ポリシーでは、Amazon CloudWatch
クラウドでのテストはユニットテストにどのように役立ちますか? クラウドにあり、他の リソースに接続する場合、統合テストではありませんか?
ユニットテストは、当社では、アーキテクチャコンポーネントで個別に実行されるテストと定義されています。この定義により、必ずしもサービスコールやその他のネットワーク通信の使用が妨げられるわけではありません。
多くのサーバーレスアプリケーションには、クラウドでも個別にテストできるアーキテクチャコンポーネントを備えています。基本的な例は、入力を受け取り、それを解釈して、Amazon Simple Queue Service (Amazon SQS) キューにメッセージを送信する Lambda 関数です。こうした関数のユニットテストは、入力値によってキューに入れられたメッセージに、特定の値が存在するかどうかをテストするといったものになります。整理、行動、アサートパターンを使用して記述されるテストを考えてみましょう。
-
配置 — リソース (メッセージを受信するキュー、およびテスト対象の関数) を割り当てます。
-
Act – テスト対象の関数を呼び出します。
-
アサート — 関数によって送信されたメッセージを取得し、出力を検証します。
モックテストのアプローチでは、プロセス内のモックオブジェクトでキューをモックし、Lambda 関数コードを含むクラスまたはモジュールのプロセス内インスタンスを作成します。アサートフェーズ中、キューに入れられたメッセージはモックされたオブジェクトから取得されます。
クラウドベースのアプローチでは、テスト用に Amazon SQS キューを作成し、分離された Amazon SQS キューを出力先として使用するように設定された環境変数を使用して Lambda 関数をデプロイします。Lambda 関数の実行後に、テストでメッセージを Amazon SQS キューから取得します。
クラウドベースのテストでは、同じコードを実行し、同じ動作をアサートして、アプリケーションの機能的正確性を検証します。ただし、(IAM) ロール、IAM ポリシー、関数のタイムアウトとメモリ設定など AWS Identity and Access Management 、Lambda 関数の設定を検証できるという追加の利点があります。