JCBデジタルソリューション開発部 QAチーム(QSAT)の佐藤です。
本日は、ソフトウェアテスト技法の一つである同値分割法について、なるべく平易な言葉で解説したいと思います。
実は無意識で使っている?
同値分割法は、テストの際に入力値等をグループ化して扱うことでテストの工数を削減するテスト技法です。
技法というと難しく感じるかもしれませんが、ソフトウェアのテストに関わる多くの人は無意識にやっていることだと思います。
例えば以下のような場合、みなさんはどのようにテストするでしょうか?
テスト対象のイメージは、Web画面で設問に回答していき、最後に点数を表示するアプリケーションです。
テスト用のコンソールで任意の整数を入力できることとします。
(仕様)
- 点数が80点未満の場合には結果画面で「不合格」と表示する。
- 点数が80点以上の場合には結果画面で「合格」と表示する。
- 0から100までの整数を有効な値として扱う。(無効な値の場合はエラー表示)
1点、2点、3点、と順番に点数を確認していく人はほぼいないのではないかと思います。
簡単に動作確認をしたい場合、まず2つの点数で試すと思います。
- 60点の時には「不合格」と表示される。
- 90点の時には「合格」と表示される。
- どうやら正しく動いていそうだ。
というような流れで判断をする人が多いのではないでしょうか。
これが「同値分割法」の考え方です。 上記の例では、細かく1点きざみで確認する必要はなさそうなので「不合格」と表示される点数の代表値と「合格」と表示される点数の代表値で動作を確認すればよいという考え方です。
同値パーティション
「不合格」と表示される点数の範囲をxとすると「0≦x<80」と表すことができます。「合格」と表示される点数の範囲をxとすると「80≦x≦100」と表すことができます。それぞれの範囲を「同値パーティション」と呼びます。
さらに、入力値として有効な値であるため「有効同値パーティション」という呼び方をします。範囲内の値はテストを行う上で同じものとして扱うことになります。つまり、85点でテストをしたら100点でテストをしたのと同じ扱いになります。
上記は連続した数値が入力値になる例でしたが、テストによっては連続した数値以外を同値パーティションとして扱うこともあります。
メリットと注意点
同値分割法のメリットは、代表値を使ってテストを行うことでテストの工数を削減できることです。
注意点としては、連続した数値の中に特別な扱いをするものが存在する場合、気づくことができない可能性があることです。
例えば、50点の時に特別な表示になる仕様になっていて、その機能に欠陥があった場合、代表値での確認ではその欠陥が検出できない可能性が高いと言えます。
もちろん、仕様書にその仕様について記載があればテストケースとして書き起こして欠陥を検出できるでしょう。
また、上記の例では本当に80点のラインが境界になっているかどうかは不明です。78点が境界になっていた場合でも同じ結果になるからです。
そのため、境界値付近の確認も必要になります。境界値付近を効果的にテストするための技法として「境界値分析」という技法があります。
こちらはまた次回以降に解説したいと思います。
おわりに
最後に、JCBでは我々と一緒に働きたいという人材を募集しています。
詳しい募集要項等については採用ページをご覧下さい。
最後まで読んでいただき、ありがとうございました。