English Japanese
English Japanese

VNC


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 ローカルデスクトップの自動化


worddave48a76f022570bb6832f8ad19456f446.png

ローカルデスクトップの自動化は、VNCサーバーが実行されているのと同じシステム(デスクトップ)をRobotが自動化することを前提としています。これは、MS WindowsやMac OS Xに依存する単一OSソリューションで典型的な構成です。自動化の実行中やスクリーンショットの撮影時には、自動化対象のデスクトップを妨げずに表示できるよう、通常Robot GUIは非表示になります。
この構成をセットアップするには:

  1. サポートされているVNCサーバーのいずれかをインストールして起動します。

  2. Robotをインストールします。

  3. Robotを起動します。"VNC Server"接続タイプを選択し、Serverフィールドに"localhost"と入力します。他の構成用に予約されている"127.0.0.1"は使用しないでください。サーバーが5900以外のカスタムポートで実行されている場合は、コロンの後にポート番号を指定します("localhost:5901")
    この構成の代替としてLocal Desktop接続があります。これはローカルのJavaインストールを通じてローカルデスクトップを自動化するもので、VNCサーバーなどの他のコンポーネントは不要です。この接続の欠点は、telnetやrshなどのターミナル経由で(別のPCやデバイスから)テストスクリプトをリモートで開始できないことです。その場合はVNC Serverを使用してください。


2.2 単一OSで複数のデスクトップ



worddav28616a4f72ae3382932c3306c33e298c.png

単一マシン/OSで複数のデスクトップインスタンスを持つ構成は、単一システム上で複数のVNCサーバー(デスクトップ)を実行できるLinux/Unixで典型的です。各サーバーインスタンスは独自のポートで実行され、デフォルトのシステムデスクトップ(画面上に表示されているもの)とは独立したスタンドアロンのグラフィカルデスクトップを提供します。この場合、マシンはクライアントシステムとSUTの両方の役割を果たします。T-Plan Robotは通常(必須ではありませんが)デフォルトのシステムデスクトップ上で実行され(図に示す通り)、VNCサーバーに接続します。
設定手順:

  1. サポートされているVNCサーバーをインストールして起動します。

  2. Robotをインストールします。

  3. Robotを起動します。"VNC Server"接続タイプを選択し、Serverフィールドに"127.0.0.1:<port>"と入力します。他の構成用に予約されている"localhost"という名前は使用しないでください。

2.3 単一マシンで複数のOSインスタンス


worddavf6de21d91bd3c01861a22c81b7f0eb3f.png

この構成は、VirtualBoxやVMwareなどの仮想化技術を利用します。このシナリオでは、デフォルトのOS(仮想化用語で"ホストシステム"と呼ばれる)が、独自のOSを持つ仮想マシン(VM、"ゲストシステム"と呼ばれる)を実行します。ホストシステムとゲストシステムは、使用する仮想化技術がサポートする任意のOSの組み合わせが可能です。

  • ホストシステムは通常Robotを実行し、クライアントシステムの役割を果たします。Robotを別の専用VMインスタンス上で実行することも可能ですが、T-Plan Robotユーザーから報告されている環境固有の問題により、この構成は推奨されません。クライアントとサーバーの役割を逆にすることはできず、VMがホストシステムをリモート制御(自動化)することもできない点に注意してください。

  • ゲストシステムはVNCサーバーを実行します。

設定手順:

  1. VirtualBoxまたはVMwareをインストールします。

  2. VMを作成し、その中にゲストOSをインストールします。

  3. ゲストシステムにサポートされているVNCサーバーをインストールして起動します。

  4. VNCポートがホストシステムから見えるようにVMを設定します(VirtualBoxの手順)。

  5. ホストシステムにRobotをインストールします。

  6. Robotを起動します。"VNC Server"接続タイプを選択し、ServerフィールドにVMのIPアドレスとポートを入力します。例:"192.168.100.2:5901"。

注:

  • VMware上で動作するVNCサーバーは、クライアントとサーバーでキーボードレイアウトが異なる場合、キーマッピングの問題が報告されています(例[1]、例[2]を参照)。これにより、通常VNCデスクトップ上で一部の文字が誤って入力されます。これはT-Plan Robot Enterpriseの不具合ではありません。

  • Robot 4.3以降では、RDP Server接続を使用してVirtualBoxのVMに直接接続できます。

2.4 デュアルシステム環境


worddav05b93f4c58367ba79eec5fe29b51041c.png
worddav7cf1fcee4db3a80cdc58b37d36574423.png

このシナリオでは、安定した専用デバイス(別のPC、モバイルデバイス、KVM切替機、POS端末など)がVNCサーバーを実行していることを前提とします。この構成は、本番環境での自動化シナリオに推奨されます。System Under Test(SUT)が物理的に別のマシンであるため、安定した状態を維持したり、必要なバックアップを取得したり、各テストサイクル後にシステムを復元するルーチンを設定したりすることが容易です。デバイスはネットワークに接続されているため、イントラネットやインターネット経由で複数のユーザー(クライアントシステム)向けのテスト環境としても機能します。この構成は、SUTがT-Plan Robot Enterpriseの実行要件を満たさない場合(Java SEでサポートされていないシステム)の唯一の選択肢でもあり、その場合は単一マシンのシナリオを使用できません。設定手順は次の通りです:

  1. SUTにサポートされているVNCサーバーをインストールして起動します。

  2. クライアントシステムにRobotをインストールします。

  3. Robotを起動します。"VNC Server"接続タイプを選択し、Serverフィールドに"<machine_name_or_IP>:<port>"と入力します。

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

  • その他 - Canon Remote Operator's Software Kit

携帯デバイス

携帯電話のキーボードを標準PCキーボードイベントにマッピングする方法については、使用しているサーバーのドキュメントを参照してください。

多くのモバイルVNCサーバーはRFB 3.x仕様に完全準拠しておらず、標準のVNCセッション設定でクラッシュすることがある点に注意してください。接続に失敗した場合は、(Robot側のEdit->Preferences->RFB (VNC) 3.x Client)でRFBクライアントを最小構成に再設定することをお勧めします(Raw以外のすべてのエンコーディングを無効化し、カスタムピクセルフォーマットも無効化します)。また、Console debug logging設定をオンにして、コンソールウィンドウ(コマンドプロンプト)にデバッグメッセージを出力させるのも良い方法です。この状態で接続に成功したら、エンコーディングやピクセルフォーマットの設定を1つずつ追加・変更して、クラッシュの原因を特定してください。多くの問題は、CursorやZlibエンコーディングが有効になっている場合や、サーバーが処理できないピクセルフォーマットが強制されている場合に発生します。

モバイルデバイス向けの適切なサーバーのまとめ:

VMLiteのような一部のモバイルサーバーでは、サーバー通信をUSBケーブル経由でトンネリングすることで、ネットワーク接続を回避できます。不安定なWiFiを回避するもう一つの方法は、プライベートルーターやUSB WiFiホットスポットデバイスを使用することです。デバイス間の通信をブロックする「AP Isolation」設定が適用されないように設定してください。

以下の表にサーバーの詳細を示します。このリストに未掲載の新しいサーバーを追加したい場合は、T-Plan Robot Enterprise ContactsのWebページからご連絡ください。

VNC Server

プラットフォーム

状態/備考

Tight VNC

サーバーがサポートするすべて

Linux & Windowsで動作確認済み。TightVNCサーバーではWindows固有のキー(Win、Properties)が動作しない点に注意してください。この問題は報告されており、TightVNC 1.3.11または2.0で修正される見込みです。

Real VNC

サーバーがサポートするすべて

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プロトコル互換モードでのみ、これらのサーバーと連携できます:
1. VNCサーバーウィンドウのConnections タブで、以下の設定を変更します:
Authentication - None
Encryption - None
Prompt VNC Server user to approve connections - チェックを外す

2. Expert設定タブで:
Protocol 3.3 - True

UltraVNC

サーバーがサポートするすべて

当社にて動作確認済み。ユーザーからも動作報告あり。

Remote Desktop(VNC互換のUbuntu機能)

Ubuntu Linux

当社にて動作確認済み。アクセスを有効にするには:

  1. OSメニューでSystem->Preferences->Remote Desktopを選択します

  2. 「Allow other users to view your desktop」と「Allow other users to control your desktop」のチェックボックスをオンにします

  3. 「You must confirm each access to this machine」のチェックボックスをオフにします

  4. デスクトップサーバーはデフォルトのVNCポートである5900で実行されるため、Robotから接続するにはIPのみ(「192.168.100.10」など)、またはIPとポート番号(「192.168.100.10:5900」)を使用します。

Apple Remote Desktop(ARD、VNC互換のMac OS機能)

10.4 PPC Mac、10.5以降(Intel Mac)

当社にて動作確認済み(レガシープラットフォームについてはユーザーから動作報告あり)。ARDをT-Plan Robot Enterpriseで動作させるには、Mac OS Xデスクトップで以下の手順を実行してください:

  1. システムのメインメニュー(Appleアイコン)からSystem Preferencesを起動します

  2. Internet & WirelessセクションでSharingを開きます

  3. リストのScreen Sharingチェックボックスをオンにします

  4. Computer Settingsボタンをクリックし、「Anyone may request permission」をオフ、「VNC viewers may control screen with password」をオンにして、パスワードを入力します

  5. OKで確定します(認証が必要な場合があります)

  6. ウィンドウには「vnc://192.168.100.10/」のようなURLを含む説明が表示されます。デスクトップサーバーはデフォルトのVNCポートである5900で実行されるため、Robotから接続するにはIPのみ(「192.168.100.10」など)、またはIPとポート番号(「192.168.100.10:5900」)を使用します。

Canon Remote Operator's Software Kit


ユーザーから動作報告あり。デスクトップを正しい色で表示するには、T-Plan Robot Enterpriseバージョン3.1.1以降が必要です。

Pocket VNC

Windows CEおよびWindows Mobileデバイス

当社にて動作確認済み。PocketVNC v1.4.3などの旧バージョンには、デスクトップ画像の転送を破損させるバグがあります。回避策があります:

  1. T-Plan Robot Enterprise GUIでEdit->Preferencesに移動し、「RFB (VNC) Client」パネルを見つけます。

  2. HextileとRawのエンコーディングをリストの1番目と2番目に移動します。

  3. 「Use custom pixel format」を選択し、ドロップダウンから「16 bit (65k colors)」項目を選びます。
    携帯電話をT-Plan Robot Enterpriseから接続可能にする方法については、PocketVNCサイトのWindows Mobile Network記事を参照してください。携帯電話にIPアドレスを割り当てられないがネットワークには接続されている場合は、PocketVNCからT-Plan Robot Enterpriseへの逆接続用にRFBリッスンモードを使用します。一部のデバイスはバッテリー節約のため定期的にネットワークから切断されるため、Robotが「No route to server」や「Server not found」のようなメッセージで接続に失敗することがあります。PCからデバイスのIPにpingを送ると、デバイスが復帰する場合があります。それでも改善しない場合は、デバイスをネットワーク(WiFi)に再接続し、VNCサーバーを再起動して、接続がアクティブでデバイスがローカルネットワーク上に見えることを確認してください。注: Pocket VNCとT-Plan Robot Enterpriseの組み合わせは、Windowsモバイル OSおよびアプリケーションテスト向けの数少ない本物のブラックボックスGUI自動化ソリューションの一つです。

EfonVNC

Windows CEおよびWindows Mobileデバイス

バージョン4.3はユーザーから動作報告があります。このサーバーはデフォルトで特殊な15ビットピクセルフォーマットを使用するため、画面が青みがかって表示されることがあります。これは、Robotに標準的なピクセルフォーマットの1つをリクエストさせることで、以下のように修正できます:

  1. T-Plan Robot Enterprise GUIでEdit->Preferencesに移動し、「RFB (VNC) Client」パネルを見つけます。

  2. 「Use custom pixel format」チェックボックスをオンにし、ドロップダウンから任意の標準ピクセルフォーマットを選択します(32ビットで問題ありません)。

mVNC

Symbian OS搭載モバイルデバイス

ユーザーから動作報告あり。デバイスキーボードのほとんどのキーはPCのテンキーにマッピングされているため、デバイス上でのタイピングを自動化するコマンドでは「location=numpad」パラメータを使用する必要があります。例えば、電話番号123456789の入力を自動化するには「Type 123456789 location=numpad」を使用します。

Veency

iOS (iPod、iPhone)

基本機能について当社にて動作確認済み。ユーザーからも動作報告あり。Veencyにはjailbreak済み(root化済み)デバイスが必要です。iOS APIには必要な機能へのアクセスを提供するインターフェースが含まれていないため、代替手段はありません。Veencyは、jailbreak時にデバイスにインストールされるCydiaからインストールできます。表示画像のフリーズやその他の接続問題が発生した場合は、以下の手順を実行してください:

  • Veency側でEnable Cursor設定をオフにします。

  • Robot側でEdit->Preferencesに移動し、「RFB (VNC) v3.x Client」パネルを選択して、Rawエンコーディングをリストの一番上に移動します。新しいバージョンのRobotでは、Cursorエンコーディングも無効化してください(右側の無効リストに移動)。

    iOS 6で動作するVeency v0.9.3381以降は、パスワードで保護されていない接続でキーボードとマウスの入力が無効になることがあります。この動作が発生した場合は、Veency UIでパスワードを設定し、デバイスを再起動してください。
    iOSテストの代替手段については、iOS Mirror接続を参照してください。

VMLite VNC Server

Android

VMLite VNC Serverは、Google Playストアからわずかな料金で入手できる商用ソフトウェアです。root化済み・未root化どちらのデバイスでも動作します:

  • Root化済みデバイスでは、サーバーを直接起動できます。

  • 未root化デバイスでは、PCに小さなVMLiteアプリケーションをインストールし、デバイスをUSBポートに接続した状態でそのアプリケーションからサーバーを起動する必要があります。サーバー接続をUSB経由でPCにトンネリングするオプションもサポートしており、Wi-Fiネットワークに接続されていないデバイスのテストにも適しています。

Androidテストの代替手段については、Android Over ADB接続を参照してください。

4. チューニング

クライアント側の設定

Robotは、Robotアプリケーションおよび VNC接続の両方のパフォーマンスを向上させる可能性のある、多数の設定可能なパラメータをサポートしています。以下の表に、最も重要なものを示します。

パラメータ名(場所)

説明

Encodings
(GUI:Preferences->RFB (VNC) 3.x Client)

Encodingsは、RobotとVNCサーバー間で転送される画像データのエンコード方法を指定します。これは順序付きリストとして指定され、先頭(最上位)の項目が最も優先されます。各エンコーディングは、ネットワーク上で転送されるデータ量(圧縮率が高いほどデータ量は少ない)と、それをデコードするために必要なローカルCPUリソースとの間でトレードオフを取るために、異なるアルゴリズムで画像データをエンコードします。

  • VNCサーバーがリモートの場所にある場合や、ネットワークが遅くローカルCPUが十分に高速な場合は、Tight、Zlib、Hextileのような圧縮率の高いエンコーディングのいずれかを先頭に移動してください。

  • ローカルCPUが遅くネットワークが速い場合は、圧縮率は低いもののデコードコストが低いHextile、RRE、CoRREを試してください。

  • Rawエンコーディングを優先(先頭に設定)しないでください。これはピクセルが圧縮なしの生データ形式で転送される、最も非効率なエンコーディングです。ただし、一部のシンプルなサーバー(モバイルデバイスや組み込みシステムのものなど)はこのエンコーディングのみをサポートしており、リストに含まれている必要があるため、リストの下位のどこかには残しておいてください。

  • 問題が発生しない限り、Cursorエンコーディングはリスト内のどこかに残しておいてください(一部のサーバーはこれを嫌い、存在するとクラッシュする傾向があります)。これにより、クライアント(Robot)はカーソルをデスクトップ画像にエンコードするのではなく、ローカルでレンダリングするようになります。これにより、ネットワークが遅い環境でのデスクトップパフォーマンスが大幅に向上します。また、画像比較もより簡単で信頼性の高いものになります。

エンコーディングの効率を確認するには、同じパネルの「Console debug logging」パラメータを「Full」に設定し、コンソールウィンドウ(コマンドプロンプト)でパフォーマンスデータを確認してください。

Connection pooling (Java API)

Connection poolingを使用すると、サーバー接続を再利用でき、再接続のオーバーヘッドを回避できます。このメカニズムはJava APIからのみ適用できます。詳細はRemoteDesktopClientFactoryクラスのドキュメントを参照してください。

サーバー側の設定

クライアント-サーバー接続のパフォーマンスを大幅に改善する可能性のある、いくつかのシンプルな推奨事項があります:

  • サーバーのデスクトップ背景を、エンコーディングで効率的に圧縮できる単色に変更してください。画像や写真は、ネットワーク上で転送される画像データの量を大幅に増加させます。

  • 時計や画像をループ表示するガジェットなど、動的に更新される不要なオブジェクトはすべてデスクトップから削除してください。これらのコンポーネントは頻繁なデスクトップ更新の原因となり、ネットワークトラフィックを増加させます。

  • 可能であれば、異なるメーカーのサーバーを試してください。一部の製品には、パフォーマンスを向上させるカスタムビデオドライバやフックが付属しています。

  • 適切なリモートデスクトップサイズ(解像度)を使用してください。画像データの量はデスクトップサイズに比例します。