Qtブログ(日本語)

Cocoコードカバレッジ - Qt for MCUsサポートの強化

作成者: Qt Group 日本オフィス|Apr 30, 2026 9:22:27 AM
このブログは「Coco Code Coverage - Deeper Support for Qt for MCUs」の抄訳です。

Qt for MCUsで組み込みアプリケーションを開発するチームにとって、継続的なコードカバレッジの実施には長らく現実的な障壁がありました。セットアップのオーバーヘッドが高すぎたのです。 

  • ツールチェーンの手動設定
  • デバイスから結果を取得するカスタムルーティンの作成
  • C++とQMLのカバレッジを別々のプロセスで処理

各ステップが摩擦を生み、ほとんどのチームにとって継続的なカバレッジ計測は現実的ではありませんでした。

このリリースでその障壁を取り除きます。CocoQt for MCUs 2.12.1と直接統合され、これまで困難だった手動作業なしに、デスクトップと同等のカバレッジ機能を組み込みターゲットで利用できるようになりました。

組み込みコードカバレッジがこれまで難しかった理由 

テストされていないコードがリスクであることは多くのチームが認識しています。自動車、医療、産業などの規制産業では、ISO 26262やIEC 61508といった規格によりカバレッジはベストプラクティスではなく正式な要件です。

課題は常に実装面にありました。組み込み環境はツールチェーン、メモリ制約、ハードウェアインターフェースの点で大きく異なります。

デスクトップ向けに設計されたカバレッジツールは、こうした現実にうまく対応できません。その結果、多くの組み込みチームはカバレッジを断続的にしか計測できず、実際のハードウェア動作を完全には反映しないシミュレーターのみで計測するケースも多く、計測の価値を損なっています。 

Qt for MCUs向けCoco:本リリースの新機能 

Cocoに、Qt for MCUs対応ツールチェーン向けのコンパイラープロファイルが事前設定済みで同梱され、手動によるツールチェーン設定が不要になりました。QML(Qt Quick Ultralite)コードはC++と並行して自動的にインストルメント化されます。実行レポートはDeviceLinkを通じて接続されたターゲットボードから直接取得でき、カスタムI/Oコードは不要です。

Coverage Browserには新たにMCU専用ビューが追加され、デバイスの検出、テスト実行中のデバッグ出力のリアルタイム監視、接続デバイスからの実行レポートのワンクリックインポートが可能になりました。

CoverageBrowserの新しいQtMCUパネルにより、デバイスの接続と実行レポートのインポートを数クリックで実現

C++とQMLの統合カバレッジをリアルタイムで確認

最も重要な改善点の一つは、C++とQMLのカバレッジ結果を単一のインストルメンテーションデータベースにマージできることです。これまでMCUアプリケーションの全体像を把握するには、2つの別々のカバレッジプロセスを照合する必要がありました。現在は両方がCoverage Browserに統合され、テスト実行中にソースコードの行単位でリアルタイムに更新されます。

Qt for MCUsで構築された組み込みアプリケーションは、純粋なC++のみ、またはQMLのみというケースはほとんどありません。ビジネスロジックとUIコードは密接に絡み合っており、いずれかのレイヤーのカバレッジギャップはリスクとなります。統合ビューにより、そのリスクの所在を特定して対処することが容易になります。

Coverage BrowserでQMLソースコードにリアルタイムのカバレッジハイライトを表示。緑の行はテスト済みパス、赤の行はギャップを示します。QtMCUコンソールにはテスト出力が並べて表示されます。 

接続されたMCUターゲットからの実行レポートのインポート。テスト実行のたびにインストルメンテーションデータベースに蓄積され、完全なカバレッジの全体像が構築されます。 

組み込みで90%以上のカバレッジを達成する実践的なテストワークフロー 

組み込みターゲットで高いカバレッジを達成するには、階層的なアプローチが最も効果的です。

  • ホストベースのユニットテストでコアロジックを迅速に検証。ハードウェアは不要です。
  • Coco Test Engineがテストデータを自動生成。手動作業では見落としがちなエッジケースも含め、高いカバレッジに達するための手動作業を削減します。

Qt for MCUsを使ったデバイス上でのテストで実際のハードウェア上のアプリケーション全体をカバーし、結果が同じインストルメンテーションデータベースに蓄積されます。各レイヤーは独立して有用であり、組み合わせることで、組み込みアプリケーション全体で90%以上のカバレッジが、目標ではなく現実的かつ計測可能な成果となります。

 CocoとQt for MCUs:規制市場向けの包括的な品質への取り組み

コードカバレッジは、低品質が許容されない市場において特に重要な、より広範な品質論証の一部です。

  • Qt for MCUsは組み込みアプリケーションの開発面に対応します。高いパフォーマンス、豊富なコンポーネントモデル、効率的なUI開発のためのQMLを提供します。
  • Cocoは検証面に対応します。両者を組み合わせることで、規制産業のチームは組み込みソフトウェア品質の開発面とコンプライアンス面の両方に対する一貫した解決策を得られます。

これは、監査機関や認証機関にテストの網羅性を実証する必要があるチームに特に有効です。Cocoが生成するカバレッジデータはコンプライアンス文書に直接組み込むことができ、開発から認証までの道のりを短縮します。

本リリースのその他の新機能:CRAPメトリクス、Pythonサポート、ツールチェーン設定の効率化 

Qt for MCUs統合は、本Cocoリリースの機能の一部です。同バージョンではCRAPメトリクス(Change Risk Anti-Patterns)も導入されています。循環的複雑度の分析とカバレッジデータを組み合わせ、関数をリスク順にランク付けすることで、新しいテストを作成する優先箇所の客観的な判断基準を提供します。coverage.pyを通じたPythonカバレッジのサポートにより、同じ分析機能が混在言語のコードベースにも適用でき、C++とPythonの統合ビューを単一のインストルメンテーションデータベースで確認できます。新しいcocosetupユーティリティは、Cocoのデフォルトプロファイルに含まれないツールチェーンのコンパイラーラッパー設定を自動化し、組み込み検証とCIパイプラインのサポートを提供します。 

利用開始

関連情報