OPS05-BP02 変更をテストし、検証する
デプロイされた変更はすべてテストし、本稼働でのエラーを回避する必要があります。このベストプラクティスは、バージョンコントロールからアーティファクトビルドへの変更をテストすることに重点を置いています。テストには、アプリケーションコードの変更に加えて、インフラストラクチャ、設定、セキュリティコントロール、運用手順も含める必要があります。テストは、単体テストからソフトウェアコンポーネント分析 (SCA) まで、さまざまな形態があります。ソフトウェアの統合および配信プロセスでテストをさらに早めると、アーティファクト品質の確実性が増します。
組織はすべてのソフトウェアアーティファクトにおいてテスト基準を作成する必要があります。テストを自動化すると、手間を軽減し、手動テストによるエラーを回避できます。手動テストが必要な場合もあります。デベロッパーは自動テストの結果を確認して、ソフトウェアの品質を向上させるフィードバックループを構築する必要があります。
期待される成果: ソフトウェアの変更は、配信前にすべてテストされます。デベロッパーはテスト結果と検証にアクセスできます。組織には、すべてのソフトウェア変更に適用されるテスト基準があります。
一般的なアンチパターン:
-
ソフトウェアの新しい変更を、テストせずにデプロイする。本稼働で実行に失敗し、その結果サービスが停止する。
-
新しいセキュリティグループが、本番前環境でのテストをせずに AWS CloudFormation にデプロイされる。そのセキュリティグループによって、ユーザーがアプリにアクセスできなくなる。
-
メソッドが変更されても単体テストを行わない。本稼働へのデプロイ時にソフトウェアが失敗する。
このベストプラクティスを活用するメリット: ソフトウェアのデプロイでの変更失敗率が軽減されます。ソフトウェアの品質が向上します。デベロッパーのコードの実行可能性に関する意識が向上します。確信を持ってセキュリティポリシーをロールアウトし、組織のコンプライアンスをサポートできます。自動スケーリングポリシーの更新などインフラストラクチャの変更を事前にテストし、トラフィックのニーズを満たすことができます。
このベストプラクティスが確立されていない場合のリスクレベル: 高
実装のガイダンス
継続的統合の実践の一部として、アプリケーションコードからインフラストラクチャまで、すべての変更に対してテストを行います。テスト結果は、デベロッパーが迅速にフィードバックを得られるように公開します。組織で、すべてのソフトウェア変更に適用されるテスト基準を施行します。
Amazon Q Developer の生成 AI の機能を活用して、開発者の生産性とコード品質を向上させます。Amazon Q Developer は、コード提案の生成 (大規模言語モデルに基づく)、単体テストの作成 (境界条件を含む)、およびセキュリティ脆弱性の検出と修復によってコードセキュリティを強化します。
お客様事例
AnyCompany Retail は、継続的な統合パイプラインの一部として、すべてのソフトウェアアーティファクトに対して複数種類のテストを実行しています。テスト駆動開発を実践しているため、すべてのソフトウェアに単体テストがあります。アーティファクトがビルドされると、エンドツーエンドのテストが実行されます。1 ラウンド目のテストが完了すると、静的アプリケーションセキュリティスキャンを実行し、既知の脆弱性を探します。デベロッパーは、各テストに合格するたびにメッセージを受け取ります。すべてのテストが完了すると、ソフトウェアアーティファクトはアーティファクトリポジトリに保存されます。
実装手順
-
組織の関係者と協力して、ソフトウェアアーティファクトのテスト基準を作成します。すべてのアーティファクトが合格しなければならない基準のテストとは何でしょうか。 テスト範囲に含める必要があるコンプライアンスやガバナンスの要件はありますか。 コード品質テストを実施する必要がありますか。 テストが完了した際に通知が必要なのは誰ですか?
-
AWS デプロイパイプラインリファレンスアーキテクチャ
には、統合パイプラインの一部としてソフトウェアアーティファクトに対して実行できる、テストの種類の信頼できるリストが含まれています。
-
-
ソフトウェアテスト基準に基づいて必要なテストを行い、アプリケーションを計測します。テストの各セットは 10 分以内に完了する必要があります。テストは統合パイプラインの一部として実行する必要があります。
-
Amazon Q Developer を使用します。これは、単体テストケース (境界条件を含む) の作成、コードとコメントを使用した関数の生成、一般的なアルゴリズムの実装に役立つ生成 AI ツールです。
-
Amazon CodeGuru Reviewer を使用して、アプリケーションコードをテストして欠陥を検出します。
-
AWS CodeBuild を使用して、ソフトウェアアーティファクトに対しテストを実施できます。
-
AWS CodePipeline は、ソフトウェアテストをパイプラインに組み込むことができます。
-
リソース
関連するベストプラクティス:
関連するドキュメント:
-
Accelerate your Software Development Lifecycle with Amazon Q
-
The Ultimate Cheat Sheet for Using Amazon Q Developer in Your IDE
-
Best Practices for Prompt Engineering with Amazon CodeWhisperer
-
Automated AWS CloudFormation Testing Pipeline with TaskCat and CodePipeline
-
Building end-to-end AWS DevSecOps CI/CD pipeline with open source SCA, SAST, and DAST tools
関連動画:
-
Implement an API with Amazon Q Developer Agent for Software Development
-
Installing, Configuring, & Using Amazon Q Developer with JetBrains IDEs (How-to)
-
Mastering the art of Amazon CodeWhisperer - YouTube playlist
-
AWS re:Invent 2020: Testable infrastructure: Integration testing on AWS
-
AWS Summit ANZ 2021 - Driving a test-first strategy with CDK and test driven development
関連リソース:
関連サービス: