Qt for MCUsで組み込みアプリケーションを開発するチームにとって、継続的なコードカバレッジの実施には長らく現実的な障壁がありました。セットアップのオーバーヘッドが高すぎたのです。
各ステップが摩擦を生み、ほとんどのチームにとって継続的なカバレッジ計測は現実的ではありませんでした。
このリリースでその障壁を取り除きます。CocoがQt for MCUs 2.12.1と直接統合され、これまで困難だった手動作業なしに、デスクトップと同等のカバレッジ機能を組み込みターゲットで利用できるようになりました。
テストされていないコードがリスクであることは多くのチームが認識しています。自動車、医療、産業などの規制産業では、ISO 26262やIEC 61508といった規格によりカバレッジはベストプラクティスではなく正式な要件です。
課題は常に実装面にありました。組み込み環境はツールチェーン、メモリ制約、ハードウェアインターフェースの点で大きく異なります。
デスクトップ向けに設計されたカバレッジツールは、こうした現実にうまく対応できません。その結果、多くの組み込みチームはカバレッジを断続的にしか計測できず、実際のハードウェア動作を完全には反映しないシミュレーターのみで計測するケースも多く、計測の価値を損なっています。
Cocoに、Qt for MCUs対応ツールチェーン向けのコンパイラープロファイルが事前設定済みで同梱され、手動によるツールチェーン設定が不要になりました。QML(Qt Quick Ultralite)コードはC++と並行して自動的にインストルメント化されます。実行レポートはDeviceLinkを通じて接続されたターゲットボードから直接取得でき、カスタムI/Oコードは不要です。
Coverage Browserには新たにMCU専用ビューが追加され、デバイスの検出、テスト実行中のデバッグ出力のリアルタイム監視、接続デバイスからの実行レポートのワンクリックインポートが可能になりました。
CoverageBrowserの新しいQtMCUパネルにより、デバイスの接続と実行レポートのインポートを数クリックで実現
最も重要な改善点の一つは、C++とQMLのカバレッジ結果を単一のインストルメンテーションデータベースにマージできることです。これまでMCUアプリケーションの全体像を把握するには、2つの別々のカバレッジプロセスを照合する必要がありました。現在は両方がCoverage Browserに統合され、テスト実行中にソースコードの行単位でリアルタイムに更新されます。
Qt for MCUsで構築された組み込みアプリケーションは、純粋なC++のみ、またはQMLのみというケースはほとんどありません。ビジネスロジックとUIコードは密接に絡み合っており、いずれかのレイヤーのカバレッジギャップはリスクとなります。統合ビューにより、そのリスクの所在を特定して対処することが容易になります。
Coverage BrowserでQMLソースコードにリアルタイムのカバレッジハイライトを表示。緑の行はテスト済みパス、赤の行はギャップを示します。QtMCUコンソールにはテスト出力が並べて表示されます。
接続されたMCUターゲットからの実行レポートのインポート。テスト実行のたびにインストルメンテーションデータベースに蓄積され、完全なカバレッジの全体像が構築されます。
組み込みターゲットで高いカバレッジを達成するには、階層的なアプローチが最も効果的です。
Qt for MCUsを使ったデバイス上でのテストで実際のハードウェア上のアプリケーション全体をカバーし、結果が同じインストルメンテーションデータベースに蓄積されます。各レイヤーは独立して有用であり、組み合わせることで、組み込みアプリケーション全体で90%以上のカバレッジが、目標ではなく現実的かつ計測可能な成果となります。
コードカバレッジは、低品質が許容されない市場において特に重要な、より広範な品質論証の一部です。
これは、監査機関や認証機関にテストの網羅性を実証する必要があるチームに特に有効です。Cocoが生成するカバレッジデータはコンプライアンス文書に直接組み込むことができ、開発から認証までの道のりを短縮します。
Qt for MCUs統合は、本Cocoリリースの機能の一部です。同バージョンではCRAPメトリクス(Change Risk Anti-Patterns)も導入されています。循環的複雑度の分析とカバレッジデータを組み合わせ、関数をリスク順にランク付けすることで、新しいテストを作成する優先箇所の客観的な判断基準を提供します。coverage.pyを通じたPythonカバレッジのサポートにより、同じ分析機能が混在言語のコードベースにも適用でき、C++とPythonの統合ビューを単一のインストルメンテーションデータベースで確認できます。新しいcocosetupユーティリティは、Cocoのデフォルトプロファイルに含まれないツールチェーンのコンパイラーラッパー設定を自動化し、組み込み検証とCIパイプラインのサポートを提供します。
安全認証ホワイトペーパー:規制産業のチームがCocoを使って認証エビデンスを構築する方法
Qt for MCUs統合:組み込みカバレッジワークフロー全体のステップバイステップドキュメント
Tool Qualification Kit:ISO 26262、DO-178C、IEC 62304、EN 50128向けの事前構築済み資格取得文書
Cocoリリースノート: Coco v7.5.0