はじめに functional-testing-introduction

AEM as a Cloud Service デプロイメントプロセスで使用できる品質ゲート、組み込まれている様々な種類の機能テスト、それらにどのように貢献できるか、全体的なテスト戦略のコンテキストでそれらを最大限に活用する方法ついて説明します。

概要

次の図は、テスト戦略全体のコンテキストで使用可能なパイプラインの概要と、AEM as a Cloud Service デプロイメントプロセスを示しています。

AEM Cloud Service デプロイメントの品質ゲート

目的

AEM Cloud Service デプロイメントパイプラインの目的は、開発および AEM 製品リリースのライフサイクルの様々な段階で、堅牢で安全なデプロイメントを容易にすることです。これらのパイプラインには、様々なレベルで複数の品質ゲートが組み込まれており、AEM アプリケーションの変更と AEM 製品のアップデートの両方に対するデプロイメントの整合性と安全性を確保できます。

Adobeには、いくつかの組み込みの品質ゲートが用意されていますが、実装と設定に対してユーザーが介入する必要がある場合もあります。これらの品質ゲートは汎用性が高く、ライフサイクルの様々な段階で適用でき、独自の開発設定および CI/CD プロセスに統合できるものもあります。

組み込みの品質ゲートでは、AEMアプリケーションのコンテキスト内でAEM製品の機能を主に検証します。一方、設定したカスタム品質ゲートは、アプリケーションの重要な機能とユーザーインタラクションが意図したとおりに実行されることを検証するように設計されています。これら 2 つの品質ゲートをまとめて連携させ、コードの変更と AEM 製品のアップデートの両方に対する堅牢で安全な自動デプロイメントを実現します。

これらの品質ゲートは、テスト戦略全体の包括的なテストフレームワークではないことに注意する必要があります。AEM 製品は、AEM Cloud Service のデプロイメントプロセスに入る前に、広範なテストが行われます。同様に、アプリケーションは、デプロイメントフェーズに達する前に、既に高品質である必要があります。このアプローチは、品質ゲートが完全なテスト計画の代わりとなるのではなく、デプロイメントプロセスを保護する主要目的に焦点を当てるようにします。

品質ゲート

次の図は、使用可能な品質ゲートの詳細図、テスト戦略全体でのその使用状況、および AEM as a Cloud Service デプロイメントプロセスを示します。

AEM Cloud Service デプロイメントの品質ゲート

お客様が提供する品質ゲートの概要

単体テスト
カスタム
機能テスト
カスタム
UI テスト
顧客
検証
手動
テスト
実稼動パイプライン
あり
ブロック
あり
ブロック
60m タイムアウト
あり
ブロック
60m タイムアウト
いいえ
不可
実稼動以外のパイプライン
あり
ブロック
オプトイン
ブロック
60m タイムアウト
オプトイン
ブロック
60m タイムアウト
いいえ
不可
Adobe 内部検証
あり
ブロック
あり
ブロック
60m タイムアウト
あり
ブロック
60m タイムアウト
いいえ
不可
顧客の CI/CD
はい
はい
はい
はい
はい
顧客のローカル開発者
はい
はい
はい
はい
はい

単体テスト

すべてのテスト戦略の基盤となる、AEM アプリケーションの単体テストを実施することをお勧めします。このテストは、高速かつ頻繁な実行と早期の迅速なフィードバックの提供を目的としており、開発者ワークフロー、独自の CI/CD、AEM Cloud Service デプロイメントパイプラインに緊密に統合されています。

また、JUnit を使用して実装され、Maven で実行されます。AEM の単体テストの例と導入方法については、AEM プロジェクトアーキタイプのコアモジュールを参照してください。

コード品質

この品質ゲートは標準で設定され、AEM アプリケーションコードで静的コード分析を実行します。

詳しくは、コード品質テストおよびカスタムコード品質ルールを参照してください。

製品テスト

製品機能テストは、オーサリングタスクやレプリケーションタスクなど、AEM のコア機能の安定した HTTP 統合テスト(IT)のセットです。アドビでは、これらを標準で提供、保守しています。これは、カスタムアプリケーションコードが AEM 製品のコア機能を破壊した場合に、カスタムアプリケーションコードに対する変更がデプロイされるのを防ぐためのものです。

Junit を使用して実装され、Maven を使用して実行されます(公式の AEM テストクライアントを使用します)。製品テストスイートは
オープンソースプロジェクトとして維持され、ベストプラクティスに従っているため、テスト実装の出発点として適しています。

カスタム機能テスト

製品テストと同様に、顧客機能テストは HTTP 統合テスト(IT)です。これは、Junit を使用して実装され、Maven を使用して実行されます(公式の AEM テストクライアント上に構築されます)。

NOTE
カスタム機能テストは、AEM アプリケーションの変更デプロイメントと AEM 製品プッシュ更新によって使用される実稼動パイプラインおよび非実稼動(オプトイン)パイプラインで実行されるため、アプリケーションの適切な機能を確保し、リリースの安全性を高める重要な役割を果たします。顧客機能テストはそれぞれの内部プレリリース検証パイプラインで実行され、早期にフィードバックを得ることができます。

パイプラインの実行を効率化するために、主な機能とユーザーのインタラクションフローに注力することをお勧めします。機能テストの実行時間は 15 分以下にすることをお勧めします。この品質ゲートに適合しない完全な機能テストスイートは、お客様の開発フローで一般的な検証パイプラインの一部として実行することをお勧めします。

例については、オープンソースの製品テストまたは AEM プロジェクトアーキタイプの it.tests モジュールを参照してください。

詳しくは、Java 機能テストを参照してください。

カスタム UI テスト

顧客固有の開発に対するリスク制御を最大限に高めるために、重要な UI テストを AEMCS に取り込むことが強く推奨されます。これらは数をかなり制限して保持することを目的としていますが、顧客体験に大きな影響を与えます。

テストは Docker イメージでパッケージ化され、可能な限り変動するように設計されています(Cypress、Selenium、Java および JavaScript のサポートを含む)。カスタム機能テストと同様に、同じ特性と目的に従います。

NOTE
カスタム UI テストは、AEM アプリケーションの変更デプロイメントと AEM 製品プッシュ更新によって使用される実稼動パイプラインおよび非実稼動(オプトイン)パイプラインで実行されるため、アプリケーションの適切な機能を確保し、リリースの安全性を高める重要な役割を果たします。また、顧客 UI テストは、各顧客の内部プレリリース検証パイプラインで実行され、早期にフィードバックを得るのに役立ちます。

パイプラインの実行を効率的に行うために、主要機能と主要ユーザーインタラクションフローに注力することをお勧めします。この品質ゲートに収まらない完全な UI テストスイートは、顧客の開発フロー中に、一般的な顧客検証パイプラインの一部として実行することをお勧めします。

例として、オープンソースのサンプルテストまたは AEMプロジェクトアーキタイプの ui.tests モジュールを参照してください。

詳しくは、カスタム UI テストを参照してください。

エクスペリエンス監査

エクスペリエンス監査品質ゲートが、顧客の web ページに対して Google Lighthouse 監査を実行中です。

この品質ゲートは、AEM の標準で提供されていますが、デプロイメントパイプラインをブロックしていません。デフォルトでは、パブリッシュインスタンスのルートページ(/)に対して監査が実行されます。監査対象と見なされる最大 25 個のカスタムパスを設定して貢献できます。

詳しくは、エクスペリエンス監査テストを参照してください。

顧客の検証

顧客検証の品質ゲートは、顧客独自のテスト戦略と作業のプレースホルダーです。このテスト戦略と作業は、顧客のアプリケーションの変更が AEM クラウドデプロイメントパイプラインに到達する前に実行されます。

ここでは、好みのツールとフレームワークを選択できます。顧客機能テストやカスタム UI テストとは異なり、AEM as a Cloud Service に関連する制限はないので、長時間実行される機能および UI テストをここで実行することをお勧めします。

任意のツールとフレームワークを自由に選択できますが、HTTP ベースの統合テストと UI テストを、カスタム機能テストおよびカスタム UI テスト品質ゲートで利用可能なツールとフレームワークと連携させることをお勧めします。ローカルテスト戦略で迅速な開発環境(RDE)を統合し、AEM クラウド環境にできる限り近い環境でテストすることをお勧めします。

手動テスト

手動テストの品質ゲートは、手動テストを行うお客様向けのプレースホルダーです。AEM クラウドパイプラインは手動テストをサポートしていないので、独自のローカルテスト戦略の一環として実行する必要があります。

手動テストの場合、追加の AEM Cloud Service 開発環境と統合すると便利です。

recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab