腕に関しては特に経験がありません。私は組み込みシステムでテスト カバレッジ データを収集する方法について (組み込みテスト カバレッジ ツールの設計者として) 経験があります。
次のものが必要です。
- ランタイム テスト カバレッジ データをコンパクトな形式で、組み込みシステム内のシンプルで簡単に配置できる構造に収集するツールです。
- ランタイム テスト カバレッジ データを保持するのに十分な、組み込みシステム内の追加スペース。スペースが非常に限られている一部の組み込みシステムでは、これが問題になる可能性があります。
- 組み込みシステムから開発システムに都合のよいときにそのデータをコピーできるエクスポート メカニズム。
- そのようなエクスポートされたデータを受け入れることができる、ツール内のインポート メカニズム
これら 3 つの要素を配置すると、テスト カバレッジ データを収集できるようになります。
- 開発システムに基づいてコードを計測し、コンパイルします。
- オブジェクト ファイルを組み込みシステムにエクスポートします。
- 組み込みアプリケーションを実行し、適切と思われる方法でテストを実行します
- カバレッジ データを開発システムにエクスポートする
- テスト カバレッジ ツールにインポートして結果を解釈します。
ある種のインストルメンテーションを行う「ブルアイ」について話すことはできません。私たちのテスト カバレッジ ツールは、さまざまな言語 (Java、C、C#、C++ など) をカバーし、必要なすべてのプロパティを備えています (ただし、組み込みの PL/SQL アプリケーションを想像するのは難しいです!)。
当社のツールは、テスト カバレッジ データを密集したブール バイト/ビット ベクトル (C および C++ の場合は任意、他の言語の場合はバイト ベクトル) の密なブロックとして保存します。これにより、組み込みシステムでの追加のストレージ需要が最小限に抑えられます。これでも多すぎる場合は、当社のツールを使用すると、アプリケーションの小さな部分のテスト カバレッジ データを収集し、結果を組み合わせて、組み込みアプリケーション全体のテスト カバレッジを提供できます。トレードオフとして複数のテストを実行する必要がありますが、少なくともそれは可能であり、スクリプトを使用すると、退屈な手順を改善するのに役立ちます。
テスト カバレッジ ベクター (TCV) を組み込みシステムからエクスポートする方法は指定しません。これにより、ツールが処理できるシステムが制限されるためです。ベクトルのブロックを開発システムのディスク ファイルに直接書き込むだけの「標準」エクスポート機能を提供しています。そのエクスポートシステムは、開発システム自体でテストカバレッジ収集を行うときに変更されずに使用されます(すでにある程度行っていることを示しています)。インストルメント化されたアプリケーションにエクスポート機能を追加し、コンパイル/リンクして使用できるようにします。通常はプログラムの終了時に呼び出されますが、外部イベントによってトリガーされるポイントを含め、アプリケーション内の任意のポイントで呼び出すことができます。
埋め込みコンテキストでは、エクスポート関数を独自のものに置き換えます。約 50 行のコードしかないので、差し替えるものはあまりありません。ほとんどの組み込みシステムでは、利用可能な追加の I/O ポート (パラレル出力ビット、シリアル ポートなど) があります。1 つは、バイナリ テスト カバレッジ データをこの出力ビットに検出するルーチンをコーディングします。組み込みエンジニアなら誰でも、ビット シリアライザーやシリアル ポートへのバイト送信コード ブロックをほとんど問題なく作成できます。この時点で、テスト カバレッジ データを組み込みシステムからエクスポートできます。組み込みシステムにファイル システムがある場合、コードへの変更は、存在しなくても簡単です。
最後のステップは、このビット ストリームをキャプチャすることです。これには、開発システムで実行されるカスタム プログラムを構築する必要があります。このプログラムは、利用可能なハードウェア入力 (シリアル ポートは簡単に見つかるため、これが一般的です) を読み取り、メモリ内のテスト カバレッジ データのビット イメージを再生成します。デフォルトのエクスポート機能をカスタム プログラムにコピーして、このデータをディスク ファイルに移動するためのわずかな変更を加えることができます。この手順の後、テスト カバレッジの対話型コンポーネントはカバレッジ データを読み取ることができます。それがどこから来たのかはあまり気にしません。
そのため、エクスポート手順をカスタマイズすることで、ほぼ任意の組み込みコンテキストでツールを使用できます。(ラップトップのバッテリに組み込まれたマイクロプロセッサをテストするために、ある顧客に使用してもらいました!)。有能な組み込みエンジニアが組み込み版のエクスポート機能や開発システムの常駐部分をいじるのに約1日かかり、テストカバレッジを思う存分集めることができます。
この手法は、当社の C、C++、C#、および Java テスト カバレッジ ツールを使用して組み込みシステムを使用しているお客様によって実装されています。