単一マシンでの複数 UI セッションのアプリケーションのテスト

単一マシンで複数の UI セッションを持つアプリケーションや、単一マシンで複数のエージェントをテストするには、そのマシンで複数の Open Agent インスタンスに接続します。すべてのエージェントがそれ自身の UI セッションで実行します。UI セッションは、リモート デスクトップ プロトコル (RDP) や Citrix ベースの接続です。

  1. UI セッションを作成します。
  2. コマンドライン ウィンドウを開きます。
  3. Silk Test インストール ディレクトリの /ng/agent フォルダに移動します。 たとえば、デフォルトでは、フォルダのパスは次のようになります:C:\Program Files (x86)\Silk\SilkTest\ng\agent
  4. 各 UI セッションで、次のコマンドを実行します: openAgent.exe -infoServicePort=<port> -infoServiceSecurePort=<securePort>
    注: これらのポート番号は、Silk4J スクリプトで Open Agent とエージェントが実行している UI セッションを識別するために使用されるため、一意のポート番号を使用してください。infoServicePort オプションで設定したポートは、Open Agent と Information Service 間における暗号化されない HTTP 通信を行うために使用されます。 infoServiceSecurePort オプションで設定したポートは、暗号化された HTTPS 通信を行うために使用されます。
  5. Silk4J スクリプトを変更して、Open Agent インスタンスに接続します。 Open Agent インスタンスに接続するために、スクリプトに次の行を追加します。
    Desktop desktopSession = new Desktop("hostname:port");
    ここで、hostname はエージェントを実行しているマシンの名前で、port は指定した一意のポート番号で、HTTP ポートまたは HTTPS ポートのいずれかになります。
結果のオブジェクトは互いに独立しており、単一スレッド、複数スレッドのどちらででも使用することができます。
注: 複数の UI セッションでアプリケーションを起動する場合には、それぞれの UI セッションに対して基本状態を実行する必要があります。
注: リモート マシン上の複数の UI セッションでアプリケーションをテストするときに TrueLog を使用するには、生成された TrueLog ファイルをリモート マシンからローカル マシンに手動でコピーする必要があります。

複数の UI セッションをホストしているサーバー マシンの名前を ui-srv とします。ポート番号 22903/48563、22904/48564、22905/48565 を使用して 3 つの UI セッションを作成します。

最初のセッションのために、コマンドライン ウィンドウを開き、agent ディレクトリに移動して、次を入力します。
openAgent.exe -infoServicePort=22903 -infoServiceSecurePort=48563

他の 2 つのセッション対して、ポート番号 22904/48564 および 22905/48565 をそれぞれ使用して同じことを行います。

Open Agent インスタンスに接続するために、スクリプトに次の行を追加します。
Desktop desktopSession1 = new Desktop("ui-srv:22903"); // or 48563 for secure HTTPS communication
Desktop desktopSession2 = new Desktop("ui-srv:22904"); // or 48564 for secure HTTPS communication
Desktop desktopSession3 = new Desktop("ui-srv:22905"); // or 48565 for secure HTTPS communication
次のサンプル スクリプトでは、3 つの UI セッションそれぞれに対して単純なテキストを出力します。
public class TestMultiSession {
  Desktop d1 = new Desktop("ui-srv:22903");
  Desktop d2 = new Desktop("ui-srv:22904");
  Desktop d3 = new Desktop("ui-srv:22905");
		   
  @Test
  public void test() {
    BaseState basestate = new BaseState();
    basestate.execute(d1);
    basestate.execute(d2);
    basestate.execute(d3);
          
    d1.<Window>find("//Window").typeKeys("Hello to session 1!");
    d2.<Window>find("//Window").typeKeys("Hello to session 2!");
    d3.<Window>find("//Window").typeKeys("Hello to session 3!");
  }
}