「Qt World Summit 2019」「Qt Contributors' Summit 2019」参加レポート

#001 Qt活用の最前線に触れる―「Qt World Summit 2019」レポート

この記事を読むのに必要な時間:およそ 9 分

Automating Qt GUI Tests on Desktop,Web,Mobile and Embedded

froglogic社のCEOで共同設立者であるReginald Stadlbauer氏がQtアプリケーションの自動テストにSquish for Qt(以下Squish)や CI(Continuous Integration)を使用する方法について紹介しました。

Squishとは,QtアプリケーションのGUIテストを自動的に実施できるGUIテストツールです。Squish には,GUIのテストケース作成から実行および,結果を参照するための開発環境 Squish IDE が含まれます。まず,Squishでテストを実施するためには,テスト対象アプリケーションのAUT(Application Under Test)とテストケースのスクリプトが必要になります。

画像

Squish のテストケースは,必ずいずれかのテストスイートに含まれます。AUTの設定はテストスイートで行われ,このテストスイート内の全てのテストケースで使用されます。テストケースで使用可能なスクリプト言語は,Python,Ruby,Javascript,PerlおよびTclです。

CI(Continuous Integration)とは,ソフトウェアの品質向上ためにソースコードのビルドやテストおよび検証を繰り返し行えることです。CI ツールである Jenkins に froglogic 社から提供されている Squish プラグインを組み込めば,継続的なテストを実施することができます。

たとえば,Windows上のJenkinsでSquish付属のAddress Bookサンプルプログラムのテストを実施するには

  1. Squish AUTおよびテスト準備
  2. JenkinsとSquishの統合
  3. Jenkisジョブ作成および実施

の作業が必要です。

ここでは,SquishのインストールディレクトリおよびJenkinsのHOMEがそれぞれがSQUISH_HOME と JENKINS_HOME に設定されていると仮定します。

SQUISH_HOME=C:/Squish/Squish for Qt 6.5.1
JENKINS_HOME=%USERPROFILE%/.jenkins
1. Squish AUTおよびテスト準備

Squish 付属のサンプルプログラムのテストスイートの設定概要を記述します。

  • ①Address Bookテストスイートディレクトリ選択します

    %SQUISH_HOME%/examples/qt/addressbook
    
  • ②AUT管理Mapped AUTsにaddressbookアプリケーションを設定します

  • ③テストスイートにテスト対象アプリケーションAUTを設定します

2. JenkinsとSquishの統合

JenkinsからSquishのテストを行うための設定を行います。

①Jenkins前準備

Squish 用のプラグインをダウンロードし,プラグインファイル(SquishPlugin.hpi)をJenkinsの%JENKINS_HOME%/pluginディレクトリに配備します。

②Jenkinsの起動
java -Dhudson.model.DirectoryBrowserSupport.CSP="sandbox allow-same-origin allow-scripts; default-src 'self'; script-src * 'unsafe-eval'; img-src *; style-src * 'unsafe-inline'; font-src * data:" -jar jenkins.war
③Jenkins上のSquishの設定

Jenkinsの管理→Global Tool Configuration→Squish にて,NameおよびInstallation pathにそれぞれ,Default,%SQUISH_HOME% を設定します

注意:Jenkinsの実行には下記点に注意が必要です。

WindowsのServiceとしてJenkinsを実行するとエラーになるため,コマンドプロンプトから直接Jenkinsを起動します。

java -jar jenkins.war

Jenkins 1.641で導入されたCentent-Security-PolicyによりSquishプラグインが影響を受けWeb Reportが正しく表示されないため,このポリシーを変更します。変更するにはJenkinsに次の起動オプションを追加します。

-Dhudson.model.DirectoryBrowserSupport.CSP="sandbox allow-same-origin allow-scripts; default-src 'self'; script-src * 'unsafe-eval'; img-src *; style-src * 'unsafe-inline'; font-src * data:" 
3. Jenkinsジョブ作成および実施

Squishテストを実施するJenkinsプロジェクト作成する手順を記述します。

①新規ジョブ作成

Enter an item nameにaddressbookを入力後,フリースタイル・プロジェクトのビルドを選択します

②ジョブ設定

ビルド→ビルド手順の追加でSquishを選択します

  • Squish Package: Default
  • Test suites: %SQUISH_HOME%/examples/qt/addressbook/suite_py
③ビルド実行

ビルド実行を押下すると,Address Bookのテストスイートが実行され,ビルド履歴にテスト結果が表示されます

ジョブの結果はビルド履歴のビルドステータスアイコン(たとえば,青は成功,赤が失敗など)にて確認できますが,実行結果の詳細を参照する場合には,各ビルド履歴→Squish Report→Web Report と辿ることで確認することができます。

筆者もCIの環境構築を行いましたが,簡単にJenkinsにSquishを統合することができました。Squish及びCIを利用することで,テストを自動化するだけでなく,Jenkinsと統合することによりテスト効率化や品質向上にも期待できると認識しました。

デモブース

1階のホールには,The Qt Company社とスポンサー企業による展示ブースがありました。昼食やセッション間の休憩時は,多くの人たちがブースで出展者と会話し,賑わっていました。

Qt for MCUsの展示

今回,キーノートでも紹介があったQt for MCUsの展示です。

画像

QMLで作成したアプリケーションをマイクロコントローラ上で動かしているデモになります。写真右下の円形のディスプレイはウェアラブル用のマイクロコントローラでQtのアプリケーションが滑らかに動作するデモが展示されていました。

Meet the new unu Scooterの展示について

今回の展示の中で最も目を引く展示になっていたMeet the new unu Scooterです。

画像

unu社がKDAB社と合同で開発した電動スクーターです。車のカーナビよりも小さいディスプレイが設置されており,高解像度で地図などが表示できる様子が紹介されていました。

終わりに

今回のイベントは,メイン会場が埋まるほどのユーザが参加し,大賑わいでした。お昼やコーヒーブレイクだけでなく,休憩時間にも,飲み物や軽食が用意されていて参加者は自由にいただくことができました。

ここまで紹介したトレーニング,キーノート,セッション,デモブース以外に,2日目の夕方にはパーティーがありました。夕食や飲み物が提供され,世界中のQt関係者・ユーザが交流を深めていました。

画像

今回のQtWSでも,ここ数年と同様,キーノートやセッションのスケジュールや概要が確認できるスマホ用アプリ(iOS 用,Android 用)が用意されていました。このアプリは,筆者も会場で利用しており自分が聞くセッションやキーノートをお気に入りに登録できるため,自分用のスケジュール帳代わりに使用していました。

筆者は,個人的にはQtWSに参加するまで,業務の中で扱う必要な知識や技術以外のアプリケーションのイメージがありませんでしたが,今回のQtWSに参加したことで,普段の業務では中々触れることのない技術やアプリケーションを目にすることができたと思います。今後は,このイベント参加の経験を活かしてQt に関する知識を深め,Qtを使用したアプリケーション作成の経験を積んでいきたいと考えています。

最後に,Qt World Summit 2019の様子がYouTubeに公開されています。セッションやキーノートの様子もアップされているため,3日間の様子を知ることはできると思います。 興味のある方はぜひチェックして,来年のQtWSに参加してみてはいかがでしょうか?

SRAのQt関連サービスご紹介
  • Qtの国内販売代理店として2003年からQtの普及・促進に貢献
  • Qtのライセンス販売だけでなく,コンサルティングから開発,サポートサービスまでをトータルに提供
  • 多くのQtエンジニアが在籍しており,Qt開発受託の実績豊富
  • 4名のQtコンサルタントにより,導入のご支援,パフォーマンスチューニング,Qt自身のカスタマイズ等のサービスを提供
  • Qtの導入を検討する顧客向けに,Qtプログラミング体験セミナーを無償で毎月開催
  • より実践的なプログラミングスキルを学べる有償トレーニングも毎月開催
  • 詳細はSRAのQtサイト参照

著者プロフィール

田中智史(たなかさとし)

株式会社SRAのエンジニア。2018年からQtチームに配属され,Qtのアプリケーション開発を担当している。