テストの観点である境界値分析と同値分割を理解する

目安時間:約 8分

単体テストや結合テスト、総合テストの観点や項目を検討するにあたり、境界値分析と同値分割は必ずと言っていいほど、取り上げられます。それほど重要な観点であるということです。

 

では、あなたは境界値分析と同値分割とはどういう観点なのか、そしてどういうケースで必要となるのかを正しく認識しているでしょうか?

 

ここでは、境界値分析と同値分割について学んでください。

 

スポンサーリンク

 

境界値分析・同値分割とは何か?

境界値分析にしても、同値分割にしても、分類は「ブラックボックステスト」です。

 

つまり、ある値を入力し、中身はしらないけれど、結果がこうなること!というのを確認するものです。

 

それに対して、ホワイトボックステストは、中身を知っている前提でテストするものです。例えば、変数aに、1を設定することが分かっている場合、「aは、1であること!」を確認するのが、ホワイトボックステストです。

 

詳細は、単体テストで必要な観点とは何か?項目抽出の考え方を学ぶに書いてますので、そちらをよければご覧ください。

 

では、境界値分析と同値分割についてですが、それぞれどういう観点かというと、以下になります。

 

  • 境界値分析:結果が変わる境目を確認する
  • 同値分割:結果が変わらない範囲を確認する

 

違いが分かりますでしょうか?

 

境界値分析は、あるところまでは、○○だけど、それを過ぎると△△になるというような、○○や△△といった結果が変わる境目の「あるところ」が正しいかどうかを判断するための観点なのです。「あるところ」というのが境界値になります。

 

同値分割とは、この範囲は、○○となり、あの範囲は、△△となるというような、同じ結果となる範囲である「この範囲」が正しいかどうかを判断するための観点です。「この範囲」が同値分割になります。

 

ここで、気づいた方もいるかもしれません。

 

同値分割の「この範囲」と「あの範囲」の境目が、境界値分析なのでは?

 

その通りです。

 

つまり、上記のように、同値分割と境界値分析を合わせてテスト項目として検討することが多いのです。

 

スポンサーリンク

 

境界値分析・同値分割のテスト項目の考え方

例えば、以下のような仕様があったとします。この仕様について、境界値分析と同値分割で項目を抽出する考え方を学んでください。

 

<仕様>

ある携帯電話の各月の通話料金を算出し、請求書に印刷する。

 

・通話料金の仕様

  1. 通話料金=基本料金+(使用量×通話単価)
  2. 基本料金は、1,000円とする。
  3. 通話単価は、10円/分とする。
  4. 使用量は分単位の通話時間とする。
  5. 通話時間の秒の扱いについては、00~29:切り捨て、30~59:切り上げとする。
  6. 通話時間が100分29秒の場合、使用量:100分。100分30秒の場合は、使用量:101分とする。
  7. 使用量は、最大1,000分まで可能。それを超えた場合、通話不可。
  8. 通話料金の最大は、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秒が境界値として、これが確認できれば、それ以降の時間は全て通話不可となることが想定できます。

 

このように、境界値と同値分割を行う意味を覚えることで、無駄なテスト項目を減らすこともできます。それは効率化を上げることにもつながるのです。

 

スポンサーリンク

 

 


カテゴリ:テスト 

この記事に関連する記事一覧

人気記事
プロフィール

こんにちは、管理人のあっきーです。

SE・プログラマになって30年の現役戦士です。

私が、30年のシステム開発経験で培ってきた困ったときの乗り越え方を教えます。

但し、対処法ではなく、私がお伝えするのは「思考法」です。

困ったときにこうすればよいという「行動」を教えても、その人にあうのかどうかはわかりません。ですから、「考え方」をお伝えするのです。

詳しいプロフィールは、
こちら。

最近の投稿
アーカイブ
カテゴリー
広告
ブログランキング参加しています。

ページの先頭へ