ソフトウェアテストの質は、製品・サービスの品質を左右します。そのテスト技法には各フェーズに応じた様々な種類があります。
そこで今回は、システムの内部構造に着目するソフトウェアテスト技法「ホワイトボックステスト」について解説します。
「ホワイトボックステストとは何か?」「ブラックボックステストと違いを含め、実施方法を知りたい」という方は、ぜひご一読ください。
ホワイトボックステストとは
ホワイトボックステストとは、別名「構造テスト」とも呼ばれることがあります。
主に、プログラムの内部構造を理解・意識した開発者自身によって実施されます。
具体的には、ソースコードの文、分岐、条件などを網羅的に、それらが正しい構造で意図した通りに動作しているかを確認するテストです。
そのため、ホワイトボックステストの実行には「プログラミングに関する知識」が必要不可欠です。
ホワイトボックステストには以下のような特徴・メリットがあります。
ホワイトボックステストの特徴
- 単純なミスを検証
- 耐久性やバグなど、網羅的に検証できる
- 内部処理上の不具合・バグが発見できる
- テスト項目がまとめやすい
また、ホワイトボックステストは、システムの内部構造を網羅するようなテストケースに適しています。
具体的には、実施するテストケースによるプログラム実行結果をテスト品質の指標とし、その網羅率(カバレッジ)を計測、分析します。
カバレッジについては後半部分の「ホワイトボックステストの必須知識」にて、詳しく解説します。
ブラックボックステストとの違い
ここからは、以下の特徴について「ホワイトボックステスト」、「ブラックボックステスト」の内容を詳しく説明します。
種別 | 内容 |
---|---|
ホワイトボックステスト | 内部構造に注目した網羅的なテスト。 プログラムの内部の情報を基に行うため、 プログラミングの知識が必要不可欠 |
ブラックボックステスト | 内部構造は考慮せず、外部の仕様に限定したテスト。 画面状態のインプット・アウトプットを検証結果とする。 |
ブラックボックステストとは、別名「機能テスト」とも呼ばれることがあります。
主にプログラムの内部構造を考慮せずに外部からの視点で、ユーザー要求を仕様通り満たしているかを確認するテストです。
テストすべき項目は仕様書などから洗い出します。
そのため、あらかじめシステムの仕様やユーザー要求を理解・把握しておく必要があります。
ブラックボックステストは多くの場合、開発者以外の第三者によってテストが実行されます。そのため、多くのテストレベルに活用ができ、費用対効果が高いと言えるでしょう。
ブラックボックステストとは以下の特徴・メリットを持ち合わせています。
ブラックボックステストの特徴
- テストレベルのほとんどで対応可能
- 費用対効果が高い
- 対応可能なテストレベルが幅広い
- ユーザー要求を満たしているか確認できる
- 操作面の良い点・悪い点を洗い出せる
ブラックボックステストについてはこちらの記事でも詳しく解説しておりますので、ぜひご一読ください。
ホワイトボックステストの技法
ここまでの内容をふまえ、次は「ホワイトボックステストの技法」についてご紹介します。今回は、主に以下2つの技法を取り上げます。
ホワイトボックステストの技法
制御フローテスト:
プログラムにおける処理フローが、網羅的に正しく実行されているかを確認するテスト
データフローテスト:
プログラムの内部構造に関するデータや変数が、正しい手順で行われているかを確認するテスト
制御フローテスト
ホワイトボックステストの技法1つ目は「制御フローテスト」です。
制御フローテストでは、対象となる機能(モジュール)を構成する要素に着目します。そのため、主にプログラムにおける処理フローが、網羅的に正しく実行されているかを確認するテストです。
具体的には、「命令文/分岐した経緯/条件判定」に着目し、これらがすべて正常に動作しているかを網羅的に確認します。前述の通り、これらの網羅率を「カバレッジ」と呼びます。
制御フローテストでは網羅率(カバレッジ)を全てクリアし100%となることが目標となります。
データフローテスト
ホワイトボックステストの技法2つ目は「データフローテスト」です。 データフローテストでは、システム・ソフトウェアで使われているデータや変数に着目します。 主に、プログラムにおける処理フローが、網羅的に「定義→使用→消滅」と正しい順番で実行されているかを確認するテストです。 また、データフローテストではプログラムの処理上で、未定義のままになっている使用データ・未使用データを検出し、内部構造における欠陥を削減することを目的としています。
ホワイトボックステストの必須知識「カバレッジ」とは?
ソフトウェアテストにおいてプログラミング後の単体テストによる品質担保は、手戻りの時間的ロスの削減に寄与します。
上記テストケースを考慮する上では、ホワイトボックステストの概念の1つである「カバレッジ(網羅率)」の計測・分析が、テスト品質の成否を左右します。
そこで今回は、ホワイトボックステストの必須知識として「カバレッジ」についてご紹介します。
カバレッジとは主に、ソフトウェアテストにおける対象プログラムが、「一連の検証作業により、どこまで実施されたのか」を網羅する割合を指します。テストケースにおけるカバレッジの計測により、テスト項目の抜け漏れや、対象プログラムに潜む不具合・バグの効率的且つ網羅的な検出が可能となります。
では、ホワイトボックステストでは具体的にどのようなカバレッジを計測することが多いのでしょうか?代表的なコードカバレッジは、以下の通りです。
代表的なコードカバレッジ
- ステートメントカバレッジ(C0:命令網羅)
- ブランチカバレッジ(C1:条件網羅)
- マルチコンディションカバレッジ(C2複合条件網羅)
まとめ
いかがでしたでしょうか? 今回は、システム・ソフトウェア開発におけるテスト技法の「ホワイトボックステスト」に注目しました。
また、上記のように、カバレッジの評価基準には様々な種類が存在します。
これらの網羅度を算出する方法は「カバレッジ基準」と呼ばれ、これらの基準を総称した実際の網羅結果が「カバレッジ」です。
ホワイトボックステストは開発者自身による、内部構造に着目したテスト技法です。
システムの内部構造を理解・把握した上で、細やかな検証作業を実施することで、プログラミング後の内部構造が仕様通り正しく動作しているのかを、網羅的に確認することができます。
今回ご紹介した内容をふまえ、ホワイトボックステストではカバレッジを活用しながら、正しい手順で、より網羅性の高いソフトウェアテストにしましょう。
本記事をふまえ、導入するテスト技法の見直しや、ソフトウェア品質向上に役立ていただければ幸いです。最後までお読みいただき、ありがとうございました。