BTC TestStack · ユースケース

コードカバレッジ分析

コードをすべてテストできているか?

コードカバレッジ

limiter.c

1int clamp(int v) {
2 if (v > 5)
3 return MAX;
4 return v;
5}
ステートメント
100%
判定
100%
MC/DC
100%

バックグラウンドで自動的に更新されます。個別の測定は実行されません。

課題

非効率なカバレッジ測定。

インストルメンテーションに基づくカバレッジ測定は、ワークフロー全体に負担をかけます。必要な数値はワンクリックでは得られず、再実行のたびにコストが発生します。

測定のためだけにすべてを実行する

インスツルメント化されたコードは実行した箇所しか報告しないため、1 つの関数だけを確認したい場合でも、指標を得るにはテストスイート全体を実行する必要があります。

1 つのテストを変更し、すべてを再実行します

テストを編集するたびに集計結果は無効になります。その数値を再び信頼できる状態にするには、テストスイート全体を再実行する必要があり、反復のたびに同じコストが発生します。

次に、量産コードでもう一度実行します

インストルメンテーションによってバイナリが変わるため、その結果を実際に出荷するコードの結果として扱うことはできません。インストルメント化されていない量産コードでカバレッジを証明するには、すべてをもう一度実行する必要があり、作業量は 2 倍になります。

統合 · 自動化 · 認証取得済み

カバレッジは結果であり、タスクではありません。

BTC TestStack は、テストケースが作成、変更、削除されるたびに、バックグラウンドでカバレッジを計算・更新します。カバレッジはサブ関数およびサブシステム単位で計算されるため、確認したい任意のサブセットのカバレッジをワンクリックで表示できます。再実行も別途レポートを作成する手順も不要です。

01

自動的に更新される

カバレッジはバックグラウンドで更新されます。計測パスや専用の測定実行はありません。

02

サブ関数およびサブシステムごと

結果は、ビルド全体の単一の数値だけではなく、個々のサブ関数とサブシステムにまで分解されます。

03

任意のサブセットをワンクリックで

スコープを選択すれば、そのカバレッジをすぐに確認できます。データはすでに取得されているため、フィルタリングによって再実行が発生することはありません。

04

各目標を該当テストまでトレース

各カバレッジ目標について、それをカバーするテストケースのリストがすぐに表示されます。どのテストがどの目標に達したかを判断するために手動で相互参照する必要はありません。

4 つのカバレッジ領域

測定する必要があるものすべてを 1 か所で。

構造指標、堅牢性、ドメインチェック、独自の目標を並べて確認でき、カバレッジの全領域が常に最新に保たれます。

構造カバレッジ

機能安全のエビデンスに必要な構造指標一式をまとめて算出します。

ステートメント(STM)判定/分岐(D)条件(C)MC/DC関数 + 関数呼び出しスイッチ・ケース関係演算子
ISO 26262-6 · 表 12、15
ユニットレベルのステートメント、ブランチ、MC/DC に加えて、統合レベルの関数と呼び出しのカバレッジ。

堅牢性の目標

実行時エラーの種別はカバレッジ目標として扱われます。BTC TestStack は、コードがそれらのエラーに対して堅牢であることを証明するか、エラーを発生させるテストを生成します。

  • ゼロ除算
  • ダウンキャスト(情報損失を伴う縮小変換)
  • 範囲外の配列アクセス
ISO 26262-6 · 堅牢性テスト
実行時エラーがないこと、および堅牢性の検証を支援します(表 13)。

ドメインチェック

各インターフェースオブジェクトの有効値と値域を定義またはインポートします。BTC TestStack は、それらのドメインのカバレッジを直接追跡します。

ISO 26262-6 · 表 10
同値クラスのカバレッジと境界値分析を自動的に追跡します。

ユーザー定義カバレッジ目標

すべてのインターフェース変数を扱えるエディターで、任意の目標をブール式または数式として表現し、テストがその目標に到達したかどうかを測定できます。

ISO 26262 · プロジェクト固有の目標
標準の表を超えて、安全計画で定義された追加のカバレッジ目標。
スマートなテスト生成

カバレッジがまだ完了していない場合は、BTC TestStack がギャップを埋めます。モデル検査アルゴリズムは、入力を推測するのではなく、100% の構造カバレッジに達する最小かつ最短のテストケースのセットを導き出します。

入力とキャリブレーションに直接アクセスして動作します。目標が到達不能な場合には、その数学的証明が返されるため、目標を追い続けるのではなく、デッドコードとして扱えます。

ランダム方式のツールは推測に頼る。 モデル検査で証明します。
モデルチェック · 生成
100%構造カバレッジ達成
実証済み
生成されたテストセット · 最小限
TC_01v = 4 → 分岐 false
TC_02v = 6 → 分岐 true
TC_03v = 5 → 境界
1 件の目標が到達不能と証明済み · デッドコードとしてフラグ付け
主な利点

カバレッジ分析がチームにもたらすもの

01

常に最新の状態

バックグラウンド更新により数値は常に最新に保たれ、別途測定を実行する必要もありません。

02

必要な箇所のカバレッジ

サブ関数およびサブシステム単位の結果から、任意のサブセットのカバレッジをワンクリックで確認できます。

03

カバレッジ指標の全範囲

構造、堅牢性、ドメイン、ユーザー定義の各目標を、4 つのツールに分けず 1 つのレポートにまとめます。

04

到達不能性を証明

到達できない目標は到達不能であることが証明され、デッドコードとしてフラグが付けられます。到達不能な目標を追い続ける必要はありません。

自社コードで 100% カバレッジを確認。

評価ライセンスには、実際のユニットの 1 つを対象にエンドツーエンドでセットアップする、当社エンジニアとのキックオフワークショップが含まれます。