TestComplete - 技術情報

各機能の設定方法の紹介の一覧に戻る

Distributed Test (分散テスト)

 

■ 機能の目的

通常のテストは 1 台の PC で実行され、他のマシンと相互に作用することができませんが、分散テストを用いることで、異なるマシンと相互に作用するテストが可能です。 TestComplete ではリモートコンピューター上のテストを開始するための機能を提供し、テスト実行中のプロジェクト間のデータの交換や、テストプロジェクトの同期を行います。

テストを複数台のマシンで同時に実行することで、テストに掛かる時間の短縮や、サーバーサイドのアプリケーションに対して、複数台のマシンから同期を取りながら操作を実行するなど、より手動テストに近いテストの実施が可能です。

TestComplete で分散テストを利用するには、Network Suite を使用します。 Network Suite は、複数のマシンにテストを実行させる機能を提供し、分散テストを管理するマスター プロジェクトに加え、リモートマシン上で実行される各スレーブ プロジェクトにも NetworkSuite を含める必要があります。

スレーブ プロジェクトは、テスト プロジェクトの機能の深いレベルで、マスター プロジェクトになることができます。 TestComplete では以下のように複数の階層レベルでの分散テストの実行が可能です。

しかしながら、多くの場合、分散テストはマスター プロジェクトと、スレーブ プロジェクトの 2 つの階層だけを含む形で構成されます。

もう 1 つ重要なポイントとして SynchPoint の機能があります。SynchPoint の機能を使用することで、複数のプロジェクトの実行中に、ある時点で同期を取ることが可能です。この機能は後半で説明します。

 

■ 環境設定に関する注意点

  • 分散テストに関わるすべてのマシンに TestComplete または TestExecute がインストールされ、TestComplete XX Service が実行されている必要があります。

    なお、デフォルトでは、システムのスタートアップ時にこのサービスは自動的に実行されています。

  • 分散テストを実行するために、Windows のファイアウォールを通して、TestComplete XX Service が実行できるように許可する必要があります。

    また、ウイルスバスターなどのセキュリティソフトウェアのファイアウォールが影響するケースもあります。
    Windows ファイアウォールに除外設定を行う際は、以下のスクリーンショットを参考にしてください。(Windows10 の例)




  • TCP ポートを使用して通信を行いますが、すべてのマシンで同じポートの設定にする必要があります。
    デフォルトでは、TestComplete は 6090-6092 を使用します。

    この設定は、TestComplete を起動し、[Tools] - [Options...] - [Network Suite] から変更可能です。

 

■ 設定方法

このチュートリアルでは、3 台のマシンに関連したテストを作成します。 そのうち 1 台はマスターマシンとして使用され、その他の 2 台のマシンが分散テストのスレーブマシンとなります。

  1. TestComplete を起動し、Project Suite 内に Project を 2 つ作成します (実行するテストも作成しておきます)。
    例:Master_Project / Slave_Project

    Project を右クリックし、コンテキストメニューから、[Add] - [New Item...] で "Network Suite" を選択します。
    (Master と Slave の両方のプロジェクトに追加します)



    Project Explorer の構成は以下のようになります。


  2. Master_Project の Network Suite を展開し、Host にアイテムを 2 つ追加します。

    各項目の説明:

    Name : 名称の設定

    Address : リモートマシンのマシン名または、IP アドレスの設定

    Login mode : 以下の 3 種類から選択

    • Automatic (RDP Session) : リモートデスクトップのセッションを使用して接続します。(リモートマシンはサインアウトされ、ロックされます)
    • Automatic (Console Session) : リモートマシンをロックせずに実行します。
    • Manual: リモートデスクトップで接続している状態で、そのセッションを利用して実行します。

    Domain : マシンのドメイン名の設定

    User name : ログインするユーザー名の設定

    Password : ログインするユーザーのパスワードの設定

    Base path : プロジェクトを保存する先のディレクトリーの設定

    各リモートマシンへの接続をチェックするには、[Verify] ボタンをクリックしてください。

  3. 上記を設定後、[Copy Project to Slave] ボタンをクリックし、リモートマシンにプロジェクトをコピーします。

    または、NetworkSuite をダブルクリックし、Deply mode: を "Automatic" に変更します。

  4. Network Suite 以下の "Jobs" に 1 つの Job を追加し、その Job に対して、2 つの Task を追加します。

    各項目の説明:

    Active : チェックが入っている Task が実行されます。

    Name : Task 名の設定

    Host : Host の選択

    Host timeout (min.) : リモートマシンからの応答待ちの際の待機時間の設定

    Copy remote log : リモートマシンへのログの保存の設定

    Action after run : テスト終了後の動作の設定(TestComplete を終了する、マシンをシャットダウンする、何もしないなど)

    Tag : コメントの入力(任意)

    Test : 実行するテストプロジェクトの選択

    Use Previous instance : 分散テストの実行時に、リモートマシンで TestComplete または TestExecute のセッションが開かれている場合の設定

    Remote Application : 実行するアプリケーション(TestComplete または TestExecute)の選択


  5. 2 台のリモートマシンでテストを実行します。
    Master_Project ツリー内の NetworkSuite を右クリックし、コンテキスト メニューの [Run NetworkSuite] を選択します。

    テストが開始されると、以下のように Workspace 内 "Run State" タブが表示され、各マシンの実行状況をモニタリングすることができます。

    テストの完了後にログが表示されます。


    Run State タブ


    テスト ログ

分散テストを使用することで、このように 1 台のマスターマシンから、異なる複数のマシンにテストを実行させることが可能です。

 

■ テストの同期について

分散テストの機能として、各テストが同期を取りながら相互に動作するように Synchpoint の機能が用意されています。

この機能を使用することで、複数のテストを同時に実行し、一方のテストの動作を同期点で停止し、 もう一方のテストが同期点に到達するまで待機させることができます。

以下の図の例では、プロジェクトA は同期点 (SynchPoint) に到達していますが、プロジェクト B、C が SynchPoint に到達するまで待機します。 SynchPoint 到達後は、すべてのプロジェクトは残りのテストシナリオを実行します。


利用シーンとしては、1 台のマシンでは、データベースの登録作業を行い、別のマシンでは、データベースに登録された情報をチェックするために、登録作業が完了するまで待機するようなケースで使用できます。
先程作成した分散テストを元に、設定方法を説明いたします。

■ 設定方法

  1. Slave_Project に追加した、NetworkSuite 内の "SynchPoints" アイテムを右クリックし、[Add] - [New Item...] を選択し、SynchPoint を追加します。


  2. キーワードテストでは、SynchPoint 用のオペレーションが用意されていませんが、Test Actions 内の "Run Code Snippet" を使用することで、キーワードテストから SynchPoint を利用できます。
    コード例: NetworkSuite.Synchronize("Synchpoint1")

    今回の例では、Remote1 で実行される "Test1" では、メモ帳に「テスト1-4」を順番に入力していきます。
    SynchPoint は、テスト3 と 4 の間に挿入されています。

    Remote2 で実行される "Test2" では、メモ帳に「テストA-D」を順番に入力していきます。
    SynchPoint は、テストC と D の間に挿入されています。

    どちらかが先に SynchPoint に到達した場合に、先に到達したテストが、その時点で待機する状態となります。


    Test1


    Test2

  3. 実行前にプロジェクトを保存し、手動でリモートマシンにプロジェクトをコピーするか、自動コピーの設定をして、リモート環境にプロジェクトを保存します。

  4. Master_Project の NetworkSuite から分散テストを実行します。

    今回のサンプルでは、SynchPoint での待ち状態を分かりやすくするため、Test2 には予め Delay メソッドを挿入し、SynchPoint までの到達時間を長くしています。

    そのため、Test1 を実行している Task1 (画面左) は先に SynchPoint に到達し、待ち状態 (Synchronizing) となっていますが、 Test2 を実行している Task2 (画面右) は 実行中 (Running) のステータスになっています。

    ログには SynchPoint での待ち時間が記録されています。

 

Distributed Test (分散テスト) および、SynchPoint の詳細はヘルプでもご確認いただけます。
https://support.smartbear.com/viewarticle/68071/

チュートリアルも参考にしてください。
https://support.smartbear.com/articles/testcomplete/distributed-testing-tutorial/

※ Google Chrome で開き、右クリックのコンテキストメニューの「日本語に翻訳(T)」 機能をご使用いただくと、機械翻訳された内容でご覧いただけます。

 

ページ トップに戻る