Qtブログ(日本語)

【Squishノウハウ】自動GUIテストをJenkinsからヘッドレスに実行する

作成者: Qt Group 日本オフィス|Mar 26, 2023 11:00:00 PM

この記事はHeadless Execution of GUI Tests with Jenkinsの抄訳です。

CI/CD(Continuous Integration/Continuous Deployment)システムであるJenkinsを使ってGUI自動テストを実行することは、自動化を効率化するアプローチとしてよく知られています。しかし、Jenkinsを通じてテストスイートを実行するコンピュータは、"ヘッドレス "である場合があります。つまり、物理的なディスプレイが接続されていなかったり、GUIアプリケーションを最終的にレンダリングするためのグラフィカルなログオンセッションがなかったりするのです。どちらの点も、ラックベースのコンピュータシステムでよく見られるケースであり、一般的にGUI自動化の妨げになる可能性があります。

ここでは、Squish GUI Testerで作成したGUIテストを、Unixプラットフォーム上のJenkinsサーバーを使用してヘッドレスで実行することについて説明します。Squish-Jenkins統合プラグインを使用して、プロジェクトに必要な高速な結果と迅速なフィードバックを得る方法について説明します。

ヘッドレスセットアップにおける潜在的な問題

このようなヘッドレスセットアップでは、通常、ディスプレイの欠如に関連するエラーメッセージが表示されます。Squishを使用する場合、これらのエラーメッセージは、ビルドのページのSquish report > Server Logに表示されます。考えられるエラーメッセージは以下の通りです:

qt.qpa.screen: QXcbConnection: Could not connect to display<br>Could not connect to any X display.
application-specific initialization failed: no display name and no $DISPLAY environment variable
ERROR:browser_main_loop.cc(1485)] Unable to open X display.
Error: no DISPLAY environment variable specified
qt.qpa.xcb: could not connect to display<br>qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.<br>This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.<br><br>Available platform plugins are: xcb.

対策:仮想ディスプレイ

Unixシステムの場合、「仮想」ディスプレイを使用することで、グラフィカルなログオンセッションやテストを実行するコンピュータの物理ディスプレイの必要性を回避することができます。

Unixシステム用の一般的な仮想ディスプレイソリューションの1つにXvfbがあります。Jenkinsプロジェクト内でXvfbを使用するには、Jenkins Xvfbプラグインを使用すると簡単です。

このプラグインをJenkinsプロジェクトにインストールして使用するには、次のような手順で行います:

ステップ1:Jenkinsプラグインマネージャーを開く

  • Jenkins (1) > Manage Jenkins (2) > Manage Plugins (3)に進む:

ステップ2:Xvfb Jenkinsプラグインのインストール

  • Availableを選択 (1)
  • フィルターに "xvfb "と入力:(2)
  • エントリー「Xvfb」のチェックボックスをチェックする(3)
  • 再起動せずにインストールする」または「今すぐダウンロードして再起動後にインストールする」をクリック(4)

Xvfbは、多くの場合、Unixシステムにはすでにインストールされています。インストールされているかどうかを調べるには、シェルでwhich xvfbを実行し、見つかるかどうかを確認するだけです。(UbuntuにXvfbをインストールするには、シェルでsudo apt install xvfbを実行します)。

ステップ3:Jenkinsのプロジェクト設定を開く

  • 的のJenkinsプロジェクトの設定を開く(1、2):

ステップ4:プロジェクトでXvfbプラグインを有効化する

  • ビルド環境の選択
  • チェックボックス ビルド前にXvfbを起動し、ビルド後にシャットダウンする(2):

ステップ5:シェルビルドステップの追加

  • ルド(1)、ビルドステップの追加(2)、シェルの実行を選択する:

ステップ6:シェルスクリプトの入力

  • セレクトビルド (1)
  • コマンド(2)で次のように入力する:
# DISPLAYの名前をアウトプットする
echo "DISPLAY: $DISPLAY"

# 適切なフォーカスを持つウィンドウマネージャーを起動する
fluxbox &

# ウィンドウマネージャーが起動するのを待つ
sleep 5

このためには、「fluxbox」ウィンドウマネージャがインストールされていることが必要ですが、一般的には、他のウィンドウマネージャーを使用することができます。(Ubuntuでfluxboxをインストールするには、sudo apt-get install fluxboxを実行します)。

また、このステップはSquishのビルドステップの前に行うことが重要です(下記を参照)。

ステップ7:Squishビルドステップを追加

  • ビルドステップの追加(2)>Squish(3)で、必要なSquishビルドステップを追加する:

まとめ

Jenkinsの統合プラグインを使用すると、ディスプレイやモニタが接続されていないコンピュータでも、GUIテストの自動実行を簡単に設定できます。Jenkinsのような継続的インテグレーションツールを使用すると、マウスをクリックするだけでGUIテストを起動したり、アプリケーションやテストスクリプト自体の変更によってテストをトリガーしたりすることができます。

おわりに

以上が、記事の内容となります。

SquishをはじめとするQtのQA(品質保証)ツールにご興味がおありの方は、Qt JapanのEメールアドレスjapan@qt.ioまでお気軽にご連絡ください。

概要のご説明から詳細な技術的相談、また無償のツールトライアルのご案内も行っております。