継続的インテグレーション (JA)
内容
1. はじめに
2. CIインストール
3. プロジェクトの作成
4. 統合プロジェクト
5. デザイン・オートメーション
6. オートメーションの統合
7. 高度なヒント
8. 結論
1.はじめに
このドキュメントでは、アプリケーションをビルドし、T-Plan Robot Enterprise 自動テストを実行する継続的インテグレーションジョブのセットアップ方法を説明します。このガイドでは、選択したツールとして Jenkins を使用します。Hudson との統合はカバーしていませんが、手順は非常に似ています。
2.CIインストール
Jenkinsをダウンロードします
ネイティブ・リリースが最も簡単な方法です。このガイドでは、Windowsネイティブ・リリースのJenkins 1.563をWindows 8.1システムにインストールします。
ネイティブインストーラは、Jenkins をWindowsサービス.に依存するロボットとの統合には適していません。ローカルデスクトップまたはiOSミラーサービスにはローカルUIアプリケーションを起動するのに十分な権限がないためです。この例のインテグレーションでは、Jenkinsサービスを無効にする必要があります:
オープンサービス:
Windows 8:スタート画面に移動し、"ローカルサービスを表示 "と入力します。
Windows 7以前:コントロールパネルを開き、「サービス」を検索し、「管理ツール」グループから「ローカルサービスの表示」を開きます。
Jenkins サービスをダブルクリックし、停止して、 スタートの種類 を 「無効」 に設定します。
ヒント:サービスとして実行されている Jenkins を T-Plan Robot に統合する方法の詳細については、高度なヒントの章をご覧ください。 |
Jenkins を手動で起動するには、コマンドプロンプトを開き、Jenkins のインストールディレクトリ(通常は C:\Program Files\Jenkins または C:\Program Files (x86)\Jenkins)に移動して、以下を実行します。
jrebinjava -jar jenkins.war
Jenkinsのウェブ・インターフェースを開くにはhttp://localhost:8080/をウェブブラウザで表示します。

3.プロジェクトの作成
このガイドでは、Netbeansで開発されたシンプルなJavaアプリケーションを使用します。このアプリケーションは閉じるボタンをクリックしてください。このアプリケーションはJavaなので、MS Windows、Mac OS X、Linux、Unix、Solaris OSなど、Javaがサポートするプラットフォームであれば問題なく動作します。アプリケーションのソースコードとプロジェクトは以下のリンクからダウンロードできます:
この例では、NetBeans をインストールする必要はありません。インストールする必要があるのはアントそしてJava開発キット(JDK)をお持ちでない場合は、それを使用してください。これらは、サンプルJavaプロジェクトのコンパイルとビルドに必要です。
インストール代替案 #1: Jenkinsツールを使用する
Jenkins ホーム (http://localhost:8080/) で「Manage Jenkins」 をクリックします。
クリック 設定
「JDKを追加」および「Antを追加」ボタンを使用して、JDKとAntをインストール/設定してください。
インストール方法その2:手動によるインストールと設定
JDKをダウンロードしてインストールしてください:http://www.oracle.com/technetwork/java/javase/downloads/index.html
Antのバイナリ配布(ZIP)はhttp://ant.apache.orgからダウンロードしてください。解凍して、ローカルのハードドライブ、例えば "C:˶Program FilesAnt "に解凍します。
「C:\Program Files\Ant\bin」フォルダをシステムパスに入れて
JAVA_HOME変数を設定します:Windows 8:スタート画面で「system」と入力
Windows 7 以前: コントロールパネルを開き、システムを選択
詳細システム設定を選択→環境変数を開き、 パス 変数をダブルクリックし、変数値にセミコロン ; とパスを追加します:
<previous_path>;C:\Program Files\Ant\apache-ant-1.9.4\bin
新しい システム変数を追加します。名前は
JAVA_HOMEで、値はJDKのインストールパスです(例: C:\Program Files\Java\jdk1.7.0_51)。

システム変更を反映させるため、Jenkins を再起動してください。コマンドプロンプトから Jenkins を起動した場合は、それを閉じて新しいものを起動してください。
結果を確認するには、コマンドプロンプト(Windows+R、"cmd")を開き、"ant.bat"を実行してください。システムがコマンドを認識する必要があります。"tools.jarが見つかりません"のようなメッセージが表示された場合、JAVA_HOME変数が正しく設定されていません。
ヒント: NetBeans をインストールしている場合、Ant インスタンスが再利用できます。NetBeans のリリースによっては JDK も含まれています。変数を設定するか、Jenkins の Configure ページで場所を追加するだけで済みます。 |
4.プロジェクトの統合
次のステップは、アプリケーションのプロジェクトを CI (Jenkins) と統合することです。簡略化のため、アプリケーションはバージョン管理 (CVS、SVN など) 対象ではないと仮定します。
Jenkinsのホーム (http://localhost:8080/) で「新規アイテム」 をクリックしてください。
アイテムに名前を付けます(例:"DemoApp")。フリースタイルソフトウェアプロジェクトを構築する」を選択し、OKをクリックします。

ソースコード管理オプションは「なし」のままにしておいてください。必要に応じてCVS、SVN、またはその他のサポートされているシステムに変更できます。
「ビルドステップを追加」をクリックします。NetBeansはAntを使用するため、「Antを呼び出す」オプションを選択します。スペースで区切った2つのターゲットを追加します:
clean jar
クリック保存

プロジェクトの設定が完了しました。ローカルプロジェクトワークスペースを初期化するには、ビルドする必要があります:
Jenkins ホーム (http://localhost:8080/) に移動し、DemoApp をクリックして、左側のメニューから 「Build Now」 を選択してください。
"ビルド履歴"で、ビルドログへのリンクを選択してください。
左メニューから "コンソール出力" を選択してください。
プロジェクトがバージョン管理下にある場合、Jenkins はサーバーからプロジェクトを取得するため、成功と表示されるはずです。
この例ではバージョン管理を使用していないため、Antがbuild.xmlファイルを見つけられないというメッセージでビルドは失敗します。サンプルプロジェクトをダウンロードし、ログに記載されている場所(通常は <user_home>\.jenkins\jobs\DemoApp\workspace)に解凍してください。。その後、プロジェクトページに戻り、再度「今すぐビルド」をクリックしてください。今回は成功するはずです。
おめでとうございます、デモ Java プロジェクトが Jenkins に統合されました。これ以上の設定は、必要に応じて行ってください。Jenkins を設定して、プロジェクトを定期的にビルドするようにすることもできます。プロジェクトがバージョン管理下にある場合は、ソースコードの変更ごとにビルドをトリガーすることもできます。
次のステップは、シンプルなT-Plan Robot自動テストを設計し、ビルドプロセスに統合することです。
5. 設計自動化
自動テストを設計する前に、テスト環境の構成を選択する必要があります。T-Plan Robotは、1台以上のマシンおよび/またはモバイルデバイスを含む複数のアーキテクチャをサポートしています。概要については、サポートされる構成チュートリアルトピックを参照してください。
このガイドでは、最も単純な単一マシンのシナリオを選択します。Jenkins マシン上で、ローカルデスクトップ接続を使用してアプリケーションをテストします。テストコードを含む T-Plan Robot プロジェクトは、こちらからダウンロードできます。
テストプロジェクトはクロスプラットフォームであり、Java をサポートするあらゆるプラットフォーム (MS Windows、Mac OS X、Unix、Linux、Solaris OS) で動作します。プロジェクトアーカイブを解凍し、T-Plan Robot GUI の ファイル->プロジェクトを開く を使用して、その中のフォルダを開きます。このプロジェクトには、1 つのテストスクリプト (tpr/Jenkins.tpr) と、テストアプリケーションの 閉じる ボタンで使用されるアイコンのテンプレート画像 1 つが含まれています。
Jenkins.tpr |
|
このスクリプトは非常に単純なシナリオをテストします:
デモアプリケーションを起動してください。
アプリケーションが正常に起動したことを確認してください。これは、画面上で 閉じる ボタンのアイコンを探すことで実現されます。
閉じるボタンをクリックしてください。
アプリケーションが正常に終了したことを確認してください。このスクリプトは、 閉じる ボタンが表示されなくなることを保証します。
変数 APP_HOME (3行目)をデモアプリケーションを解凍した場所に設定すれば、スクリプトをすぐに実行できます。要件:
Javaがインストールされ、システムパスに登録されていること(3.プロジェクトの作成で既に完了しているものと仮定)
T-Plan Robot 3.5.2 以降(または、少なくとも 2014 年 5 月 19 日リリース版の 3.5.2Beta 以降)で、
「Exec kill」コマンドのサポートが導入されています。このスクリプトは、古いリリースでも実行されますが、何らかの理由でアプリケーションを閉じることができなかった場合、アプリケーションを強制終了することはできません。その結果、Jenkins ビルドは、すべてのプロセスが完了するまで待機するため、ハングアップしてしまいます。
合理的なテストレポートを作成するため、スクリプトはいくつかの結果オブジェクトを生成します。17行目でXMLレポートを作成します。スクリプトに名前と番号を付与します(23行目)。さらに2つのステップ結果(40行目と54行目)とスクリーンショット(41行目)を作成します。生成されたレポートを閲覧するには、ロボットプロジェクトのテスト結果ツリーノードを参照するか、オンライン版をこちらで開いてください。
次のステップでは、テストスクリプトを継続的インテグレーションに統合します。
6.自動化の統合
T-Plan Robotのコマンドラインインターフェイス(CLI)により、CIとの統合が可能となります。主なオプションは以下の通りです:
CLIオプション | 説明 |
<path> で指定されたテストスクリプト (*.tpr, .java) またはワークアイテム (.xml) を実行します。 | |
テスト環境に接続します。パスワードはオプションであり、VNCサーバー接続など必要な場合にのみ使用してください。スクリプトから直接接続を確立することも可能です。TPRスクリプトではConnectコマンドを、Javaスクリプトではconnect()メソッド呼び出しを使用します。 | |
GUIを表示せずにCLIモードで実行します。このモードはシステムリソース(CPU、RAM)の消費が少ないため、本番環境での使用が推奨されます。リモート起動(telnet、rsh/ssh)による実行にはこのオプションが必須です。 | |
変数値を上書きします。このオプションは複数回指定して複数の変数を上書きできます。通常、スクリプト実行のパラメータ化や、標準(事前定義済み)変数の設定による動作変更に使用されます。例:レポートをC:\reportsに保存させるには以下を指定: |
CI統合に適した開始コマンドを作成するにはCLIウィザードツールを使用します。起動するにはツール->CLIウィザードロボットで
CI統合に適した開始コマンドを作成するには、 CLIウィザードツール。起動するには選択してくださいツール->CLIウィザード とロボット:
「テストスクリプト」」 -> デモプロジェクトから Jenkins.tpr を選択
"ファイルパス" -> 絶対パス
オプション: "Connect to" を "java://localhost" に設定します。これは実際には不要です。スクリプトが独自に Connect コマンドを呼び出して接続を開始するためです。
オプション: 「CLIモードでスクリプトを実行する」 を設定
オプション: さらに、レポート(テスト結果)を Jenkins ワークスペースの下にある一意のディレクトリに保存するよう Robot に指示します。そのためには、_REPORT_DIR Robot 標準変数を次のような値に設定します。
%WORKSPACE%\reports\%BUILD_NUMBER%
WORKSPACE システム変数は、Jenkins によってアプリケーションのワークスペースパスに設定されます。BUILD_NUMBER は、一意のビルド番号が含まれます。たとえば、ワークスペースが C:\Users\JohnDoe\.jenkins\jobs\DemoApp\workspace で、ビルド番号が 3 の場合、レポートは次の場所に保存されます。
C:\Users\JohnDoe\.jenkins\jobs\DemoApp\workspace\reports\3
これにより、レポートは次の URL で利用可能になります。また、プロジェクト(ジョブ)メニューの ワークスペース リンクから、Jenkins からレポートに移動することもできます。
http://localhost:8080/job/DemoApp/ws/reports/3/results.xml
これにより、ビルドのたびにテスト結果の URL を E メールで送信することができます。これは、Jenkins プラグインの Email-ext (E メール拡張機能) を使用して実現できます。有効な URL を有効にするには、 Jenkins の管理 -> 設定に移動し、 Jenkins の場所を有効なホスト名に設定する必要があります。その他のレポートオプションについては、 高度なヒントの章をご覧ください。
CLIウィザードが完了したら、クリップボードにコピーボタンをクリックしてください。

ビルドプロセスに自動化を統合するには、新しいビルドステップを追加するだけです:
Jenkins ホーム (http://localhost:8080/) に移動し、DemoApp をクリックして、左側のメニューから 「Configure」 を選択してください。
「ビルドステップを追加」をクリックし、ビルドセクションで「 Windowsバッチコマンドの実行コマンドの実行
CLIコマンドを コマンド フィールドに貼り付けてください。

変更を保存し、今すぐビルド を選択します。Jenkins がアプリケーションをビルドし、自動化を実行します。
Jenkins ビルドは、ビルドと自動化が正常に完了した場合にのみ成功します。ビルドまたは自動化が失敗した場合は失敗となります。テスト結果は、Jenkins ワークスペース内のビルド固有のフォルダに保存され、Web ブラウザで表示することができます。
ヒント: Jenkins でテストスクリプトをデバッグするには、コマンドから -r および -n オプションを一時的に削除してください。これにより、Jenkins は自動化を開始せずに Robot GUI を起動します。その後、Robot でスクリプトを手動で実行し、デバッグすることができます。Robot を閉じるまで、Jenkins はビルドを完了しません。 |
7. 上級者向けヒント
サービスとして動作するJenkinsの自動化
サービスとして実行されるジェンキンズは、通常、次の 2 つの点で制限があります。
このプロセスはGUIアプリケーションを起動する権限を持っていません。これにより、ローカルデスクトップおよびiOSミラーリング接続に基づくロボット自動化との連携が妨げられます。その他の「リモート」接続(例: VNC サーバー(VNC 上のローカルデスクトップを除く)や Android Over ADB などの他の「リモート」接続は、-n/--nodisplay CLI オプション を使用して Robot を起動すれば、サービスモードで Jenkins と統合することができます。
このプロセスは通常、ファイルシステム権限が制限されたユーザーアカウントで実行されます。ロボットへの影響:
有効なユーザーホームフォルダが存在しない場合、Robotプロセスはユーザー設定ファイルへの変更保存に失敗します。ログに例外が数件記録されますが、プログラムはデフォルトの工場出荷時設定で動作を継続します。Robotはライセンスキーの場所を設定ファイルに保存するため、ライセンス欠損によるプロセス失敗が発生する可能性があります。回避策として、キーファイルをRobotのインストールディレクトリに保存してください。これにより自動的に読み込まれます。別の方法として、次のようなCLIオプションを追加します:
-o "config.licenseKeys=<license_key_path>"
-o/--optionオプションは複数回指定可能で、設定ファイルから環境設定をカスタマイズできます。Robot バージョン 4.0 では、新しい --cfg および --licensekey オプションにより、これらの制限が解消されます。プロセスがデフォルトのシステム一時ディレクトリにフォルダを作成する権限を持たない場合、アプリケーションログサービス(ロボットのGUIにおけるヘルプ->ログビューア)が無効化されます。全てのログはターミナル(コマンドプロンプト)にのみ出力されます。
プロセスがシステムの一時ディレクトリにファイルを作成する権限を持たない場合、ロボットプロセスはクラッシュするか正常に動作しません。プロセスには少なくとも以下の権限を付与する必要があります。
カスタムJavaコード(例)にラップされた自動化プロセスには追加の手順が必要です。Robot 3.5.2以前の制限により、ApplicationSupportクラスのcliModeフィールドを、クラスが初めてインスタンス化される前に以下のように設定する必要があります。これを省略すると、ApplicationSupport コンストラクタが java.lang.ExceptionInInitializerError をスローします。この問題はリリース 4.0 で修正されます。
import com.tplan.robot.*; import java.lang.reflect.Field;...try { Field field = ApplicationSupport.class.getDeclaredField("cliMode"); try { field.setAccessible(true); field.set(null, true); } finally { field.setAccessible(false); } } catch (Exception e) { e.printStackTrace(); } ApplicationSupport a = new ApplicationSupport();...
レポートをJenkins UIにリンクする
最新のロボットレポートは、プロジェクトのメニューおよびヘッダーページに任意でリンクできます:

手順
HTML Publisher Plugin をインストールしてください
残念ながら、このプラグインは、
%BUILD_NUMBER%などの Jenkins ビルド変数を含むレポートパスを処理できません。プロジェクトワークスペース内の静的な場所へのリンクのみ可能です。この問題を回避するには、ロボットスクリプトが安定したディレクトリにレポートの HTML コピーを作成するように設定する必要があります。これを実現するには、Jenkins.tpr スクリプトに次のコマンドを追加してください。Report "..\ latest\results.html" desc="Jenkins デモアプリケーションのテスト、{_ENV_BUILD_TAG} ({_ENV_BUILD_ID}) ビルド、場所は {_ENV_WORKSPACE}"
DemoApp メニューで、Configure を選択します。「ビルド後アクションの追加」 を選択し、「HTML レポートの公開」 を選択します。パラメータを次のように設定します。
HTML directory to archive:
reports\latestIndex page[s]:
results.htmlReport title:
Latest T-Plan Robot Report変更を保存してビルドを実行すると、メニューにリンクが表示されます。
8.結論
上記の手順により、T-Plan Robotの自動テストを選択した継続的インテグレーションツールと統合できるようになります。CLI統合の原則は、事実上あらゆる他のフレームワークとの統合にも適用可能です。
この文書では、複数のテストマシンを伴うその他のテスト環境構成については扱いません。これらは後述します。
ご質問がございましたら、T-Planサポートチームまでお問い合わせください。

