Accelerating Testing at Reduced Costs の翻訳版です。
より低コストでテストを加速させる
2020年10月29日
著者: Navnit Kumar Singh / Software Test Architect 共著: Shivi Sivasubramanian / Technical Lead
多くの組織にとって、アジャイルおよび継続的なソフトウェアデリバリのトレンドに追いつくためのテストプロセスを定義することは、大きな課題です。
そして、この課題を克服するために、多くのソフトウェアチームは通常、テストの自動化や追加のスクリプトを導入しています。しかし、より自動化された UI テストが必ずしも効率的なプロセスとは限りません。
テストの実行時間は、テストスイートのサイズに正比例します。特にこのようなシナリオでは、テストを自動化する目的は達成されません。この記事では、HCL OneTest UI (HOT UI) が、テストの自動化に関連する最も一般的な問題を克服するのにどのように役立つかを概説します。
このブログ記事では、以下の用語を使用しています。
スピードを上げる、遅くするのではなく
テストを高速化する最も強力な方法は、テストを並列に実行することです。すべてのテストスクリプトを単一のノードで実行するのではなく、多くのノードに分散して実行します。例えば、100個のテストを 10個以上のノードで並列に実行すると、実行時間は実際の実行時間のわずか10分の1にまで短縮されます。
時間を節約できるだけでなく、テストの実行を並列化することで、テストカバレッジを大幅に向上させることができます。
自動化されたテストを並行して実行するための準備をする際には、以下の要件を考慮してください。
テスト実行の高速化
HCL Software は、HCL OneTest UI と呼ばれるGUI自動化機能テストツールを提供しており、記録することで自動テスト用のテストスクリプトを素早く生成することができます。これらのテストスクリプトは、逐次的にも並列的にも実行することができます。そのシンプルなUIを使用して、並列テスト実行用のアトミック・スクリプトを生成したり (「記録中にテストを分割する」を参照) 、並列テスト実行のためのさまざまな機能を活用したり、テスト・データを自動管理したりすることができます。
HCL OneTest UI は、複数のブラウザーと複数のノードに同時にテスト実行を分散させる方法を提供することで、テストを高速化するのに役立ちます (「分散テストによるテスト作業の高速化」を参照してください)。HOTUI で並列テストを実行するには、加速機能テストアセット (AFT) を設定する必要があります。AFT は、複数の接続されたノードと利用可能なブラウザー上で並列テストを実行するために必要なすべての情報を含む XML ファイルです。
典型的なAFTテストスイートは次のようになります。
増速機能テストの設定方法の詳細は、「増速機能テスト・アセットの作成」を参照してください。
テスト実行の分散を制御する
AFT テストスイートを実行すると、そのテストスイートの一部である WebUI テストが複数の接続されたノードに分散され、テストを並行して実行するための複数のチャネル (またはストリーム) が容易になります。ノード上で並列に実行できるテストの数は、Web UI Playback (Desktop) 環境設定 (Window > Preferences > Test > Test Execution > Web UI Playback (Desktop) ) で「配布用エージェントごとの並列チャンネル数」を整数値に設定することで、HOTUI 環境設定で定義したチャンネル数に依存します。
というわけで、並列チャンネル数を決定する際には、接続されているノードの構成も考慮する必要があります。
HOTUI では、以下の方法で並列テストの実行を配布することができます。
選択されたテストの数、または AFT テストスイートの一部であるテストの数が、利用可能なチャンネルの数よりも多い場合、各チャンネルは複数の Web UI テストを収容するように構成できます。Web UI テストは、チャンネル間で並行して実行され、チャンネル内では順次実行されます。
並列実行可能なテストの最大数=(配信用のノードごとの並列チャンネル数)×(接続されたノード数)
注: 複合テストを実行する場合、複合テストの数に選択したブラウザの数を乗じた数がチャンネル数を超えないようにしてください。
レポートの表示
テスト実行の終了時には、テストの詳細、実行環境、状態、場所(ノードの詳細)など、実行の詳細と概要をまとめたレポートが生成されます(スクリーンショット参照)。
データ駆動型テストをいかに簡単に加速させるかの詳細についてはこちらをご覧ください。