このブログは「How to Automate UI Testing for Qt Quick Ultralite Applications on MCU Devices」を翻訳・一部加筆したものです。
マイクロコントローラー(MCU)ベースのデバイスにおけるユーザーインターフェース(UI)のテストは、従来から手作業が中心でエラーが発生しやすいプロセスでした。計算リソースの不足、ディスプレイの抽象化、および従来のデバッグツールの欠如により、デスクトップやモバイル開発で一般的に使用される自動テストワークフローを実装することが困難でした。しかし、軽量UIフレームワークであるQt Quick Ultralite (Qt QUL)や、MCU専用のテストツールであるSquish for MCUsなどの最近の技術革新により、リソース制約のある環境でも自動UIテストが実現可能になりつつあります。
この記事では、Squish for MCUs が Qt Quick Ultralite アプリケーションの自動テストをどのようにサポートしているか、それが解決する技術的な課題、および組み込み UI テストの自動化に今後どのような発展がもたらされるかについてご説明します。
マイクロコントローラは、効率と低消費電力のために設計されています。家電製品、ウェアラブルデバイス、自動車用ダッシュボードなどの組み込みアプリケーションには理想的ですが、UI テストの自動化に通常必要なインフラストラクチャが欠けています。具体的には、MCU には多くの場合、以下の特徴があります:
非常に限られたCPUサイクル(例:200MHz未満)
低容量のRAMとフラッシュメモリ(通常、RAMは1MB未満、フラッシュメモリは2MB未満)
オペレーティングシステムなし、または最小限のRTOSのみ
ネットワークスタックなし、または動的オブジェクトの検査機能なし
これらの制約により、実行時のリフレクション、アクセス可能なウィジェット階層、およびリモート通信プロトコルに依存する従来のオブジェクトベースの UI テストを使用することは不可能になります。
Qt Quick Ultralite は、MCU に最適化された Qt Quick のサブセットを提供することで、これらの制限に対処しています。メモリおよびストレージの使用量を削減するため、ネットワークやマルチメディアなどの必須ではない API を削除しています。ただし、これにより、自動テストのオプションも制限されます。
Qt Quick Ultralite は、MCU クラスのデバイス向けに特別に設計されたランタイムです。メモリおよび処理能力に制約のあるデバイス向けに最適化された、Qt Quick/QML フレームワークの簡略化されたサブセットを提供します。主なトレードオフは次のとおりです。
重たいコンポーネントの削除(例:ネットワーク、マルチメディア、スクリプトエンジンなど)
メモリ使用量を削減するための事前コンパイル済みQMLコード
静的レイアウトと最小限のランタイム割り当て
これらの最適化により、Qt QUL はパフォーマンスに最適ですが、実行時の自己分析機能が低下し、専用のツールを使用しない限り UI テストが大幅に困難になります。
Squish for MCUs は、組み込み環境での UI テストの自動化を実現するために特別に設計されています。そのアーキテクチャは、Device Link ランタイムモジュールを使用することで、オブジェクトレベルへのアクセスやネットワークスタックを必要としません。このモジュールはターゲットアプリケーションにコンパイルされ、2 つのコアとなるテスト機能を実現します:
入力インジェクションの合成: 低レベルのタッチ、タップ、またはクリックイベントをUIスタックに直接送信し、実際のユーザー操作をシミュレートします。
画面データのキャプチャ: 分析用にフレームバッファのスナップショットを取得し、画像比較や光学文字認識(OCR)を含む処理が可能です。
このアプローチにより、オブジェクトレベルのアクセスや完全なネットワークスタックを必要とせずに、画像ベースのテストおよびOCR(光学式文字認識)が可能になります。
オブジェクト認識機能はまだ利用できませんが、今後のリリースで実装される予定です。
デモでは、Squish を使用して、家庭用の温度制御を行うシンプルな Qt Quick Ultralite アプリケーションをテストしました。テストスクリプト:
このテストは、Squish IDE 内で完全に記録および再生されており、基本的な画像ベースのテストでも組み込みデバイスの UI 動作を検証できることを示しています。
Squish for QUL は現在、STM および NXP の Tier 1 MCU ボード、つまり Qt for MCUs チームによる最高レベルのサポートを受けるデバイスに対応しています。テストワークフローは、以下のものと統合されています:
テストは Squish IDE から直接記録、編集、再生することができ、CI/CD パイプラインに統合して自動回帰テストに利用できます。
MCU 向け Squish の今後のアップデートには、以下の内容が含まれます:
これらの機能強化により、組み込み UI の自動テストの範囲と深さが拡大されます。
MCU での自動 UI テストはもはや夢物語ではありません。Qt Quick Ultralite および Squish for MCU を使用すると、開発者は以下のことが可能になります:
組み込みシステムが複雑化するにつれて、Squish のようなツールは品質の維持と開発の迅速化に不可欠となっています。
Qt Group のシニアソフトウェアエンジニア、カタリーナ・ベレンスによる基調講演「MCU デバイスでの Qt Quick Ultralite アプリケーションのテスト」をご覧ください。