Regression suite automation tool (RSAT) の並列実行
Regression suite automation tool (RSAT) バージョン 2.3 以降では、複数の RSAT アプリを並行して実行できます。
RSAT の並列実行の利点
マシン上で RSAT を使いアプリを一度だけ実行するというアプローチで、現在のニーズが満たされているため満足しているかもしれません。 しかし、並列実行することでより簡単にテストできます。
1 人のユーザーが 2 つの RSAT アプリを実行する
並列実行が有効になっている場合、環境内で RSAT アプリを複数回開くことができます。 このようにして、1 つ以上の RSAT アプリを使用してテストを実行し、同時に、RSAT アプリを使用してテストを作成または管理できます。
複数のユーザーが RSAT アプリの実行に使用する環境を共有する
並列実行により、同じ環境を共有する複数のユーザーが RSAT テストを同時に実行できます。 このようにして、作成する仮想マシン (VM) 環境を減らし、ユーザーと共有することができます。 そのため、個々のユーザーは自分のマシンに RSAT のインストールを管理する必要がありません。 代わりに、ユーザーは RSAT で共有環境を使用できます。
複数の Azure DevOps 検証パイプラインでテスト スイートを実行する
通常、企業はテスト スイートを実行するために Azure DevOps 検証パイプラインを設定します。 この方法の利点は、パイプラインをスケジュールされた時間に開始したり、ビルド パイプラインの一部としてトリガーしたりできることです。
並列実行では、テストの完全なセットを分割し、より小さなパイプラインで実行します。 そうすると、複数のパイプラインを順番にではなく並行して実行できます。 この方法で、テストをより迅速に完了できる場合があります。
共有環境での RSAT の並列実行
共有環境を作成できるため、個々のユーザーが自分のマシンに RSAT のインストールを管理する必要はありません。 RSAT と証明書をインストールし、RSAT の設定を構成し、各共有環境で 60 日ごとに証明書を更新するだけです。 そのため、オーバーヘッド時間が短縮され、総所有コスト (TCO) が改善されるという利点があります。
メモ
新しい証明書でも、環境内の非管理者ユーザーごとに非管理者スクリプトを実行する必要があります。
使用可能なマシンの数が限られている場合、共有環境はリソースを効率的に使用するのに役立ちます。
共有環境は通常、全能力には使用されません。 そのため、個々のユーザーは、キャパシティを有効に活用する複数の RSAT アプリを実行することでメリットを得ることができます。 複数の RSAT アプリを並行して実行すると、テストを順番に実行するよりも迅速にテストを完了できる場合があります。 この方法は、並行して実行される Azure DevOps 検証パイプラインでも使用でき、より迅速に検証を完了させることができます。
専用マシンでテストを実行し続けるユーザーでも、一部のテストを並列で実行する場合は、新しい並列実行を利用できます。 テストをより迅速に完了できる場合があるため、待機時間を短縮し、生産性を向上させることができます。
並列実行を有効にするために RSAT に対して行われた変更
RSAT がテスト環境と通信する方法が変更されました。 技術的には、RSAT は Web との通信に使用される通信ポート 745 を通じて財務と運用環境と通信します。 以前は、このポートは RSAT がテスト実行を開始するたびにその専用として使用されていました。
新しい RSAT リリースでは、ポート 745 は専用として使用されなくなりました。 その代わりに、エンドポイントはテスト実行ごとに技術的に追加されます。 このエンドポイントは、他のテスト実行から分離されます。 各エンドポイントには、Finance and Operation アプリが処理を実行する専用のブラウザー ウィンドウがあります。 通信中すべてが適切に分離され、介入やブロックは発生しません。
RSAT は、設定で指定された作業ディレクトリ内のローカル ファイルからテストを実行します。 テストの実行中に、一部の既存ファイルが変更され、結果を含む一部の新しいファイルが追加されます。 以前は、ファイルが上書きされて情報が失われる可能性があるため、2 つ以上の RSAT アプリが同じ作業ディレクトリで同じテストケースを同時に実行した場合、この動作により問題が発生する可能性がありました。
新しい RSAT リリースでは、ファイルを管理するための新しいロジックが導入されています。 テストを実行しようとする場合、別のテスト実行が現在特定のテスト ケースを使用していることを RSAT が検出すると、ファイルが上書きされるリスクを軽減するために新しいテスト実行がブロックされます。 次の警告メッセージを受け取ります。
現在、別の RSAT アプリケーションが再生を実行し、テスト ケース '[<test case number>]' をロックしています。 この他の RSAT アプリケーションがテスト ケースを完了するまでしばらくお待ちになってから、もう一度やり直してください。
コマンド ライン インターフェイス (CLI) を RSAT を実行する場合、次の切り替えを指定できます: /retry=[seconds]
。 その後、テスト ケースがブロックされた場合、RSAT は指定された秒数を待機してから、テスト実行を再度実行します。 ただし、RSAT は 1 回だけ再試行します。 2 回目の試行が失敗した場合、上記のメッセージが表示されます。
ヒント
ファイル ロックの問題を防ぐために、実行中の RSAT アプリごとに別々の作業ディレクトリを使用します。 複数のユーザーが同じコンピューターを共有する場合、各ユーザーはで独自の作業ディレクトリを使用する必要があります。 複数の Azure DevOps パイプラインが同じコンピューター上で並行して実行されている場合、各パイプラインは独自の設定と特定の作業ディレクトリを使用する必要があります。
RSAT バージョン 2.3 にアップグレードして、並列実行を有効にする前の考慮事項
新しい RSAT バージョン 2.3 へのアップグレードを考慮する必要があります。 アップグレードの適切な時期については、他のユーザーと調整することをお勧めします。 また、すべてのユーザーが同時にアップグレードすることをお勧めします。 この方法は、テスト ケースの実行可能ファイルが生成された RSAT のバージョンのみと一致するため実用的です。 異なるバージョンを組み合わせる場合、実行可能ファイルを複数回再生成し、実行中の RSAT のバージョンと一致させなければならない場合があります。
RSAT バージョン 2.2 以前では、アプリの複数のインスタンスを同時に環境で開くことができますが、実行テスト ケースは 1 つのインスタンスからしか実行できません。 RSAT バージョン 2.3 では、環境で並列実行が有効になっている場合にのみ環境内でアプリを複数回開くことができます。 並列実行が有効になっていない場合、別の RSAT アプリが既に開いているときに 2 つ目の RSAT アプリを開こうとすると、次のエラー メッセージが表示されます。
RSAT を実行できませんでした。 現在 RSAT の <number> インスタンスが実行されており、この環境の最大値は <number> に構成されています。 実行中の RSAT インスタンスの一部を閉じて再試行するか、環境で許可されるインスタンスの最大数を増やしてください。
メモ
RSAT バージョン 2.3 にアップグレードした後、必要に応じて、バージョン 2.2 などの以前のバージョンに戻すことができます。 元に戻すには、まず RSAT バージョン 2.3 をアンインストールしてから、次に必要な RSAT バージョンをインストールします。 既存の設定ファイルは保持されます。 ただし、RSAT バージョン 2.3 を使用している間に生成したテスト実行可能ファイルはすべて再生成する必要があります。
RSAT バージョン 2.3 をインストールした後、いつ並列実行を有効にするかを決定します。 並列実行は、すべてのユーザーにメリットがありデメリットはありませんが、考慮すべきいくつかの前提条件があるため、このバージョンでは明示的に構成する必要があります。 RSAT バージョン 2.5 以降では、Microsoft は並列実行が自動的に有効になることを想定しています。
並列実行を有効にする前に、次の条件を満たす必要があります。
- 並列実行が有効な環境では、RSAT バージョン 2.3 以降のみを実行してください。 並列実行が有効になっている場合、RSAT バージョン 2.3 は以前のバージョンではうまく機能しません。
- アプリ バージョン 10.0.21 およびプラットフォーム更新プログラム 45 (PU45) またはそれ以降を実行する財務と運用のテスト環境のみを使用してください。 RSAT はプラットフォームの機能に依存します。
メモ
並列実行は、有効にした直後に使用できるわけではありません。 そうではなく、一連のテストを実行する準備ができたときに、それを使うオプションが使用可能になります。
RSAT の並列実行を有効にする
並行実行は、RSAT テストの実行に使用される環境ごとに 1 回有効になります。 これは、ユーザー インターフェイス (UI) を介して実行される RSAT と CLI を介して実行される RSAT に対して別々に有効になります。
開始する前に、RSAT クライアントのバージョン 2.3 以降のみが環境で使用されていることを確認します。 このバージョンは、共有環境で並列実行を有効にする場合に特に重要です。
並列実行を有効にするには、関連する構成ファイルを編集する必要があります。 構成ファイルは、RSAT インストール フォルダーにあります。 英語 (US) のコンピューターでは、このフォルダは \Program Files (x86)\Regression Suite Automation Tool にあります。
RSAT のインストール フォルダで、関連する構成ファイルを開いて編集します。
- UI を介して実行される RSAT の並列実行を有効にするには、Microsoft.Dynamics.RegressionSuite.WpfApp.exe.config ファイルを開きます。
- CLI を介して実行される RSAT の並列実行を有効にするには、Microsoft.Dynamics.RegressionSuite.ConsoleApp.exe.config ファイルを開きます。
重要
構成ファイルを変更する前に、その環境で実行中のすべての RSAT アプリを必ず終了してください。
どちらのファイルにも、構成する必要のある主要な設定が 1 つあります。 以下のように、ParallelExecution の値を true に設定します。
<add key="ParallelExecution" value="true" />
使用している環境のリソースに制限がある可能性があるため、並列実行の使用を制限したい場合もあります。 したがって、次の 3 つの設定により、環境内でどの程度 RSAT の並列実行を許可するかを構成することができます。
- SupportedInstances – この設定は、この環境で同時に実行できる RSAT アプリケーションの数を定義します。 この設定は、環境内のすべてのユーザーによって共有されます。 したがって、既定値 5 が使用され、1 人のユーザーが 3 つの RSAT アプリを開く場合、2 番目のユーザーは 2 つの RSAT アプリのみを開くことができます。
- SupportedUsers – この設定は、環境で RSAT アプリを開くことができる同時ユーザー数を定義します。 既定値は 10 です。
- SupportedTestCasesForEachInstanceSimultaneously – この設定は、環境で同時に開始できるテスト ケースの数を定義します。 この値は非常に高い数値に設定されており、考慮する必要はほとんどありません。 既定値の 10000 は、ほとんどの環境に適しているはずです。 この値は、環境で多少のメモリ消費を引き起こしますが、気にするほどではありません。
次の例は、既定値がそれら 3 つの設定で使用された場合を示しています。
<add key="SupportedInstances" value="5" /><br>
<add key="SupportedUsers" value="10" />
<add key="SupportedTestCasesForEachInstanceSimultaneously" value="10000" />
RSAT を開くたびに、構成ファイルに保存されている新しい設定が自動的に使用されます。
RSAT 並列実行のベスト プラクティス
RSAT バージョン 2.3 をインストールしたら、すぐに RSAT アプリを開き、設定に問題がないことを確認します。 問題なければ、テスト スイートに戻って設定を保存します。 このベスト プラクティスは並列実行に固有のものではありませんが、並列実行を使用している場合は特に重要です。 並列実行はテスト実行を分離しようとし、以前は一部の設定が CloudEnvironment.config という名前のファイルに保存されていました。このファイルは、必要なデータのソースではなくなりました。 代わりに、そのデータがユーザー資格情報マネージャーに移動されました。 このようにして、RSAT は CloudEnvironment.config ファイルを動的に変更して、各テストの実行を一致させ、複数のユーザーをサポートすることができます。
テストを互いに独立したスイートに整理することを検討します。 つまり、どのスイートも別のスイートにデータ依存関係を持つべきではありません。 各スイートは、他のスイートの前に実行することも、並行して実行することも可能であるべきです。 テストを独立させ、並列に実行できるようにするためには、おそらくいくつかの作業が必要になります。
テストを維持するために、一度にひとつの RSAT アプリだけを使用することを検討します。 テストを維持する際に、ローカル ファイルを変更し、それらの変更をアップロードする必要があります。 同時に 2 つの RSAT アプリを使用してテストを維持すると、1 つの RSAT アプリが他の RSAT アプリのファイルを上書きする危険性があります。 テストを実行するために、追加の RSAT アプリを使用することができます。
テストの実行に使用する RSAT アプリごとに、異なる作業ディレクトリを指定するために個別の設定を使用することを検討します。 この方法で、複数のアプリを使用してテストを実行する場合に、ファイルの競合を防ぎ、RSAT アプリが別の RSAT アプリのファイルを上書きするリスクを減らすことができます。 このプラクティスは、CLI を介して実行される RSAT にとって特に重要です。
Azure DevOps では、各テスト ケースに一意の ID が割り当てられています。 しかし、テスト ケースは複数のテスト スイートで再利用できます。 したがって、2 つのテスト実行で同じテスト ケースを実行することが必要になり、ケースがブロックされるリスクがあります。 RSAT は、別の RSAT アプリがすでに実行しているときに、ケースを実行しようとする RSAT アプリの実行を中止します。 競合を防ぐために、テスト ケースの再利用を最小限に抑える必要があります。 残念ながら、ローカル ファイルはテスト ケース ID ごとに編成されており、競合が発生する可能性があります。 このような状況が避けられない場合、RSAT が状況を管理できるように再試行コマンド ライン スイッチの使用を検討してください。
共有環境は、一度に 1 つの財務と運用のテスト環境とのみ対話するように構成できます。 各テスト環境は、独自の証明書のセットがあります。 したがって、別の環境に切り替える場合は、新しい証明書をインストールする必要があります。 環境内で管理アクセス権を持つユーザーは、新しい証明書をインストールできます。 ただし、管理アクセス権を持たないユーザーは、RSAT の実行に使用する環境でテスト環境を変更するたびに、環境で新しい証明書をインストールし、非管理者スクリプトを実行する助けが必要になります。 このプロセスは煩雑なので、定期的に変更されるテスト環境を回避できるように、各テスト環境に少なくとも 1 つの共有環境を割り当てることが可能かどうかを検討してください。
メモ
RSAT の実行に使用される環境は、一度に 1 つのテスト環境でのみ機能するように構成できます。 この制限があるのは、テスト環境へのアクセスに使用される証明書を通信ポート 745 にバインドする必要があり、一度に 1 つのテスト環境からの証明書のセットを 1 つだけバインドするためです。
新しい管理者以外のユーザーが共有環境の使用を開始した場合、そのユーザーに対して非管理者スクリプトを実行して、重要な RSAT リソースにアクセスできるようにする必要があります。