単一マシンでの複数 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>
    注: このポート番号は、Silk4NET スクリプトで Open Agent とエージェントが実行している UI セッションを識別するために使用されるため、一意のポート番号を使用してください。
  5. Silk4NET スクリプトを変更して、Open Agent インスタンスに接続します。 Open Agent インスタンスに接続するために、スクリプトに次の行を追加します。
    // VB .NET code
    Private agent As RemoteAgent = Agent.Connect("hostname:port")
    // C# code
    private RemoteAgent agent = Agent.Connect("hostname:port");
    ここで、hostname はエージェントが実行しているマシンの名前で、port は指定した一意のポート番号です。
結果のオブジェクトは互いに独立しており、単一スレッド、複数スレッドのどちらででも使用することができます。
注: 複数の UI セッションでアプリケーションを起動する場合には、それぞれの UI セッションに対して基本状態を実行する必要があります。
次のクラスには、複数のエージェントまたは複数のセッションでのテストを行うためのメソッドのオーバーロードがあります。
  • Agent
  • BaseState
  • BrowserBaseState
  • Clipboard
  • ConsoleWindow
  • Desktop
  • DllCall
注: リモート マシン上の複数の UI セッションでアプリケーションをテストするときに TrueLog を使用するには、生成された TrueLog ファイルをリモート マシンからローカル マシンに手動でコピーする必要があります。

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

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

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

Open Agent インスタンスに接続するために、スクリプトに次の行を追加します。
// VB .NET code
Private agent1 As RemoteAgent = Agent.Connect("ui-srv:22903")
Private agent2 As RemoteAgent = Agent.Connect("ui-srv:22904")
Private agent3 As RemoteAgent = Agent.Connect("ui-srv:22905")
// C# code
private RemoteAgent agent1 = Agent.Connect("ui-srv:22903");
private RemoteAgent agent2 = Agent.Connect("ui-srv:22904");
private RemoteAgent agent3 = Agent.Connect("ui-srv:22905");
次のサンプル スクリプトでは、3 つの UI セッションそれぞれに対して単純なテキストを出力します。
// VB .NET code
<SilkTestClass()> Public Class TestMultiSession

  Private agent1 As RemoteAgent = Agent.Connect("ui-srv:22903")
  Private agent2 As RemoteAgent = Agent.Connect("ui-srv:22904")
  Private agent3 As RemoteAgent = Agent.Connect("ui-srv:22905")

  <TestMethod()> Public Sub Test()
    Dim d1 As Desktop = agent1.Desktop
    Dim d2 As Desktop = agent2.Desktop
    Dim d3 As Desktop = agent3.Desktop

    Dim baseState = New BaseState()
    agent1.ExecuteBaseState(baseState)
    agent2.ExecuteBaseState(baseState)
    agent3.ExecuteBaseState(baseState)

    d1.Window("@caption='My Application'").TypeKeys("Hello to session 1!")
    d2.Window("@caption='My Application'").TypeKeys("Hello to session 2!")
    d3.Window("@caption='My Application'").TypeKeys("Hello to session 3!")
  End Sub
End Class
// C# code
[SilkTestClass]
  public class TestMultiSession {

    private RemoteAgent agent1 = Agent.Connect("ui-srv:22903");
    private RemoteAgent agent2 = Agent.Connect("ui-srv:22904");
    private RemoteAgent agent3 = Agent.Connect("ui-srv:22905");

    [TestMethod]
    public void Test() {
      Desktop d1 = agent1.Desktop;
      Desktop d2 = agent2.Desktop;
      Desktop d3 = agent3.Desktop;
      
      BaseState basestate = new BaseState();
      agent1.ExecuteBaseState(basestate);
      agent2.ExecuteBaseState(basestate);
      agent3.ExecuteBaseState(basestate);
      
      d1.Window("@caption='My Application'").TypeKeys("Hello to session 1!");
      d2.Window("@caption='My Application'").TypeKeys("Hello to session 2!");
      d3.Window("@caption='My Application'").TypeKeys("Hello to session 3!");
    }
  }