English Japanese
English Japanese

schedule


ワークアイテム

目次:

1. 概要

スケジューリングは、v4.0で追加された新機能です。1つ以上のテストスクリプトを単一のRobotプロセス内で実行する順序を定義する「ワークアイテム」(旧称「スケジュール」)を作成できます。主な特長は次のとおりです:

  • スクリプトの逐次実行および並列実行。逐次実行されるスクリプトは、直前のスクリプトの結果に応じて制約を課すことができます。例えば 「スクリプトAがPASS結果で終了した場合のみスクリプトBを実行する」のように指定できます。

  • 実行のスケジューリング。ワークアイテムには開始時刻の制約を設定でき、即時開始、遅延後の開始、指定日時での開始、または(cronスケジューリングによる)定期的な繰り返し実行を指定できます。

  • 高度なレポート機能。ワークアイテムは、ほとんどのWebブラウザで閲覧可能なグラフィカルなレポートを生成します。

  • スクリプトと同様の簡単な管理。ワークアイテムは、個々のテストスクリプトと同じ方法で、RobotのGUIから、-r CLIオプションを使って、またはJava APIから起動・管理できます。

2. ワークアイテムの作成

ワークアイテムは、プロジェクトの schedules/ フォルダ内にXMLファイルとして物理的に保存されます。テストスクリプトは相対ファイルパスで参照されるため、プロジェクト全体を移動または名前変更しても機能し続けます。

2.1 空のワークアイテムの作成

テストスイートは、ワークアイテムエディタツールを使用して簡単に作成・管理できます。ワークアイテムを作成するには、次のいずれかを行います:

  • ワークアイテムノード(プロジェクトビュー内)を右クリックし、コンテキストメニューで「作成 ワークアイテム...」を選択します。

  • ワークアイテムツールバーボタンをクリックします。

  • メインメニューでスクリプト→ワークアイテムを選択します。

image-20250512-153706.png


サブタイトルが「開始設定」の青い四角形は、最上位のワークアイテムオブジェクトを表します。下部のタブ付きペインから、ワークアイテムの属性にアクセスできます:

プロパティタブには、ワークアイテムレポートの作成方法を設定する「レポート詳細」セクションがあります:

  • 「レポートの保存先」ドロップダウンは、デフォルトではプロジェクトのレポート保存場所配下の一意なフォルダにレポートを保存するよう設定されています。この設定では、プロジェクトビューの結果ノード配下にレポートが表示されるため、推奨設定となっています。もう一方のドロップダウンオプションでは、レポートファイルの出力先をカスタマイズできます。

  • 「カスタムXSLを使用」フィールドでは、レポートを外部のXSLファイルにリンクできます。レポート自体はXMLファイルであり、XSLT準拠の任意のWebブラウザで閲覧できるようにExtensible Stylesheet Language(XSL)ファイルにリンクされています。このオプションを使用して、レポートの外観をカスタマイズしたXSLファイルにリンクすることができます。

スケジューリングタブでは、「開始タイプ」プロパティを設定できます。これは、ワークアイテムの開始方法を定義するものです(開始オプションについてはワークアイテムの実行を参照):

  • 起動直後 - 遅延なしですぐに開始します。

  • 指定した遅延後 - 指定したタイムアウト後に開始します。

  • 定期スケジュール(cron) - 設定した間隔で繰り返し実行します。例えば「毎週月曜日の午後10時にスクリプトを実行する」といったスケジューリングに使用できます。このモードでは、タスクの実行後にワークアイテムが停止することはなく、停止操作が行われるか、Robotプロセスが終了するまで実行され続けます。

  • 指定した日時 - 指定した日時に開始します。

レポート詳細セクションでは、ワークアイテムレポートの作成方法を設定できます:

  • 「サマリーレポートを作成する」フィールドで、レポート機能のオン/オフを設定します。レポートはXMLファイルであり、リンクされたXSLにより、XSLT準拠の任意のWebブラウザで表示できます。オンラインのワークアイテムレポートの例はこちらです。

  • 「レポートの保存先」ドロップダウンは、デフォルトではプロジェクトのレポート保存場所配下の一意なフォルダにレポートを保存するよう設定されています。この設定では、プロジェクトビューのテスト結果ノード配下にレポートが表示されるため、推奨設定となっています。もう一方のドロップダウンオプションでは、レポートファイルの出力先をカスタマイズできます。
    バージョン4.1.4以降、このフィールドは複数のレポートに対応しています。オプションを「カスタムファイル」に設定すると、セミコロン(;)区切りでフォルダまたはXMLファイルを指定できる新しいフィールドが表示されます。フォルダを指定した場合、ワークアイテムはレポートを <folder>/summary.xml に保存します。

  • 「カスタムXSLを使用」フィールドでは、レポートを外部のXSLファイルにリンクできます。レポート自体はXMLファイルであり、XSLT準拠の任意のWebブラウザで閲覧できるようにExtensible Stylesheet Language(XSL)ファイルにリンクされています。このオプションを使用して、レポートの外観をカスタマイズしたXSLファイルにリンクすることができます。

  • 「実行 ワークアイテム」オプションは、ワークアイテムを実行する回数を指定します。デフォルト値は1(1回実行)です。

入力パラメータタブでは、ワークアイテムの実行に必要な任意のパラメータを定義します。これらは変数の形式でワークアイテムスクリプトに公開されます(基本についてはVariables文書、VarおよびVargコマンドを参照してください)。

  • ワークアイテムをGUIから手動で開始すると、パラメータの入力を求めるポップアップウィンドウが表示されます。

  • 無人自動化の場合(例えば-r/--run CLIオプションを使用する場合)、パラメータは-v/--variableおよび--variable-sessionオプションを使用して注入できます。

出力パラメータタブでは、任意の出力パラメータ、すなわちT-Plan RAPなどの外部プロセスに公開される、ワークアイテムスクリプトによって作成された変数を定義します。

2.2 ワークアイテムへのスクリプトの追加

ワークアイテムに最初のスクリプトを追加するには、最上位オブジェクト(四角形)である「開始設定」を選択(クリック)し、次のいずれかを行います:

  • オブジェクトを右クリックし、「スクリプトの追加」メニュー項目を選択します

  • ワークアイテムエディタのツールバーにある worddav3ac205cfa09d23a7aa13da18447b4777.png アイコンをクリックします

  • プロジェクトビューのスクリプトブランチからスクリプトをドラッグし、オブジェクト上またはワークアイテムビュー内の任意の場所にドロップします。

  • 開いているスクリプトエディタのタブをドラッグします。

スクリプトは、スクリプトファイル名を付けた新しいボックスとしてビューに表示されます。任意の表示名を付けることもできます。さらにスクリプトを追加するには:

  • 上記の手順を使用して、最上位オブジェクトに他のスクリプト呼び出しを追加します。このようなスクリプトは並列で開始されます。

  • スクリプトに依存する(そのスクリプトに続いて実行され、完了を待つ)スクリプトを追加するには、そのスクリプトのボックスをクリックし、上記で説明した3つの操作のいずれかを実行します。

例として、モバイルアプリケーションの自動化を考えます。これをiOS(iOS.tpr)とAndroid(Android.tpr)で自動化する2つのスクリプトがあるとします。まずiOS 6デバイスで実行し、成功した場合はiOS 7でも再実行する計画です。Androidでの自動化は並列に開始されます。まずSamsung S2デバイスで実行し、成功した場合はSamsung S3で再実行します。ワークアイテムは次のようになります:

image-20250512-153752.png


ワークアイテムに最初のスクリプト(「タスク」と呼ばれる)を追加するには、最上位オブジェクト(四角形)である「開始設定」を選択(クリック)し、次のいずれかを行います:

  • オブジェクトを右クリックし、「スクリプトの追加」メニュー項目を選択します

  • ワークアイテムエディタのツールバーにある worddav3ac205cfa09d23a7aa13da18447b4777.png アイコンをクリックします

  • プロジェクトビューのテストスクリプトブランチからテストスクリプトをドラッグし、ワークアイテムオブジェクト上またはワークアイテムビュー内の任意の場所にドロップします。

タスクは、スクリプトファイル名を付けた新しいボックスとしてビューに表示されます。任意の表示名を付けることもできます。さらにスクリプトを追加するには:

  • 上記の手順を使用して、最上位オブジェクトに他のタスクを追加します。このようなタスクは並列で開始されます。並列実行には、ワークアイテムの実行の章で説明されている制限が適用されます。

  • そのタスクに依存する(そのタスクに続いて実行され、完了を待つ)新しいタスクを追加するには、タスクのボックスをクリックし、ツールバーボタンまたは右クリックのポップアップメニューを使用します。

タスクのプロパティは、下部のエディタで編集できます:

  • タスクの名前は、タスクに表示名を割り当てます。名前を指定しない場合、デフォルトでスクリプトファイル名になります。

  • CLIオプションを使用すると、タスクの実行環境を変更できます:

    • c/--connectと、任意のp/--passwordを組み合わせることで、スクリプトを実行するテスト環境(サーバーまたはデバイス)を指定できます。例えば、以下のスクリーンショットは、シリアル番号A123456の、Android Over ADB接続で接続されたAndroidデバイス上でスクリプトを開始するようRobotに指示しています。

    • v/--variableは、指定したスクリプト変数を固定値に設定します。これにより、実行固有の値をスクリプトに渡すことができます。このオプションは複数回指定して、複数の変数を設定できます。

    • n/--nodisplayやo/--optionなどの他の適用可能なCLIオプションは、Robot起動コマンドのレベルでのみ指定できます。これらは、ワークアイテム内のすべてのスクリプトに適用されます。ワークアイテムの実行の詳細については、ワークアイテムの実行の章を参照してください。

  • 「開始の依存タイプ」ラジオボタンは、タスクの開始タイミングを制御します。4つのオプションがあります:

    1. 「すぐに開始」オプションは、ワークアイテムが開始された直後にタスクを開始します。この依存タイプのタスクが2つ以上ある場合、ワークアイテムは次のようにそれらを実行します:

      • Robotプロセスがn/-nodisplayオプション付きのCLIモードで実行され、かつユーザーライセンスが複数プロセスを許可している場合、タスクは並列で開始されます。接続の競合に注意してください。すなわち、2つのタスクが同じSUTに接続しないようにしてください。

      • Robotプロセスが GUI モードで実行される場合、またはライセンスに制限がある場合、タスクは自然な順序(上から下)で逐次実行されます。

    2. 「...スクリプトの終了後に開始」は、選択したタスクが終了すると、その結果(合格または不合格)に関わらずタスクを開始します。

    3. 「...スクリプトの合格後に開始」は、選択したタスクが合格結果(終了コード0を返す)で終了した場合にのみタスクを開始します。終了コードの詳細については、Exitコマンドを参照してください。

    4. 「...スクリプトの不合格後に開始」は、選択したタスクが不合格結果(0以外の終了コードを返す)で終了した場合にのみタスクを開始します。

例として、モバイルアプリケーションのテストを考えます。これをiOS(iOS.tpr)とAndroid(Android.tpr)でテストする2つのテストスクリプトがあるとします。まずiOS 13デバイスで実行し、合格した場合はiOS 14でも再テストする計画です。Androidでのテストは並列に開始されます。まずAndroid 10デバイスで実行し、合格した場合はAndroid 11で再テストします。

3. ワークアイテムの実行

ワークアイテムは一般に、個々のテストスクリプトと同じ方法で扱われます。次の3つの方法で開始できます:

3.1 手動実行

GUIモードでワークアイテムを開始するには、ワークアイテムエディタツールでワークアイテムを開いた状態で、ツールバーの worddavae203110e28d2cccb670e7a553bec5b2.png 実行ボタン、または対応するスクリプト→実行メニュー項目を選択するだけです。実行中は、 worddavc129824528cdab00f0bbf513c70815b0.png 停止および worddav09b7dc57a23bd93e1bec630811a42616.png 一時停止ボタンを使用して、停止/一時停止できます。GUI実行の詳細については、スクリプトエディタのトピックを参照してください。

GUIでワークアイテムとテストスクリプトの両方が開かれている場合、実行ボタンは常にワークアイテムを優先します。テストスクリプトのみを実行するには、スクリプトエディタを右クリックし、コンテキストメニューからスクリプトの実行を選択します。

worddavd3c46f115fafab8c2b7e703c551119e5.png
GUIはテストスクリプトを並列で実行することができないため、常に逐次(1つずつ)実行します。並列実行を行うには、n/--nodisplayオプションと合わせてCLIまたはJava APIの実行モードを使用してください。

3.2 CLI実行

テストスクリプトと同様に、テストスイートのXMLファイルもr/--run CLIオプションを通じてRobotに渡すことができます。これによりRobotが起動し、ワークアイテムを実行して終了します。2つのモードがあります:

  • GUIモード(デフォルト)は、RobotのGUIを開き、ワークアイテムを読み込んで実行し、終了します。並列スクリプトは逐次実行されます。起動コマンド:

<Robot_start_command> -r <workitem_XML_file_path>

  • CLIモードは、n/--nodisplayオプションで起動します。本番環境へのデプロイに推奨されるモードです。GUIを開かないため、メモリ要件が大幅に少なく、より高速です。また、telnetやssh経由でリモートから開始する実行にも適しています。ワークアイテムに並列スクリプトが含まれている場合、それらは並列で開始されます。コマンド:

<Robot_start_command> -n -r <workitem_XML_file_path>

プロセス終了コード

  • バージョン4.4.2までは、ワークアイテムは正常に完了すると、タスクが失敗したかどうかに関わらず、基盤となるOSに終了コード0(PASS)を返していました。0以外の終了コードは、予期しないエラーやクラッシュ用に予約されています。

  • バージョン4.4.3以降、ワークアイテムは、すべてのタスクが合格した場合は0を返し、それ以外の場合は最初に失敗したタスクの終了コードを返します。これにより、継続的インテグレーションなどの外部フレームワークから結果を検出できるようになります。

3.3 Java API実行

Java APIを使用すると、サードパーティのJavaアプリケーションからワークアイテムを実行できます。この方法は、Robot駆動の自動化をカスタムフレームワークに統合するのに適しています。ワークアイテムは、main()メソッドから実行されるJavaテストスクリプトと同じ方法で扱われます。自動化ランナブルは、createAutomatedRunnable(String, String[], PrintStream, boolean)メソッドを通じて作成でき、この場合ワークアイテムのファイルパスは引数内の-r/--runオプションを通じて渡されます:

public static void main(String args[]) {
ApplicationSupport robot = new ApplicationSupport();
AutomatedRunnable t = robot.createAutomatedRunnable("Example" , new String[] {"-r", "<path_to_workitem_XML>"}, System.out, true);
new Thread(t).start();
}

別の方法として、既存のワークアイテムインスタンス用のランナブルを作成するcreateAutomatedRunnable(Schedule, String, String[], PrintStream, boolean)メソッドもあります。なお、com.tplan.robot.scheduler.Scheduleクラスがワークアイテムを表します。

public static void main(String args[]) throws ParserConfigurationException, SAXException, IOException {
ApplicationSupport robot = new ApplicationSupport();
com.tplan.robot.scheduler.Schedule schedule = new com.tplan.robot.scheduler.Schedule();
schedule.read(new java.io.File("<path_to_workitem_XML>"));
AutomatedRunnable t = robot.createAutomatedRunnable(schedule, "Example" , new String[] {}, System.out, true);
new Thread(t).start();
}

どちらの方法でも、入力引数のリストに -n または --nodisplay を追加することで、CLI実行モードを強制できます:

AutomatedRunnable t = robot.createAutomatedRunnable("Example" , new String[] {"-n", "-r", "<path_to_workitem_XML>"}, System.out, true);