同値分割法と境界値分析

今回はブラックボックステストで用いられる手法である、同値分割法と境界値分析について紹介します。

同値分割法とは

同値分割法とはブラックボックステストで使用される技法のひとつです。出力結果が同じになる値の集合(同値パーティション、もしくは同値クラスと呼ぶ)でグループ化し、グループの中から代表的な値をテストケースとする方法です。

システムにとって正しい入力となる範囲を「有効同値クラス」、間違った入力となる範囲を「無効同値クラス」と言います。

例えば、整数で年齢を入力し、12歳以下を子供料金、13歳以上を大人料金と判定するシステムであれば、人の年齢としてあり得ない、―1以下や150歳以上は無効同値クラス、0~12歳と13~149歳の範囲を有効同値クラスとすることができます。

また、無効同値クラスをテストする場合は、個別でテストします。これは、他の無効同値クラスと組み合わせてテストした場合、どちらの同値クラスでの不具合かわからなくなるからです。

同値分割テストのメリットとデメリット

このように同値分割法を用いると、テストするべき範囲から代表値を選択してテストすることができます。メリットとしては、テスト工数を削減できることが挙げられます。代表値を選択してテストするため、入力可能な値をすべてテストする場合に比べて、大幅なテスト工数の削減が見込まれます。また、同値パーティションで区分したところから絞り込むので、効率的に不具合を検出できます。

デメリットとしては、イレギュラーな不具合を検出しづらいという点です。同値パーティションからの代表値を選んでテストするので、すべての値をテストするわけではありません。よって、同値パーティションの中に、イレギュラーな不具合があっても検出できない場合があります。

同値分割法の手順

同値分割法によるテストの簡単な手順は以下です。

  1. 出力結果が同じになる同値クラスを決める
  2. 各同値クラスから代表値を決める(★)
  3. ステップ②で決定した代表値に従ってテストケースを作成する

★代表値には、その範囲の中間値が用いられることが多いです。

境界値分析とは

まず境界値とは、ある範囲の最小値または最大値などの同値分割した領域の端にあたる値のことです。こういった境界部分では、コーディングや仕様のミスが多く、不具合が隠れている可能性が高い部分です。

これに着目したテストが境界値分析です。境界値分析では、仕様条件の境界となる値(出力結果が変わる境界)とその隣の値に対してテストを行います。このように境界値に着目するなら、効率的に不具合を検出することが可能です。

主に、単体テスト、結合テスト、機能確認テスト、負荷テストなどで使用されます。

境界値分析の特長

境界値分析が役立つ場面として、大小比較に対する仕様およびコーディングのミスを発見しやすいことが挙げられます。

大小比較に対する仕様についてですが、境界を表す条件には誤解が発生しやすいものです。なぜなら、境界を表す仕様の記述方式には、「~より大きい」「~より小さい」「~と同等」「以上」「以下」「未満」などさまざまなものがあるので、これらを取り違えやすいのです。

また、大小比較に対するコーディングに関しても同様のことが言えます。コーディングの際、境界は「=、≠、<、>」といった等号・不等号で表されますが、たとえ、開発者がプログラミング言語の仕様自体をよく理解していたとしても、タイプミス、コピペのミスなどが起こることがあります。

このように、境界値分析によって、比較条件に由来した不具合を検出することができるのです。

境界値分析の手順

境界値分析の大まかな手順は以下です。

  1. 境界を見つける
  2. 境界値を決める
  3. テストする値を決める

1、境界を見つける

同値クラス分割などで、出力結果が変わる仕様条件の境界を見つけます。このとき、「~より大きい」「~より小さい」「~と同等」「以上」「以下」「未満」といった自然言語であらわされている仕様を数直線などで図にするようにしましょう。

例えば、飲食店の席の予約システムで人数の入力をするとして、2人以上10人以下が受け入れられるシステムを考えるなら下記のような図になります。

1、境界を見つける

ここで重要なのは境界を見つけることです。「~より大きい」「~より小さい」「~と同等」「~以上」「~以下」「~未満」の~部分が条件に含まれるのかどうかを明確にしましょう。

2、境界値を決める

境界と隣り合う条件や境を境界値と決めます。境界値は、有効同値パーティションの最小値と最大値になります。上の例ですと、2と10になりますが、この値をそのまま、テストケースとすることはできません。

3、テストする値を決める

テストする値の候補となるのは以下のようなものです。

  1. 境界値
  2. 境界値のひとつ下
  3. 境界値のひとつ上

上の図に候補となる値を示すと以下のようになります。

3、テストする値を決める

3は境界値のひとつ上、9は境界値のひとつ下だが、境界値と同じ同値クラスなので省略することができます。

数値が整数ではなく実数の場合は、境界値のひとつ下とひとつ上を厳密に書くことはできませんが、数値範囲を考えて0.1や0.01など適切な上下の間隔をきめていきます。

まとめ

同値分割法とは、出力結果が同じになる同値クラスに着目し、同値クラスの中の代表値でテストをする技法です。

そして、境界値分析とは仕様書上の条件を明確にし、出力結果が異なる境界となる値に対してテストする技法のことです。境界値付近は仕様書の誤解や記述誤りが発生しやすく、不具合が作られやすい傾向にあります。境界値分析は、このような不具合や欠陥を効率的に検出することができます。

株式会社GENZでは、お客様の製品やテストフェーズに合わせた最適なテスト技法を選定し、課題解決に向けたテストプランをご提案します。
仕様やスケジュールが確定していない段階でも、解決したいポイントに応じてテスト内容を一緒に検討いたします。
社内でのテスト計画・実施が難しい場合でも、限られたリソースで効果的にテストを実行できるのがGENZの強みです。

お問い合わせはこちら