単体テストや結合テスト、総合テストの観点や項目を検討するにあたり、境界値分析と同値分割は必ずと言っていいほど、取り上げられます。それほど重要な観点であるということです。
では、あなたは境界値分析と同値分割とはどういう観点なのか、そしてどういうケースで必要となるのかを正しく認識しているでしょうか?
ここでは、境界値分析と同値分割について学んでください。
境界値分析・同値分割とは何か?
境界値分析にしても、同値分割にしても、分類は「ブラックボックステスト」です。
つまり、ある値を入力し、中身はしらないけれど、結果がこうなること!というのを確認するものです。
それに対して、ホワイトボックステストは、中身を知っている前提でテストするものです。例えば、変数aに、1を設定することが分かっている場合、「aは、1であること!」を確認するのが、ホワイトボックステストです。
詳細は、単体テストで必要な観点とは何か?項目抽出の考え方を学ぶに書いてますので、そちらをよければご覧ください。
では、境界値分析と同値分割についてですが、それぞれどういう観点かというと、以下になります。
- 境界値分析:結果が変わる境目を確認する
- 同値分割:結果が変わらない範囲を確認する
違いが分かりますでしょうか?
境界値分析は、あるところまでは、○○だけど、それを過ぎると△△になるというような、○○や△△といった結果が変わる境目の「あるところ」が正しいかどうかを判断するための観点なのです。「あるところ」というのが境界値になります。
同値分割とは、この範囲は、○○となり、あの範囲は、△△となるというような、同じ結果となる範囲である「この範囲」が正しいかどうかを判断するための観点です。「この範囲」が同値分割になります。
ここで、気づいた方もいるかもしれません。
同値分割の「この範囲」と「あの範囲」の境目が、境界値分析なのでは?
その通りです。
つまり、上記のように、同値分割と境界値分析を合わせてテスト項目として検討することが多いのです。
境界値分析・同値分割のテスト項目の考え方
例えば、以下のような仕様があったとします。この仕様について、境界値分析と同値分割で項目を抽出する考え方を学んでください。
<仕様>
ある携帯電話の各月の通話料金を算出し、請求書に印刷する。
・通話料金の仕様
- 通話料金=基本料金+(使用量×通話単価)
- 基本料金は、1,000円とする。
- 通話単価は、10円/分とする。
- 使用量は分単位の通話時間とする。
- 通話時間の秒の扱いについては、00~29:切り捨て、30~59:切り上げとする。
- 通話時間が100分29秒の場合、使用量:100分。100分30秒の場合は、使用量:101分とする。
- 使用量は、最大1,000分まで可能。それを超えた場合、通話不可。
- 通話料金の最大は、1,000+(1,000×10)=11,000円
上記の仕様をもとに、請求書に印刷する通話料金をテストします。
どのようなテスト項目が考えられるでしょうか?
テストを分かりやすくするため、仕様は単純にしています。
ここで、考えるべき観点は、通話料金を構成する要素が取りうる数値をテストパターンとし、各パターンに対して通話料金がどうなるのかを確認することです。印刷エリアの通話料金の桁数確認など、印字に関するテストはここでは除外します。
通話料金を構成する要素は、基本料金、通話時間、使用量、通話単価になります。
ここで着目するのは、取りうるパターンが変わらないものについては、特にパターンは必要ないということです。あくまで、数値に変動がある場合にパターンとしてまとめていくということです。
ですので、基本料金、通話単価は固定値なので、パターン化からは除外します。パターンとなり得るのは、通話時間と使用量になります。
そこで、この2つをパターンとして洗い出していくのです。
通話時間を入力し、使用量がどうなるのかについてパターン化していくのです。
例えば、使用量が最小値、最大値、そして、許容範囲外となる通話時間について洗い出していきます。
通話時間 使用量
00分00秒 0分
00分01秒 0分
00分29秒 0分
↑使用量が0分となるパターン(最小値)
00分30秒 1分
00分31秒 1分
00分59秒 1分
01分00秒 1分
01分01秒 1分
01分29秒 1分
↑使用量が1分となるパターン
999分30秒 1000分
999分59秒 1000分
1000分00秒 1000分
1000分29秒 1000分
↑使用量が1000分となるパターン(最大値)
1000分30秒 1001分
↑使用量が1001分となるパターン(許容範囲外)
赤字は、境界値分析、黒字は同値分割となります。
使用量が0分となるパターンは、00分00秒~00分29秒です。この範囲で、境界値となる00秒と29秒を確認できれば、その間の秒は全て0分となることが担保できます。そこで、念のため、その範囲内で試しにテストしてみるということで同値分割をするイメージになります。
次に、0分の確認だけでは、30秒~59秒の確認ができないため、使用量が1分となるパターンを考慮します。ただし、1分でなくてもよくて、10分でも、中間値の500分でもよいです。これの例では、順番に1分で担保をとることを想定しています。
そして、使用量が最大となるパターン1000分のパターンを洗い出します。さらに、エラーケースとして、許容範囲を超えるパターンとして、1001分となる通話時間を考慮します。その最初の通話時間1000分30秒が境界値として、これが確認できれば、それ以降の時間は全て通話不可となることが想定できます。
このように、境界値と同値分割を行う意味を覚えることで、無駄なテスト項目を減らすこともできます。それは効率化を上げることにもつながるのです。
現場で使えるソフトウェアテスト Java編/町田欣史【2500円以上送料無料】
|
カテゴリ:テスト