GAIO CLUB

2023年07月07日

【第5回】ガイオ用語集「ホワイトボックステスト」

ガイオ用語集

ホワイトボックステストとは

ホワイトボックステストは、ソフトウェアの内部構造やコードを見ながら行うテストのことです。開発者がソフトウェアの動作をしっかりと理解し、正しい実装がされているかどうかを検証するために行われます。対象となるソフトウェアの内部構造やアルゴリズムを理解していることが前提となるため、主にソフトウェアの開発者が行うテスト方法です。

ホワイトボックステストの種類

ホワイトボックステストにはいくつかの種類があります。一般的なものは以下の通りです。

命令網羅(C0カバレッジ)

コード内のすべての文が実行されることを保証するテスト。コード内の各文が正しく動作するかをチェックします。

分岐網羅(C1カバレッジ)

コード内のすべての条件分岐が実行されることを保証するテスト。条件分岐の正しさをテストします。

条件網羅(C2カバレッジ)

コード内のすべての条件式が正しく評価されることを保証するテスト。条件式の結果が正しいかをテストします。

複合条件網羅(複数条件網羅)

コード内の条件分岐において複数の条件があった場合に、それぞれの条件の組み合わせが実行されることを保証するテスト。全ての条件の組み合わせで生じる分岐の結果が正しいかをテストします。テストケース数が膨大になるため、規模の大きなソフトウェアでは大きなコストが生じます。

改良条件判定網羅(MC/DCカバレッジ)

複合条件網羅では条件分岐の全ての組み合わせをテストしますが、MC/DCでは各条件が変わった時に全体の判定がどのように変わるかをテストします。複合条件網羅よりも現実的かつ最も厳しい基準とされています。

経路組み合わせ網羅

プログラムが取りうる制御パスが少なくとも1回は実行されることを保証するテスト。制御パスとは、プログラムの開始から終了までの実行経路のことです。

ホワイトボックステストのメリット・デメリット

メリット

・コードの品質改善
ホワイトボックステストはコードの内部構造やロジックをチェックするため、品質向上に寄与します。

・バグの早期発見
開発初期段階で内部構造をチェックすることで、バグの早期発見が可能となります。

・コードの理解
開発者がコードをより深く理解することができます。

デメリット

・時間と労力
ホワイトボックステストはコードの内部を理解する必要があり、それには時間と労力が必要です。例えば、コードの規模が大きくなるとテスト範囲が広がり、テストケースの設計や実行に要する時間が増えることとなります。

・テスト範囲の限定
テスト範囲がコードの内部構造に限定されるため、外部要因によるエラーに対応できません。

ホワイトボックステストのやり方(使い方)

1. テスト対象のソフトウェアやコードを明らかにする
どの部分をテストするかを明確にします。

2. テストケースを設計する
内部構造やロジックを考慮して、テストケースを設計します。

3. テストを実行する
設計したテストケースに従って、テストを実行します。

4. 結果を分析し、修正する
テスト結果を分析し、必要に応じて修正や改善を行います。

テストの網羅率を定量的に測定するために、網羅率(カバレッジ)を計測するためのツールがあります。また、静的解析ツールを活用することで、ソースコードを実行せずに構文や論理などをチェックすることが可能です。

まとめ

ホワイトボックステストは、ソフトウェアの内部構造やコードを確認しながら行うテスト方法です。コードの品質向上やバグの早期発見ができる一方で、時間と労力がかかるデメリットもありますが、適切なツールを選定/使用することで、このデメリットを解消することができます。

ホワイトボックステストで活用できるガイオツールのご案内

適切なホワイトボックステストを実施するための弊社ツールとして、カバレッジマスターwinAMSがあります。カバレッジマスターwinAMSは、C言語/C++言語に対応し、ステートメント、ブランチ、MC/DC、関数コールなどのコードカバレッジ計測可能な単体テストツールです。
また、他ツールとしてQuality Town for Embedded grade(QTE)があり、自動運転/統合ECUソフトの開発に求められるC++言語やLinux言語、オープンソース型ソフトウェア(OSS)環境に対応した機能安全(ISO 26262)で求められるマイコンターゲットオブジェクト実行とカバレッジ計測が可能です。

人気のコラム

最新のコラム