VNC Server経由での自動化
1. はじめに
VNC Server接続を使用すると、T-Plan Robot EnterpriseはRemote Frame Bufferプロトコル(RFB)、通称Virtual Network ComputingまたはVNCを介してマシンやデバイスを自動化できます。VNC技術は多くの製品に採用されているため、この接続はコンピュータに限定されません。一般に、RFB 3.x互換のVNCサーバーを実行しているあらゆるデバイスを自動化できます。Robotは、以下のような幅広いシステムの自動化に実績があります:
-
PC
-
携帯電話
-
KVM切替機
-
POS端末
利点:
-
シンプルさ
-
広く普及しており、複数のOSでサポートされている
-
画像エンコーディング(圧縮)により、TCP/IPネットワーク上で良好なパフォーマンスを発揮
欠点:
-
キーボードサポートはLatin 1文字セット(ISO 8859-1)に限定される
-
タッチデバイスでのマルチフィンガージェスチャーに非対応
-
セキュリティが限定的(平文パスワード認証)。SSHトンネルで解決可能
2. サポートされる構成
VNC Serverはさまざまな構成で使用できます:
2.1 ローカルデスクトップの自動化
|
|
ローカルデスクトップの自動化は、VNCサーバーが実行されているのと同じシステム(デスクトップ)をRobotが自動化することを前提としています。これは、MS WindowsやMac OS Xに依存する単一OSソリューションで典型的な構成です。自動化の実行中やスクリーンショットの撮影時には、自動化対象のデスクトップを妨げずに表示できるよう、通常Robot GUIは非表示になります。
|
2.2 単一OSで複数のデスクトップ
|
|
単一マシン/OSで複数のデスクトップインスタンスを持つ構成は、単一システム上で複数のVNCサーバー(デスクトップ)を実行できるLinux/Unixで典型的です。各サーバーインスタンスは独自のポートで実行され、デフォルトのシステムデスクトップ(画面上に表示されているもの)とは独立したスタンドアロンのグラフィカルデスクトップを提供します。この場合、マシンはクライアントシステムとSUTの両方の役割を果たします。T-Plan Robotは通常(必須ではありませんが)デフォルトのシステムデスクトップ上で実行され(図に示す通り)、VNCサーバーに接続します。
|
2.3 単一マシンで複数のOSインスタンス
|
|
この構成は、VirtualBoxやVMwareなどの仮想化技術を利用します。このシナリオでは、デフォルトのOS(仮想化用語で"ホストシステム"と呼ばれる)が、独自のOSを持つ仮想マシン(VM、"ゲストシステム"と呼ばれる)を実行します。ホストシステムとゲストシステムは、使用する仮想化技術がサポートする任意のOSの組み合わせが可能です。
設定手順:
注:
|
2.4 デュアルシステム環境
|
|
このシナリオでは、安定した専用デバイス(別のPC、モバイルデバイス、KVM切替機、POS端末など)がVNCサーバーを実行していることを前提とします。この構成は、本番環境での自動化シナリオに推奨されます。System Under Test(SUT)が物理的に別のマシンであるため、安定した状態を維持したり、必要なバックアップを取得したり、各テストサイクル後にシステムを復元するルーチンを設定したりすることが容易です。デバイスはネットワークに接続されているため、イントラネットやインターネット経由で複数のユーザー(クライアントシステム)向けのテスト環境としても機能します。この構成は、SUTがT-Plan Robot Enterpriseの実行要件を満たさない場合(Java SEでサポートされていないシステム)の唯一の選択肢でもあり、その場合は単一マシンのシナリオを使用できません。設定手順は次の通りです:
|
3. サポートされているVNCサーバー
RFBプロトコルによる自動化には、System Under Test(SUT)がVNCサーバーを実行している必要があります。既存のVNC製品の概要はWikipediaのVNCおよびComparison Of Remote Desktop Softwareの項目で確認できます。T-Plan Robot Enterpriseは、RFB 3.x互換のVNCサーバーであれば問題なく動作するはずです。
クリップボード転送を機能させるには、サーバー上で"vncconfig"ユーティリティを実行する必要があります。一部のVNCサーバー(TightVNCなど)はこれを配布していないため、その場合はT-Plan Robot Enterpriseでこの機能をオフにすることがあります。サーバーからクライアントへテキストを転送するためにクリップボードの変更を利用する予定がある場合は、UltraVNCやRealVNCなど、このユーティリティを備えたVNCサーバーを使用してください。
デスクトップPCプラットフォーム
-
MS Windows - TightVNC, RealVNC, UltraVNC
-
WindowsではVNCサーバーをサービスとして実行することをお勧めします。これにより、T-Plan Robot EnterpriseからWindowsを再起動し、システム再起動後にログイン画面にアクセスできるようになります。Ctrl+Alt+Deleteのようなシステム予約済みのキーの組み合わせを送信するには、T-Plan Robot Enterprise GUIの左上にあるKeysタブを使用します。
-
TightVNCを実行しているWindowsサーバーにT-Plan Robot Enterpriseを接続すると、リフレッシュの問題が発生することがあります。アプリケーションウィンドウがリモートデスクトップ上で内容なしに表示され、マウスポインタをウィンドウ上に移動すると、ウィンドウ画像の断片が表示されることがあります。この動作を防ぐには、TightVNCの設定ウィンドウを開き、「Poll full screen」チェックボックスを選択してください。
-
「Windows」キーや「Properties」キーなどのWindows固有のキーは、VNCサーバーが対応していれば、スクリプト内でPressコマンドを通じて再現できます。これらのキーはRealVNCとUltraVNCでは問題なく動作します。問題が発生した場合は、スクロールロックをオンにしてください(これはUltraVNCフォーラムで説明されている回避策です)。TightVNC 1.3.10はWindows固有のキーに対応していませんが、2.0リリースでの対応が予定されていました。
-
-
Unix/Linux - TightVNC、RealVNC、Remote Desktop(Ubuntuなど一部ディストリビューションの標準機能)
-
ほとんどのLinuxディストリビューションには、パッケージリポジトリにVNCサーバーが既に含まれており、パッケージマネージャーからインストールできます。ソフトウェアがマシンにインストールされているかどうかを確認するには、ターミナルでvncserverを実行してみてください。
-
Linux/Unixでは、vncconfigの代わりにautocutselユーティリティを使用してクリップボード転送を機能させることができます。サーバー上で"autocutsel -s PRIMARY"として実行されている必要があります。DebianやUbuntuを使用している場合は、パッケージリポジトリでこのツールを見つけられます。他の情報源ではxcutselにも言及していますが、私たちはテストしていません。RFBクライアントはLatin-1(ISO8859-1)文字セットの文字しか転送できない点に注意してください。これはRFBプロトコル自体の制限であり、私たちにはどうすることもできません。
-
-
Mac OS X - Apple Remote Desktop(Mac OS Xの標準機能)、RealVNC、Vine
-
Solaris OS - RealVNC、またはSolaris 10 Update 5以降に同梱のデフォルトVNCサーバー。
-
HP UX - RealVNC
-
AIX - RealVNC
携帯デバイス
携帯電話のキーボードを標準PCキーボードイベントにマッピングする方法については、使用しているサーバーのドキュメントを参照してください。
多くのモバイルVNCサーバーはRFB 3.x仕様に完全準拠しておらず、標準のVNCセッション設定でクラッシュすることがある点に注意してください。接続に失敗した場合は、(Robot側のEdit->Preferences->RFB (VNC) 3.x Client)でRFBクライアントを最小構成に再設定することをお勧めします(Raw以外のすべてのエンコーディングを無効化し、カスタムピクセルフォーマットも無効化します)。また、Console debug logging設定をオンにして、コンソールウィンドウ(コマンドプロンプト)にデバッグメッセージを出力させるのも良い方法です。この状態で接続に成功したら、エンコーディングやピクセルフォーマットの設定を1つずつ追加・変更して、クラッシュの原因を特定してください。多くの問題は、CursorやZlibエンコーディングが有効になっている場合や、サーバーが処理できないピクセルフォーマットが強制されている場合に発生します。
モバイルデバイス向けの適切なサーバーのまとめ:
-
Symbian (S60) - mVNC
-
Apple iOS (iPod, iPhone) - Veency
-
Android - VMLite VNC Server
VMLiteのような一部のモバイルサーバーでは、サーバー通信をUSBケーブル経由でトンネリングすることで、ネットワーク接続を回避できます。不安定なWiFiを回避するもう一つの方法は、プライベートルーターやUSB WiFiホットスポットデバイスを使用することです。デバイス間の通信をブロックする「AP Isolation」設定が適用されないように設定してください。
以下の表にサーバーの詳細を示します。このリストに未掲載の新しいサーバーを追加したい場合は、T-Plan Robot Enterprise ContactsのWebページからご連絡ください。
|
VNC Server |
プラットフォーム |
状態/備考 |
|---|---|---|
|
サーバーがサポートするすべて |
Linux & Windowsで動作確認済み。TightVNCサーバーではWindows固有のキー(Win、Properties)が動作しない点に注意してください。この問題は報告されており、TightVNC 1.3.11または2.0で修正される見込みです。 |
|
|
サーバーがサポートするすべて |
RealVNCがOEMソフトウェアとして配布している携帯デバイス(携帯電話など)向けサーバーは互換性がなく、T-Plan Robot Enterpriseでは動作しません。RealVNC Free Editionは標準のRFB v3.xプロトコルに準拠しており、そのまま動作します。RealVNC Personal EditionとRealVNC Enterprise Editionは、v4.xとしてコード化された独自拡張のRFBプロトコル上で動作します。T-Plan Robot Enterpriseは、サーバー側で以下のように設定した3.3プロトコル互換モードでのみ、これらのサーバーと連携できます:
|
|
|
サーバーがサポートするすべて |
当社にて動作確認済み。ユーザーからも動作報告あり。 |
|
|
Remote Desktop(VNC互換のUbuntu機能) |
Ubuntu Linux |
当社にて動作確認済み。アクセスを有効にするには:
|
|
Apple Remote Desktop(ARD、VNC互換のMac OS機能) |
10.4 PPC Mac、10.5以降(Intel Mac) |
当社にて動作確認済み(レガシープラットフォームについてはユーザーから動作報告あり)。ARDをT-Plan Robot Enterpriseで動作させるには、Mac OS Xデスクトップで以下の手順を実行してください:
|
|
|
ユーザーから動作報告あり。デスクトップを正しい色で表示するには、T-Plan Robot Enterpriseバージョン3.1.1以降が必要です。 |
|
|
Windows CEおよびWindows Mobileデバイス |
当社にて動作確認済み。PocketVNC v1.4.3などの旧バージョンには、デスクトップ画像の転送を破損させるバグがあります。回避策があります:
|
|
|
Windows CEおよびWindows Mobileデバイス |
バージョン4.3はユーザーから動作報告があります。このサーバーはデフォルトで特殊な15ビットピクセルフォーマットを使用するため、画面が青みがかって表示されることがあります。これは、Robotに標準的なピクセルフォーマットの1つをリクエストさせることで、以下のように修正できます:
|
|
|
Symbian OS搭載モバイルデバイス |
ユーザーから動作報告あり。デバイスキーボードのほとんどのキーはPCのテンキーにマッピングされているため、デバイス上でのタイピングを自動化するコマンドでは「location=numpad」パラメータを使用する必要があります。例えば、電話番号123456789の入力を自動化するには「Type 123456789 location=numpad」を使用します。 |
|
|
Veency |
iOS (iPod、iPhone) |
基本機能について当社にて動作確認済み。ユーザーからも動作報告あり。Veencyにはjailbreak済み(root化済み)デバイスが必要です。iOS APIには必要な機能へのアクセスを提供するインターフェースが含まれていないため、代替手段はありません。Veencyは、jailbreak時にデバイスにインストールされるCydiaからインストールできます。表示画像のフリーズやその他の接続問題が発生した場合は、以下の手順を実行してください:
|
|
Android |
VMLite VNC Serverは、Google Playストアからわずかな料金で入手できる商用ソフトウェアです。root化済み・未root化どちらのデバイスでも動作します:
Androidテストの代替手段については、Android Over ADB接続を参照してください。 |
4. チューニング
クライアント側の設定
Robotは、Robotアプリケーションおよび VNC接続の両方のパフォーマンスを向上させる可能性のある、多数の設定可能なパラメータをサポートしています。以下の表に、最も重要なものを示します。
|
パラメータ名(場所) |
説明 |
|---|---|
|
Encodings
|
Encodingsは、RobotとVNCサーバー間で転送される画像データのエンコード方法を指定します。これは順序付きリストとして指定され、先頭(最上位)の項目が最も優先されます。各エンコーディングは、ネットワーク上で転送されるデータ量(圧縮率が高いほどデータ量は少ない)と、それをデコードするために必要なローカルCPUリソースとの間でトレードオフを取るために、異なるアルゴリズムで画像データをエンコードします。
エンコーディングの効率を確認するには、同じパネルの「Console debug logging」パラメータを「Full」に設定し、コンソールウィンドウ(コマンドプロンプト)でパフォーマンスデータを確認してください。 |
|
Connection pooling (Java API) |
Connection poolingを使用すると、サーバー接続を再利用でき、再接続のオーバーヘッドを回避できます。このメカニズムはJava APIからのみ適用できます。詳細はRemoteDesktopClientFactoryクラスのドキュメントを参照してください。 |
サーバー側の設定
クライアント-サーバー接続のパフォーマンスを大幅に改善する可能性のある、いくつかのシンプルな推奨事項があります:
-
サーバーのデスクトップ背景を、エンコーディングで効率的に圧縮できる単色に変更してください。画像や写真は、ネットワーク上で転送される画像データの量を大幅に増加させます。
-
時計や画像をループ表示するガジェットなど、動的に更新される不要なオブジェクトはすべてデスクトップから削除してください。これらのコンポーネントは頻繁なデスクトップ更新の原因となり、ネットワークトラフィックを増加させます。
-
可能であれば、異なるメーカーのサーバーを試してください。一部の製品には、パフォーマンスを向上させるカスタムビデオドライバやフックが付属しています。
-
適切なリモートデスクトップサイズ(解像度)を使用してください。画像データの量はデスクトップサイズに比例します。