より低コストでテストを加速させる

2020/10/30 - 読み終える時間: 4 分

Accelerating Testing at Reduced Costs の翻訳版です。


より低コストでテストを加速させる

2020年10月29日

著者: Navnit Kumar Singh / Software Test Architect 共著: Shivi Sivasubramanian / Technical Lead

画像の説明

多くの組織にとって、アジャイルおよび継続的なソフトウェアデリバリのトレンドに追いつくためのテストプロセスを定義することは、大きな課題です。

そして、この課題を克服するために、多くのソフトウェアチームは通常、テストの自動化や追加のスクリプトを導入しています。しかし、より自動化された UI テストが必ずしも効率的なプロセスとは限りません。

テストの実行時間は、テストスイートのサイズに正比例します。特にこのようなシナリオでは、テストを自動化する目的は達成されません。この記事では、HCL OneTest UI (HOT UI) が、テストの自動化に関連する最も一般的な問題を克服するのにどのように役立つかを概説します。

このブログ記事では、以下の用語を使用しています。

  • ノード - 物理的または仮想的なマシン、Docker イメージ、モバイルデバイス、またはエミュレータ
  • Channel - テストが実行されるブラウザーのアクティブなインスタンス

スピードを上げる、遅くするのではなく

テストを高速化する最も強力な方法は、テストを並列に実行することです。すべてのテストスクリプトを単一のノードで実行するのではなく、多くのノードに分散して実行します。例えば、100個のテストを 10個以上のノードで並列に実行すると、実行時間は実際の実行時間のわずか10分の1にまで短縮されます。

画像の説明

時間を節約できるだけでなく、テストの実行を並列化することで、テストカバレッジを大幅に向上させることができます。

自動化されたテストを並行して実行するための準備をする際には、以下の要件を考慮してください。

  • アトミックテストと自律テスト
  • ノード間の通信が適切に処理されるテスト環境
  • テスト実行のための単一の統合レポート
  • テストデータを迅速かつ正確に管理する方法

テスト実行の高速化

HCL Software は、HCL OneTest UI と呼ばれるGUI自動化機能テストツールを提供しており、記録することで自動テスト用のテストスクリプトを素早く生成することができます。これらのテストスクリプトは、逐次的にも並列的にも実行することができます。そのシンプルなUIを使用して、並列テスト実行用のアトミック・スクリプトを生成したり (「記録中にテストを分割する」を参照) 、並列テスト実行のためのさまざまな機能を活用したり、テスト・データを自動管理したりすることができます。

HCL OneTest UI は、複数のブラウザーと複数のノードに同時にテスト実行を分散させる方法を提供することで、テストを高速化するのに役立ちます (「分散テストによるテスト作業の高速化」を参照してください)。HOTUI で並列テストを実行するには、加速機能テストアセット (AFT) を設定する必要があります。AFT は、複数の接続されたノードと利用可能なブラウザー上で並列テストを実行するために必要なすべての情報を含む XML ファイルです。

  • テスト スクリプトの詳細。テストスクリプトの詳細: 並列実行するすべてのテストスクリプトの名前と場所
  • ブラウザーの詳細 .... テストを実行するブラウザー
  • Locations ............... テストが実行されるノードの場所
  • グループ ..................... テスト、ブラウザー、ロケーションのグループ

典型的なAFTテストスイートは次のようになります。

画像の説明

  1. AFT テストスイート

増速機能テストの設定方法の詳細は、「増速機能テスト・アセットの作成」を参照してください。

テスト実行の分散を制御する

AFT テストスイートを実行すると、そのテストスイートの一部である WebUI テストが複数の接続されたノードに分散され、テストを並行して実行するための複数のチャネル (またはストリーム) が容易になります。ノード上で並列に実行できるテストの数は、Web UI Playback (Desktop) 環境設定 (Window > Preferences > Test > Test Execution > Web UI Playback (Desktop) ) で「配布用エージェントごとの並列チャンネル数」を整数値に設定することで、HOTUI 環境設定で定義したチャンネル数に依存します。

画像の説明

  1. HOTUI 環境設定 - 並列テストの実行回数の設定

というわけで、並列チャンネル数を決定する際には、接続されているノードの構成も考慮する必要があります。

HOTUI では、以下の方法で並列テストの実行を配布することができます。

  • 自動配布 実行時間を最小化する観点から、実行テストの配分は HOTUI によって完全に制御されています。選択された WebUI テストまたは AFT スイートのテストの一部は、個々のテストの実行時間に基づいて、指定されたチャンネル数に事前に配置され、各チャンネルの合計実行時間のバランスをとります。
  • 選択的な配布 グループを作成することで、どのテストをどの接続ノードで、どのブラウザーで実行するかを決めることができます。グループの一部であるすべてのテストは、そのグループに関連付けられているすべてのブラウザー上で実行され、実行はそのグループで定義されているすべてのノードに分散されます。

選択されたテストの数、または AFT テストスイートの一部であるテストの数が、利用可能なチャンネルの数よりも多い場合、各チャンネルは複数の Web UI テストを収容するように構成できます。Web UI テストは、チャンネル間で並行して実行され、チャンネル内では順次実行されます。

並列実行可能なテストの最大数=(配信用のノードごとの並列チャンネル数)×(接続されたノード数)

注: 複合テストを実行する場合、複合テストの数に選択したブラウザの数を乗じた数がチャンネル数を超えないようにしてください。

レポートの表示

テスト実行の終了時には、テストの詳細、実行環境、状態、場所(ノードの詳細)など、実行の詳細と概要をまとめたレポートが生成されます(スクリーンショット参照)。

  1. レポート-並列テスト実行

画像の説明

  1. レポート拡張-並列テスト実行

画像の説明

データ駆動型テストをいかに簡単に加速させるかの詳細についてはこちらをご覧ください。

このブログについて

HCL Japan の Software 部門の複数担当者で HCL Software 全般について記しています。