プロが教える店舗&オフィスのセキュリティ対策術

ソフトウェアのウォータフォール開発における
結合テストについて質問させていただきます。

私は、ソフトウェアテストの経験が浅く、テストにおける納期・品質・コスト・責任分担について、いろいろと悩んでおります。

1つの例として、ある処理をコンボボックスで指定した回数 (2回から10回まで選択可能) 繰り返すプログラムをブラックボックステストしようとしています。

(出力されるデータは、「繰り返し回数」個のレコードが含まれるファイルになります。)

この場合のテストケースとしては、任意の「繰り返し回数」を1つ代表値として選択して、その回数処理が行われていることを1度確認すれば良いと考えているのですが、正しいでしょうか。

「繰り返し回数」 という入力値は、数値が違っていても同じグループ (同値グループ) の値であり、決められた範囲の有効な数値しか入力できないため、たとえば、5を代表値として選択してテストするだけで、すべての場合をテストしたと言えるのではないかと考えています。

テストケースとして、2回と 10回の2パターンをテストするものを良く見るのですが、それはどういった理由によるものなのでしょうか?

--

上記の場合に加えて、

出力データは「繰り返し回数」 3レコード毎に、改ページをして出力するという条件があった場合の考え方について質問いたします。

テストケースは、

単一ページ出力する「繰り返し回数」:2,3
複数ページ出力する「繰り返し回数」:4,5,6,7,8,9,10

のグループに分けて考え、任意の代表値を2パターンテストすればよい

という考え方で正しいでしょうか。

--

ご教示いただければ、大変助かります。どうぞよろしくお願いいたします。

A 回答 (1件)

ブラックボックステストの手法としては、限界値分析(境界値分析)と同値分割があります。

ご質問のケースでは、1,2や10,11をテストするのが限界値分析で、4とか5をテストするのが同値分割です。
これを詳しいことを説明したサイトは多数ありますので、まずは検索して勉強することをおすすめします。そうすれば、5だけテストするというのは、テストケースとして不十分であることが理解できるでしょう。

例えば、変数aが2以上10以下なら正常処理をして、そうでなければエラー処理とするプログラムを書いたとします。C言語なら、
 if ( a >= 2 && a <= 10) {
  正常処理;
 } else {
  エラー処理;
 }

という感じになります。

もし、プログラマーがプログラムの仕様を勘違いして、
 if ( a > 2 && a < 10) {
  正常処理;
 } else {
  エラー処理;
 }

とコーディングした場合を考えてください。a = 5のときは正常処理に行きますが、a = 2 や a = 10 を入力するとエラー処理に行ってしまいます。a >= 2 とすべきところを、a > 2 と書いてしまうようなミスは非常に多いです。だから、a = 2 のときに想定した動作をするかどうか、テストで確認する必要があります。


なおコンボボックスではなく、ドロップダウンリストだと思います。コンボボックスは、リストから値を選ぶこともできるし、リストにない任意の値を入力することもできるものです。
    • good
    • 0
この回答へのお礼

丁寧な回答をいただき、ありがとうございます。

--

まず、コンボボックスはご指摘のとおり、ドロップダウンリストでした。失礼しました。

--

「現場で使える ソフトウェアテスト」という本の、網羅的なテストケースの造り方の部分を参考にして、5だけのテストという考えを持っていました。

ソースコードの例を考えてみて、なぜ、テストケースの作成者が境界値分析を意識したテストケースを作成したか理解できた気がします。

つまり、単体テストレベルで確認されているべきことが、結合テストレベルまで見落とされた場合に対応するためです。現実的に、すべてのコードを単体テストできない場合もあると思うため、そういう考え方があるのだと思います。

単体レベルであれば、1ケーステストするだけで済むことも、結合レベルではすべての入力条件を組み合わせてテストケースを作るため、膨大な量に達すると思います。

単体テストは開発者が行う場合が多いでしょうが、結合テストは別の人や会社が行う場合もあります。スケジュールも厳しいです。

最終的な製品の品質を保証するためにどうしたらいいか、今後勉強していきたいと思います。

ありがとうございました。

お礼日時:2012/06/03 20:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!