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

1.1 ホワイトボックステストの基礎

ホワイトボックステストはソフトウェアテストの技法のひとつでシステムの内部構造に着目したテストです。イメージとしてはシステムの内部構造が認識できる状態でテストするものを思い浮かべてみてください。プログラムが意図したとおりに動作するか確認するテストのため、開発者によって行われます。プログラムの最小単位であるモジュールひとつひとつを対象にして行われるため単体テストにて用いられます。単体テストにて用いられることが多いホワイトボックステストですが、プロダクトや製品によっては単体テスト以外のフェーズで用いられることもあります。

ホワイトボックステスト

ホワイトボックステストはモジュールが設計した論理構造に従って動作するかを検証することであるため、内部ロジックに対して漏れなく網羅的に行うこととなります。そのため、モジュールの論理構造をフローチャートなどの図表にして表して行うことがあります。この利点は、網羅的であることの確認に加えて、既存の論理構造の修正箇所が明確になり、プログラムの修正に関わる負担や他のモジュールへの影響がわかりやすくなることです。
ホワイトボックステストが必要な理由としては2点あげられます。まず、一つ目に、網羅的なテストが行われるので、コーディング時に気が付かなかった不具合を抽出できます。二つ目に、プログラムの修正が行われたときの意図せぬ動作の変化を見つけることができます。自己レビューでは見つけられなかった不具合も、ホワイトボックステストを行うことで検出しやすくなります。

1.2 ホワイトボックステストとブラックボックステストの違い

ホワイトボックステストは内部構造をベースとしていますが、ブラックボックステストは外部仕様をベースに行うテストです。システムに入力する情報、システムから出力される情報に注目します。また、画面表示のデザインやレイアウトなども検証するため、よりユーザー視点に近いテストを行うことができます。内部構造を把握せずにテストを行うこともできるため、第三者検証として行うことができます。

ホワイトボックステスト

2.ホワイトボックステストで検出できない欠陥

ホワイトボックステストは単体テストで行われる、プログラムの論理構造を検証するテストです。よって、以下のような場合は、欠陥を検出できません。
①他のモジュールとの結合時に起こる動作不整合
モジュール単体では独立して機能したのにシステム全体では、予想していなかった動きをすることがあります。この原因として、他のモジュールとの連携における不整合が挙げられる場合があります。これは結合テストで検証される部分であり単体テストで行われるホワイトボックステストでは検出されません。
②要求仕様の誤りや不備
ホワイトボックステストでは、詳細設計書や仕様書にそってモジュールが稼働するか確認します。よって設計書・仕様書自体が誤りや不備がある場合はホワイトボックステストにおいて検出は困難です。
③設計自体の漏れ抜け
ホワイトボックステストでは、前述した通り、設計通りにモジュールが動作するかを確認するため、開発段階で想定しなかった入力値に対して、予想されない出力がされるような不具合があったとしても検出は困難です。

3.ホワイトボックステストで使用される主な技法

3.1 制御フローテスト

制御フローとは、1つの処理に対して、検証するソフトウェアがどのように動くかをフローチャートと呼ばれる図にしたものです。この図をもとにして、if文の条件式や繰り返しロジックなどによって指定された分岐条件に特定のデータを設定してプログラムが設計書通りに作動するか確認することが制御フローテストです。適切なテストデータのパターンを選択し、フローチャート内のすべての処理経路を少なくとも1度は実行されるようにします。
プログラム通りに動作するかが焦点となりますので、ユーザー視点のチェックが抜けることになります。

3.2 データフローテスト

データフローは、モジュール内で使用されるデータの流れを指します。このデータフローテストでは、プログラム内のデータの流れに着目します。
変数データは、プログラム内で、「定義」→「使用(参照)」→「消滅」というライフサイクルをとっており、未定義のまま変数が使用されたりすると不具合となります。このような不正な値が入力されていないかを確認します。データの流れを図示し、未定義もしくは未使用となっているデータを確認していきます。

4.まとめ

ホワイトボックステストは、主に単体テストで使われる、プログラムの論理構造に着目したテストです。プログラムの論理構造をよく把握している開発者によって行われることが一般的で、検出されるバグや不具合は、モジュールを変更・修正するだけで容易に解消されることが多くあります。しかしながら、設計段階などの上流工程での誤りや不備は検出しにくいため、他のテスト手法と上手に組み合わせることが必要です。
 

お問い合わせ