ワークアイテム
目次:
1. 概要
スケジューリングは、v4.0で追加された新機能です。1つ以上のテストスクリプトを単一のRobotプロセス内で実行する順序を定義する「ワークアイテム」(旧称「スケジュール」)を作成できます。主な特長は次のとおりです:
-
スクリプトの逐次実行および並列実行。逐次実行されるスクリプトは、直前のスクリプトの結果に応じて制約を課すことができます。例えば 「スクリプトAがPASS結果で終了した場合のみスクリプトBを実行する」のように指定できます。
-
実行のスケジューリング。ワークアイテムには開始時刻の制約を設定でき、即時開始、遅延後の開始、指定日時での開始、または(cronスケジューリングによる)定期的な繰り返し実行を指定できます。
-
高度なレポート機能。ワークアイテムは、ほとんどのWebブラウザで閲覧可能なグラフィカルなレポートを生成します。
-
スクリプトと同様の簡単な管理。ワークアイテムは、個々のテストスクリプトと同じ方法で、RobotのGUIから、-r CLIオプションを使って、またはJava APIから起動・管理できます。
2. ワークアイテムの作成
ワークアイテムは、プロジェクトの schedules/ フォルダ内にXMLファイルとして物理的に保存されます。テストスクリプトは相対ファイルパスで参照されるため、プロジェクト全体を移動または名前変更しても機能し続けます。
2.1 空のワークアイテムの作成
テストスイートは、ワークアイテムエディタツールを使用して簡単に作成・管理できます。ワークアイテムを作成するには、次のいずれかを行います:
-
ワークアイテムノード(プロジェクトビュー内)を右クリックし、コンテキストメニューで「作成 ワークアイテム...」を選択します。
-
ワークアイテムツールバーボタンをクリックします。
-
メインメニューでスクリプト→ワークアイテムを選択します。
サブタイトルが「開始設定」の青い四角形は、最上位のワークアイテムオブジェクトを表します。下部のタブ付きペインから、ワークアイテムの属性にアクセスできます:
プロパティタブには、ワークアイテムレポートの作成方法を設定する「レポート詳細」セクションがあります:
-
「レポートの保存先」ドロップダウンは、デフォルトではプロジェクトのレポート保存場所配下の一意なフォルダにレポートを保存するよう設定されています。この設定では、プロジェクトビューの結果ノード配下にレポートが表示されるため、推奨設定となっています。もう一方のドロップダウンオプションでは、レポートファイルの出力先をカスタマイズできます。
-
「カスタム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 ワークアイテムへのスクリプトの追加
ワークアイテムに最初のスクリプトを追加するには、最上位オブジェクト(四角形)である「開始設定」を選択(クリック)し、次のいずれかを行います:
-
オブジェクトを右クリックし、「スクリプトの追加」メニュー項目を選択します
-
ワークアイテムエディタのツールバーにある
アイコンをクリックします
-
プロジェクトビューのスクリプトブランチからスクリプトをドラッグし、オブジェクト上またはワークアイテムビュー内の任意の場所にドロップします。
-
開いているスクリプトエディタのタブをドラッグします。
スクリプトは、スクリプトファイル名を付けた新しいボックスとしてビューに表示されます。任意の表示名を付けることもできます。さらにスクリプトを追加するには:
-
上記の手順を使用して、最上位オブジェクトに他のスクリプト呼び出しを追加します。このようなスクリプトは並列で開始されます。
-
スクリプトに依存する(そのスクリプトに続いて実行され、完了を待つ)スクリプトを追加するには、そのスクリプトのボックスをクリックし、上記で説明した3つの操作のいずれかを実行します。
例として、モバイルアプリケーションの自動化を考えます。これをiOS(iOS.tpr)とAndroid(Android.tpr)で自動化する2つのスクリプトがあるとします。まずiOS 6デバイスで実行し、成功した場合はiOS 7でも再実行する計画です。Androidでの自動化は並列に開始されます。まずSamsung S2デバイスで実行し、成功した場合はSamsung S3で再実行します。ワークアイテムは次のようになります:
ワークアイテムに最初のスクリプト(「タスク」と呼ばれる)を追加するには、最上位オブジェクト(四角形)である「開始設定」を選択(クリック)し、次のいずれかを行います:
-
オブジェクトを右クリックし、「スクリプトの追加」メニュー項目を選択します
-
ワークアイテムエディタのツールバーにある
アイコンをクリックします
-
プロジェクトビューのテストスクリプトブランチからテストスクリプトをドラッグし、ワークアイテムオブジェクト上またはワークアイテムビュー内の任意の場所にドロップします。
タスクは、スクリプトファイル名を付けた新しいボックスとしてビューに表示されます。任意の表示名を付けることもできます。さらにスクリプトを追加するには:
-
上記の手順を使用して、最上位オブジェクトに他のタスクを追加します。このようなタスクは並列で開始されます。並列実行には、ワークアイテムの実行の章で説明されている制限が適用されます。
-
そのタスクに依存する(そのタスクに続いて実行され、完了を待つ)新しいタスクを追加するには、タスクのボックスをクリックし、ツールバーボタンまたは右クリックのポップアップメニューを使用します。
タスクのプロパティは、下部のエディタで編集できます:
-
タスクの名前は、タスクに表示名を割り当てます。名前を指定しない場合、デフォルトでスクリプトファイル名になります。
-
CLIオプションを使用すると、タスクの実行環境を変更できます:
-
c/--connectと、任意のp/--passwordを組み合わせることで、スクリプトを実行するテスト環境(サーバーまたはデバイス)を指定できます。例えば、以下のスクリーンショットは、シリアル番号A123456の、Android Over ADB接続で接続されたAndroidデバイス上でスクリプトを開始するようRobotに指示しています。
-
v/--variableは、指定したスクリプト変数を固定値に設定します。これにより、実行固有の値をスクリプトに渡すことができます。このオプションは複数回指定して、複数の変数を設定できます。
-
n/--nodisplayやo/--optionなどの他の適用可能なCLIオプションは、Robot起動コマンドのレベルでのみ指定できます。これらは、ワークアイテム内のすべてのスクリプトに適用されます。ワークアイテムの実行の詳細については、ワークアイテムの実行の章を参照してください。
-
-
「開始の依存タイプ」ラジオボタンは、タスクの開始タイミングを制御します。4つのオプションがあります:
-
「すぐに開始」オプションは、ワークアイテムが開始された直後にタスクを開始します。この依存タイプのタスクが2つ以上ある場合、ワークアイテムは次のようにそれらを実行します:
-
Robotプロセスがn/-nodisplayオプション付きのCLIモードで実行され、かつユーザーライセンスが複数プロセスを許可している場合、タスクは並列で開始されます。接続の競合に注意してください。すなわち、2つのタスクが同じSUTに接続しないようにしてください。
-
Robotプロセスが GUI モードで実行される場合、またはライセンスに制限がある場合、タスクは自然な順序(上から下)で逐次実行されます。
-
-
「...スクリプトの終了後に開始」は、選択したタスクが終了すると、その結果(合格または不合格)に関わらずタスクを開始します。
-
「...スクリプトの合格後に開始」は、選択したタスクが合格結果(終了コード0を返す)で終了した場合にのみタスクを開始します。終了コードの詳細については、Exitコマンドを参照してください。
-
「...スクリプトの不合格後に開始」は、選択したタスクが不合格結果(0以外の終了コードを返す)で終了した場合にのみタスクを開始します。
-
例として、モバイルアプリケーションのテストを考えます。これをiOS(iOS.tpr)とAndroid(Android.tpr)でテストする2つのテストスクリプトがあるとします。まずiOS 13デバイスで実行し、合格した場合はiOS 14でも再テストする計画です。Androidでのテストは並列に開始されます。まずAndroid 10デバイスで実行し、合格した場合はAndroid 11で再テストします。
3. ワークアイテムの実行
ワークアイテムは一般に、個々のテストスクリプトと同じ方法で扱われます。次の3つの方法で開始できます:
3.1 手動実行
GUIモードでワークアイテムを開始するには、ワークアイテムエディタツールでワークアイテムを開いた状態で、ツールバーの
GUIでワークアイテムとテストスクリプトの両方が開かれている場合、実行ボタンは常にワークアイテムを優先します。テストスクリプトのみを実行するには、スクリプトエディタを右クリックし、コンテキストメニューからスクリプトの実行を選択します。
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);