TEF/テスト技法

技法名 データフローテスト

技法名(英語) data flow testing

説明

構造ベースのホワイトボックステスト技法の1つです。

この技法は、ソースコードのデータ(変数、データオブジェクト)に対して、その状態の変化をチェックし問題が無いかテストする方法です。

データの状態には定義・消滅・使用の3つがあります。

略号データの状態説明
ddefined定義済み。生成済み(created)、初期化済み(initialized)を含む
kkilled消滅。未定義(undefined)、解放済み(released)を含む
uusage使用。演算で使用(computation)と、判定述語で使用(processing)のどちらか

したがって、データの状態の組合せには、順序を考えて次の9つが考えられます。

状態説明判定
dd2重定義実害は無いが要注意
dk定義され使われること無く消滅バグの可能性大
du定義して使用通常ケース
kd消滅させて再定義通常のケース
kk2回消滅バグの可能性大
ku消滅したデータへアクセス明確なバグ
ud消滅させずに再定義実害が無いケースが多いが要注意
uk使用して消滅通常のケース
uu繰り返しの使用通常のケース

この表の判定結果を元に怪しいところをコードレビューすることでバグを検出します。

使用例

main()

{

   char *p;

   gets(p);

}

上記では、pの実体が無いまま使用しているため、「セグメンテーション違反」が発生する。

補足

データフローテストは通常、静的解析ツール(コンパイラのワーニング出力機能を含む)を用いてテストします。手作業でテストする場合は、フラグなどの怪しい変数に対してdkuの変化をメモしていき、確認します。

ゼロからの開発では、そうそう頻繁に起こる問題ではありませんが、ソースコードを改変しているうちに使わない変数が残ったり、解放済みの変数にアクセスしたりということが発生します。

参考文献

書籍: ソフトウェアテスト技法

total 1983 today 2 yesterday 4

TEF/indexに戻る

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-09-01 (月) 13:48:57 (5709d)