ホワイトボックステスト技法
TRANSCRIPT
ホワイトボックステストの技法
自己紹介• 名前
• 橘田隼一• TwitterID
• hayabusa333
• 興味があること• カーネルとかGCとか
• 現在のお仕事• ウェッブプログラマー
• 信仰• Joel教翔鶴瑞鶴仲良し姉妹同盟
テストとはなにか• IEEE 標準規格 620.12-1990 の定義
「ある特定の条件化でシステムまたはコンポーネントを操作するプロセスであり、その結果を観察または記録して、システムまたはコンポーネントのある側面を評価すること」
テストケースの三元素• 入力
• キーボード、インターフェース、ファイル、DB
• 出力• 画面、外部機器、ファイル、DB
• 実行の順番• 順次実行のケース、独立なテストケース
ホワイトボックステストの定義• テスト対象のソフトウェアの実装を分析する
• テスト対象のソフトウェアのパスを分析する
• テスト対象のソフトウェアの特定のパスを実行するような入力を求める
• テスト対象を実行する
• 実際の出力結果と期待する出力値を比較する
• テスト対象のソフトウェアが正常に機能しているかどうかを判定する
ホワイトボックステストの範囲
• 単体テスト、結合テスト、システムテスト
• ホワイトボックステストはソフトウェアのパス(経路)に対してのテストである
技法の種類
• 制御フローテスト
• データフローテスト
制御フローテスト• 制御フローテストではプログラムコードの実行パスを識別して、それらのパスを網羅するようにテストケースを作成する
• 制御フローグラフが制御フローテストの元となり、制御フローグラフのパスを分析してテストケースを作成します。
制御フローグラフA
B C
D E F
G H
IJ
K
制御フローグラフA
B C
D E F
G H
IJ
K
• A→B→D→G→I→Kなど、すべての経路を最低1回は通るようにテストケースを作る
• すべての経路を網羅するようにテストケースを作成する
データフローテスト• データフローテストは制御フローテストに似ているがパスを定義した後、すべての変数に対して、定義ー使用ー消滅のパターンが正しいか確認する
• 通過するパスを列挙し、各変数の定義と使用のペアを少なくとも1回は網羅するテストケースを作る
定義ー使用ー消滅• データ値を持つ変数にはライフサイクルが存在する
• それが、定義、使用、消滅
• プログラム言語によっては定義と消滅が自動的に処理されるものもある
データフローダイアグラムXを定義
Xを使用Yを定義Yを使用
Yを使用
Xを消滅
Yを消滅
データフローダイアグラムXを定義
Xを使用Yを定義Yを使用
Yを使用
Xを消滅
Yを消滅
左のルートは
XもYも定義されて
いるため問題はない
データフローダイアグラムXを定義
Xを使用Yを定義Yを使用
Yを使用
Xを消滅
Yを消滅
右のルートは定義されていないYを使用したり消滅しようとしているため問題が発生する
ホワイトボックステストの利点
• ホワイトボックステストを用いると、テスト対象のソフトウェアの全パスを識別してテストを行うことができる
ホワイトボックステストの難点• 数が多くなりすぎて、すべてのテストパスをテストすることはできない
• データのケースによっては、依存する欠陥を見つけることができない
• ホワイトボックステストは現在の定義されている制御フローが正しいことが前提であり、存在しないパスのテストはできない
• テスト担当者にプログラミングスキルが必要である
まとめ• 技法は、ただの道具である
• 道具を知ることによってより良いテストを行えるようになる
• 道具を使って良きプロセスを育てよう
参考文献
• はじめて学ぶソフトウェアテスト技法