境界値分析の「境界値」
境界値分析は同値分割法の延長である、という説明がよくされます。JSTQB FLシラバスでは以下記述があります。
境界値分析(BVA)は同値分割法の拡張である
パーティションの最小値および最大値(または最初の値と最後の値)が、境界値である
この説明は混乱を招く可能性があります。僕の理解では、パーティションの最小値と最大値が境界値、は厳密には正しくないです。
パーティションA: 0以上2未満
パーティションB: 2以上5未満
パーティションC: 5以上
(整数限定)
というパーティションがあった場合、2周辺の境界値は、2だと理解しています。もし上記JSTQBの記述をそのままとると、2周辺の境界値はAから見ると1、Bから見ると2、になります。でも、本当は2、です。この理解は、JSTQBシラバスからも参照している
Beizer, B. (1990) Software Testing Techniques (2e), Van Nostrand Reinhold: Boston MA
の記述内容からそう判断しました。今後の説明のために、JSTQBの記述を①、僕の理解を②とします。
この理解によってどんな影響があるかですが、3値の境界値分析をした場合の結果が変わります。2値は、実は同じ結果になります。まずは2値から説明します。引き続き2周辺の境界に着目します。
①の場合
Aから見ると、境界値1、外れた値2
Bから見ると、境界値2、外れた値1
結果、1と2がテスト値
②の場合
境界値2、外れた値1(境界値と、その境界値が属さないパーティションの値)
結果、1と2がテスト値
となります。よって、①と②で結果が一致します。続いて3値です。
①の場合
Aから見ると、境界値1、外れた値0と2
Bから見ると、境界値2、外れた値1と3
結果、0と1と2と3がテスト値
②の場合
境界値2、外れた値1と3
結果、1と2と3がテスト値
よって①と②で結果が異なります。①では結果的に4つの値がテスト値となってしまい、「3値」ではなくなります。②は3つの値がテスト値となり、また、JSTQBの3値の説明とも合致します。
というわけで、境界値は同値パーティションの端ではなく、境界上の値、だと理解するとよいと思います。