ブラックボックステストの同値クラステストと境界値クラステスト
テストについて学ぼう
初めて開発現場へ入ったときにわからない単語、業務はたくさんあります。 いわゆる「テスト」について全く知らなかった私が半年の業務経験を経て少しわかるようになったので記事を残すことにします。
テストとは
開発したプログラムが要件を満たしているか確認する業務のことです。学校の中間テスト、期末テストのことではありません(笑) テストを行うことでプログラムが想定通りの動きをする事、また想定外の動きをしない事を確認します。大なり小なりどの開発現場でもテストは行っている(はず)です。
テストについて例を挙げてみます。 例えば、ECサイトで商品を購入する場合には次の手順を踏んで購入すると思います。
- 商品を選ぶ
- カートに追加ボタンをクリックする
- 商品がカートに追加される
- 購入へ進むボタンをクリックし、手続きを行う
普段何気なく商品をカートに追加、購入などの操作ができていると思いますが、万が一出来なかったらどうでしょうか? 何気なく行った改修によってそれらの操作ができなくなったら問題です。 そういったミスがないかチェックするためにテストを行います。
テストの種類について
テストの種類としては大きく2分され、「ブラックボックステスト」「ホワイトボックステスト」が存在します。簡単に言うとブラックボックステストは プログラムの中身を見ずに行うテスト技法で、ホワイトボックステストは反対にプログラムの中身を見ながら行うテスト技法のことです。
その中で今回はブラックボックステストについて説明します。
ブラックボックステスト
ブラックボックステストは先述の特徴のため、どちらかと言うとプログラムを読まない非エンジニア、プログラマの方がテストを行う際に取り入れられるようです。
テストを行う際には仕様書(どのようにプログラムが構成されているかを書き出した文書)から実際に行う条件を洗い出し、テストを実行します。ただ、闇雲にテストを実行するだけでは非常に効率が悪く、重要なケースが漏れてしまう恐れがあるため、効率的なテスト技法として同値クラステストと境界値クラステストというものが存在します。
同値クラステスト
同値クラステストとは、同じ結果を出す値をまとめて1パターンとするテスト技法です。先ほどに引き続き、ECサイトの例を挙げます。 例えば、キャンペーンとして購入金額が一定の割合を上回った場合、景品をプレゼントするとします。 組み合わせは次の通りです。
この場合、一体何ケーステストすれば良いでしょうか? 0円〜20001円までテストを行うとなると膨大なテストケース数に膨れ上がります。かといって減らしていこうとなった場合でも闇雲にテストを行うのでは非効率です。
例えば購入金額が1000円の場合と2000円の場合とでは結果が一緒ですよね?同じく3000円や4000円のケースも同じ結果が求まるはずです。そのため仮に金額を1000円ずつ増やして試していく、としてもテストケースが増えてしまいます。
そのために存在するのが同値クラステストです。この同値クラステスト技法を用いることでテストケースを減らすことができます。今回のケースでいうと例えば、
- 2500円
- 7500円
- 15000円
- 25000円
の4ケースを試してみることで、各ケースのパターンを確認し、仕様通りであることが確認できます。
境界値クラステスト
境界値クラステストは、判定条件の近くの値をテストします。この観点でテストを行うと、同値クラステストでの漏れや仕様、プログラムの誤りを検出することができます。先ほどの同値クラステストの例 で言うと境界値の金額とプレゼントのケースは次のようになります。
- 4999円: なし
- 5000円: ティッシュ
- 5001円: ティッシュ
- 9999円: ティッシュ
- 10000円: ハンカチ
- 10001円: ハンカチ
- 19999円: ハンカチ
- 20000円: ハンカチ
- 20001円: ティッシュとハンカチ
このテストケースを実行することで検条件判定が正しいかどうかを確認することができます。=のつけ忘れで〇〇円以上、と判定するところをより大きいとしてしまっていた場合、仮に5000円購入した場合でもティッシュがもらえなくなってしまいます。
値によって分岐させる場合、その境界となる数値の箇所にバグが入り込みやすいので確認できる、というテスト技法でした。
以上、ブラックボックステストのテスト技法について挙げました。 このような観点を持つことで、テストのケースを減らすことができます。
参考文献
はじめて学ぶソフトウェアのテスト技法