データフローテスト(Data Flow Testing)について

データフローテストとは

データフローテストとは

データフローテストとは、ソースコードのデータ(変数、データオブジェクト)に対して、その状態の変化を確認するテスト技法です。
簡単にいえば、プログラム上でデータがどこで定義され、どこで使用され、どこで消滅するのか、を検証することがデータフローテストです。

データフローテストは、ホワイトボックステスト技法のひとつです。
この技法は、コーディングミスなどによって変数の値が不正使用されている場所を見つけるのに有用です。


データフローとは

データフローとは、データや変数が「定義→使用→消滅」というライフサイクルを行うことを指します。
データのライフサイクルが不正の場合には、バグの発生原因が潜在している可能性が高いので注意が必要です。

データのライフサイクルの順序組合せは9つあり、それぞれの状態を以下のように判断します。

状態 状況 判断
定義-定義 2重定義・再定義 不正ではないが要注意
定義-使用 定義されてから使用 正常
定義-消滅 定義され使用されずに消滅 バグの可能性大
使用-定義 使用されたあとに定義 不正ではないが要注意
使用-使用 再使用 正常
使用-消滅 使用されてから消滅 正常
消滅-定義 消滅したあとに定義 正常
消滅-使用 消滅したあとに使用 明確なバグ
消滅-消滅 2重消滅 バグの可能性大

データフローテストの実施手順

静的解析ツールを利用する

データフローテストでは、静的解析ツールを利用することが有効です。
開発者がソースコードを一行ずつレビューすることよりも、構文解析ツールによるデータフロー解析が効率的で効果的です。


データフローテストの注意点

開発者がデータフローテストを実施することは少ない

一般的には、構文解析ツールを導入したり、コンパイラの警告レベルを高く設定することで、ライフサイクルに則らない変数の検出が可能です。
近年の開発ツールの高度化やTDDなどの開発スタイルの進化により、開発者が能動的にデータフローテストを実施する機会は減りつつあります。


関連ページ