前回の投稿では、Amazon Nova Actをベースに構築されたエージェンティックQA自動化のリファレンスソリューションであるQA Studioを紹介し、自然言語で個別のユースケースを定義し、AI駆動のビジュアルナビゲーションでオンデマンド実行し、実行アーティファクトを完全なトレーサビリティで検査する方法を示しました。この投稿では、その基盤をさらに拡張し、QA Studioがテストスイートを通じてバッチリグレッションテストとパイプライン統合をどのように実現するか、そしてコマンドラインインターフェース(CLI)がエージェンティックテストを自動CI/CDパイプラインに統合する方法を詳しく説明します。
テストスイートによる組織的なリグレッションテスト
QA Studioでは、特定のユーザージャーニーを検証する個々のテストケースを「テストスイート」と呼ばれるコレクションにグループ化し、一緒に実行できます。これらのテストスイートは機能領域全体にわたる構造化されたリグレッションテストをサポートします。スイートはバッチで実行され、並列処理が可能です。スイートが実行されると、各テストケースは独立したAmazon ECS on AWS Fargateワーカータスク上で実行されます。例えば、20のテストを含むスイートは逐次実行ではなく並行して実行できるため、総実行時間が大幅に短縮されます。
スイートは機能領域、リリースステージ、またはテスト目的で整理できます。例えば、各デプロイで重要なパスを検証するスモークテスト、アプリケーション全体をカバーするリグレッションスイート、リリース前にクロスフィーチャーワークフローを検証する統合テストなどです。
テストスイートの作成と管理
QA StudioのWebインターフェースで、名前、説明、オプションのタグを指定してテストスイートを作成し、既存のテストケースを追加します。各テストケースは、開始URL、変数、シークレット、ヘッダーなどの独自の設定を保持します。スイートが実行されると、これらの設定は各テストケースに独立して適用されます。
スイートの実行と結果
スイートが実行されると、QA Studioは各テストケースの個別の実行レコードを作成し、ワーカーキューにディスパッチします。スイート実行ページは集約ビューを提供し、成功、失敗、実行中のテストケースの数を表示します。個々の実行結果にドリルダウンして、失敗したテストのトレーサビリティログ、スクリーンショット、セッション録画を確認できます。各スイートは独自の実行履歴を保持し、回帰安定性の長期ビューを提供します。
CI/CD統合とQA Studio CLI
QA StudioのWebインターフェースはインタラクティブなテスト作成とオンデマンド実行に適していますが、CI/CDパイプラインには異なるインターフェースが必要です。コマンドライン実行、構造化出力、非インタラクティブ認証、およびパイプラインオーケストレーターと統合する終了コードです。
QA Studio CLI(qa-studio)はこのインターフェースを提供します。これはWebアプリケーションと同じAPIバックエンドに接続しますが、テストをFargateワーカーにディスパッチする代わりに、CLIが実行されるマシン(CI/CDランナーなど)上のAmazon Nova Actで実行します。結果はQA Studioデプロイメントに報告されます。
インストールと認証
QA Studio CLIはプロジェクトのGitHubリポジトリの一部です。リポジトリをクローンし、オプションのランナー依存関係とともにPythonパッケージとしてインストールします。CI/CD環境では、CLIはOAuth 2.0クライアントクレデンシャル認証をサポートします。QA Studio Webインターフェースで必要なスコープを持つOAuthクライアントを作成し、クレデンシャルをパイプライン環境変数として設定します。CLIは自動的にアクセストークンを要求してキャッシュし、期限切れ時に更新するため、インタラクティブなブラウザログインは不要です。
テストとスイートの実行
qa-studio runコマンドは、個々のテストケースまたはテストスイート全体を実行します。例えば、qa-studio run --suite-id suite-456 のように使用します。CI/CDパイプラインでは、同じテストを異なる環境に対して実行する必要があることがよくあります。CLIは--base-urlフラグで開始URLのドメインを置き換え、--varフラグでテンプレート変数を上書きできます。--regionと--model-idフラグでAWSリージョンとモデルバージョンを制御します。
ヘッダーとシークレット
テストケースは、テスト実行中にすべてのリクエストとともに送信されるカスタムHTTPヘッダーを定義できます。シークレット(パスワード、APIキー、トークンなど)はAWS Secrets Managerに保存され、保存時に暗号化されます。QA Studioは、シークレット値が実行ログや履歴レコードに書き込まれないように設計されています。テストステップはシークレットを名前で参照し、実際の値は実行時に取得されます。これにより、CI/CDパイプラインはパイプライン設定やログにクレデンシャルを露出させることなく、クレデンシャルを必要とするテストを実行できます。
終了コードとパイプライン統合
CLIはパイプラインの成功・失敗状態に直接マッピングする終了コードを使用します。0は全テスト合格、1は1つ以上のテスト失敗、2はCLIエラー(認証、設定、APIなど)を示します。この3状態モデルにより、パイプラインはテスト失敗(終了コード1)とインフラストラクチャ問題(終了コード2)を区別できます。--formatフラグで出力形式を制御し、デフォルトのjsonはプログラムによる消費に適し、humanはパイプラインログ用の可読サマリーを提供します。
CI/CDプラットフォームの例
記事では、GitHub Actions、GitLab CI、Jenkinsの完全な例を提供しています。OAuthクレデンシャル、AWSクレデンシャルの設定、テストの実行、アーティファクトのアップロード方法を示しています。例えば、GitHub Actionsではif: always()を使用してテストが失敗してもアーティファクトを保存し、GitLab CIはスケジュールトリガーをサポートし、JenkinsはwithCredentialsを使用してクレデンシャルを注入します。
結論
テストスイートとCI/CD統合により、QA Studioはインタラクティブなテスト作成ツールから継続的な品質保証プラットフォームへと拡張されます。テストスイートは回帰カバレッジを管理しやすいコレクションに整理し、並列実行を可能にします。CLIはエージェンティックテストを統一された実行履歴に統合し、テストがどのように開始されたかに関わらず一貫したビューを提供します。