あらためて境界値テストを勉強
今日の勉強会で「境界値テスト/境界値分析」について話題に上がったので、家に帰ってから少し復習。テキストはバイザーのブラックボックステスト本。
![]() |
一般的にバグが境界・端っこに多くあることから、入力や出力を同値分割してそれらの境界・境界の近くを狙ってテストするが、それを「境界値テスト」「境界値分析」と呼んでいる。
バグパターン
話を簡単にするために1次元の数直線を考える(多次元はドメイン分析テスト)。X<20をドメインB、X≧20をドメインAとした場合、以下のようなバグパターンがある。

| 分類 | イメージ | テストすべきポイント | |
|---|---|---|---|
| 1 | 閉包バグ(closure bug) | ![]() |
ONポイント |
| 2 | 右への境界移動(boundary shifted right) | ![]() |
ONポイント |
| 3 | 左への境界移動(boundary shifted left) | ![]() |
OFFポイント |
| 4 | 境界抜け(missing boundary) | ![]() |
ONポイント、OFFポイント |
| 5 | 余分な境界(extra boundary) | ![]() |
INポイント、OUTポイント |
バグの原因
パターン1は、閉集合・開集合の実装を間違えた場合であり、不等号のつけ間違いなど。パターン2と3は、境界となる値自体を実装間違えした場合。パターン4は、実装者にとっては未知の境界であり、仕様が曖昧な場合に生じる。パターン5は、存在しない境界を作りこんでしまった場合。いずれも単純なプログラムミスもあるが、仕様の見落とし・解釈誤り・曖昧さが原因となることもある。このあたりは、単体テストレベルのテスト分析でつぶしておきたい。
パターン5のために、INポイントやOUTポイントは近傍を選ぶよりは離れたところを選ぶべきなのかな。
--
# パターン5が誤りでしたので、訂正。あきやまさんありがとうございますm(_ _)m
| 固定リンク
| コメント (4)
| トラックバック (0)











最近のコメント