T-Plan Robot バージョン9.0 リリース開始

組込みLinuxデバイスのVNC/KVM経由UIテスト自動化手法

組込みLinuxデバイスのHMI(Human Machine Interface)やタッチパネル、ディスプレイ画面の自動テストにおいて、最大の障壁となるのが「テストツールの常駐が難しい(リソース制約、セキュアな環境)」という点です。

T-Plan Robotが得意とする「VNCやKVMを介した外部からの非侵入型(エージェントレス)テスト」に焦点を当てます。

組込みLinuxを搭載した車載機器(IVI)、医療機器、ファクトリーオートメーション(FA)などのUI/HMIテストでは、ターゲットデバイス側にテスト用のエージェント(常駐プログラム)を入れられないケースが多々あります。

こうした「触れない」環境において極めて有効なのが、T-Plan Robotを用いたVNCまたはKVM経由の外部テスト自動化です。ターゲットに負荷をかけず、ユーザーが実際に画面を見ながら操作するのと同じ状態をシミュレートする手法を解説します。

?️ 1. システム構成のパターン

ターゲットデバイス(組込みLinux)とT-Plan Robot(テスト実行マシン)をどう繋ぐか、現場のハードウェア構成に合わせて以下の2パターンから選択します。

パターンA:ネットワーク経由(VNC接続)

ターゲットのLinux上でVNCサーバー(x11vnctigervnc など)を動作させ、ネットワーク(LAN)経由で画面を取得・操作します。

  • メリット: 追加のハードウェアが不要。手軽に検証環境を構築できる。
  • デメリット: ターゲットLinux側でVNCのプロセスが動くため、厳密な意味での「リソース完全非侵入」にはならない。

パターンB:ハードウェア経由(KVM/RFBキャプチャ)

ターゲットのHDMI/VGA出力をハードウェアKVM(IP-KVMなど)やビデオキャプチャボードに入力し、そこからVNC(RFBプロトコル)経由でT-Plan Robotに画面を渡します。マウス・キーボード操作はUSBエミュレータ(ガジェットモード)で戻します。

  • メリット: 完全な非侵入テスト。 ターゲットデバイスはテストツールが接続されていることすら検知できないため、商用製品と全く同じ状態でテストが可能。OS起動前のBootloader(U-Bootなど)の画面テストも可能。

?️ 2. チュートリアル:接続からテスト実行までのステップ

ここでは、最も標準的な「VNC経由での接続と画像認識テスト」の最小構成手順を解説します。

Step 1: ターゲット側(組込みLinux)の準備

デバイスが起動した際、ディスプレイマネージャー(X11やWayland)と同期したVNCサーバーが自動起動するように設定します。

Bash

# 例:x11vnc を使って既存のディスプレイ(:0)をネットワークに公開
x11vnc -display :0 -forever -shared -bg -nopw -rfbport 5900

Step 2: T-Plan Robotからの接続確認

T-Plan Robot(GUI画面)を立ち上げ、新規テスト作成時に「VNC接続」を選択します。

  • Connection URL: vnc://<ターゲットのIPアドレス>:5900

接続が成功すると、T-Plan Robotの開発ウインドウ内に、組込みLinuxの画面がリアルタイムでミラーリング表示されます。

? 3. テストスクリプトの実装例 (.tpr)

画面が繋がったら、T-Plan Robot特有の「画像認識(テンプレートマッチング)」コマンドを使ってテストを記述します。

以下は、組込みUIの「設定ボタン」画像を探してクリックし、目的の画面に遷移したかをアサーション(確認)する自動化スクリプトの例です。

コード スニペット

# 1. ターゲットデバイスに接続
Connect "vnc://192.168.1.100:5900"

# 2. 画面が安定するまで少し待機
Wait 2s

# 3. 「設定メニュー」のアイコン画像(setting_icon.png)を探してクリック
# 検出精度(Tolerance)を80%に設定
Compareto "setting_icon.png" method="search" tolerance="80%" pass="Click"

# 4. 画面遷移の時間を考慮して1秒待機
Wait 1s

# 5. 設定画面に遷移した証明として「Setting Menu」というタイトルヘッダー画像があるか確認
Compareto "setting_page_header.png" method="search" tolerance="85%"

# 6. 画像が見つからなければエラー(テスト失敗)にする
If ({_EXIT_CODE} != 0) {
    Log "Error: 設定画面への遷移に失敗しました。"
    Exit 1
}

Log "Success: HMI画面遷移テスト成功"
Disconnect

⚠️ 4. 組込みLinux特有の注意点と実践テクニック

① 描画フレームレート(FPS)とネットワーク帯域

組込みデバイスのUIアニメーション(メーターの針の動きやスクロール)をテストする場合、VNCの転送レートが低いと「画像認識のタイミングがズレて失敗する」原因になります。

  • 対策: T-Plan Robotの接続設定で、圧縮率(Encoding)を Raw または Tight に調整し、可能であれば有線LAN(Giga-bit)で直結してフレーム遅延を最小限に抑えてください。

② タッチパネル操作のシミュレーション(座標指定)

組込みUIがマウスではなく「静電容量式タッチパネル」の場合、VNC経由のマウスクリックイベント(Click)が、ターゲットLinux側で正しく「タッチイベント(Touch Event)」として解釈されるか確認が必要です。

  • マウスエミュレーションで動かない場合は、Linuxの /dev/input/eventX に対して直接 evemu-devicexdotool などのコマンドをT-Planの Run コマンド経由でリモート実行し、ハードウェアレベルのタッチ入力を擬似的に発生させるハイブリッド手法も有効です。

③ 画面解像度とカラー深度の固定

組込みLinux側のディスプレイ出力(例:LCDパネルの解像度 800×480、16bitカラーなど)と、テスト作成時にキャプチャした基準画像(テンプレート)の解像度・色深度が一致している必要があります。

  • ファームウェアのアップデート等で画面の描画仕様(アンチエイリアスの効き具合など)が変わると画像認識が外れるため、テンプレート画像は「ターゲット実機からVNC経由でキャプチャしたもの」を必ず使用してください。

? 5. CI/CDへの統合

このVNC/KVM経由のテストは、前回の記事でご紹介した「ヘッドレス実行」と完全に組み合わせ可能です。

Bash

# JenkinsやGitLab CIから実機に対してヘッドレスでテストを回すコマンド
./robot.sh -r "./embedded_hmi_test.tpr" -n -o "robot.connections=vnc://192.168.1.100:5900"

実機をテストベンチ(評価環境)に固定し、ネットワーク経由で外側から叩く仕組みを構築すれば、「組み込み開発におけるフルオートメーションな回帰テスト」の基盤が完成します。

執筆・編集: 株式会社チャネルブリッジ T-Plan Robotチーム