テストケースの作成方法と結合テストについての質問

このQ&Aのポイント
  • ソフトウェアのウォータフォール開発における結合テストについて質問させていただきます。テストケースの作成方法や出力データの条件についてお聞きしたいです。
  • ソフトウェアテストにおける納期・品質・コスト・責任分担について、悩んでいます。特に、ブラックボックステストにおけるコンボボックスの繰り返し回数をテストする際、どのようなテストケースを作成すればよいかについて相談したいです。
  • テストケースの作成方法や繰り返し回数による出力データの条件について、質問したいです。また、出力データの改ページ条件がある場合、どのように考えればよいかも教えていただきたいです。
回答を見る
  • ベストアンサー

テストケースの作成方法

ソフトウェアのウォータフォール開発における 結合テストについて質問させていただきます。 私は、ソフトウェアテストの経験が浅く、テストにおける納期・品質・コスト・責任分担について、いろいろと悩んでおります。 1つの例として、ある処理をコンボボックスで指定した回数 (2回から10回まで選択可能) 繰り返すプログラムをブラックボックステストしようとしています。 (出力されるデータは、「繰り返し回数」個のレコードが含まれるファイルになります。) この場合のテストケースとしては、任意の「繰り返し回数」を1つ代表値として選択して、その回数処理が行われていることを1度確認すれば良いと考えているのですが、正しいでしょうか。 「繰り返し回数」 という入力値は、数値が違っていても同じグループ (同値グループ) の値であり、決められた範囲の有効な数値しか入力できないため、たとえば、5を代表値として選択してテストするだけで、すべての場合をテストしたと言えるのではないかと考えています。 テストケースとして、2回と 10回の2パターンをテストするものを良く見るのですが、それはどういった理由によるものなのでしょうか? -- 上記の場合に加えて、 出力データは「繰り返し回数」 3レコード毎に、改ページをして出力するという条件があった場合の考え方について質問いたします。 テストケースは、 単一ページ出力する「繰り返し回数」:2,3 複数ページ出力する「繰り返し回数」:4,5,6,7,8,9,10 のグループに分けて考え、任意の代表値を2パターンテストすればよい という考え方で正しいでしょうか。 -- ご教示いただければ、大変助かります。どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#156136
noname#156136
回答No.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 のときに想定した動作をするかどうか、テストで確認する必要があります。 なおコンボボックスではなく、ドロップダウンリストだと思います。コンボボックスは、リストから値を選ぶこともできるし、リストにない任意の値を入力することもできるものです。

asbyat
質問者

お礼

丁寧な回答をいただき、ありがとうございます。 -- まず、コンボボックスはご指摘のとおり、ドロップダウンリストでした。失礼しました。 -- 「現場で使える ソフトウェアテスト」という本の、網羅的なテストケースの造り方の部分を参考にして、5だけのテストという考えを持っていました。 ソースコードの例を考えてみて、なぜ、テストケースの作成者が境界値分析を意識したテストケースを作成したか理解できた気がします。 つまり、単体テストレベルで確認されているべきことが、結合テストレベルまで見落とされた場合に対応するためです。現実的に、すべてのコードを単体テストできない場合もあると思うため、そういう考え方があるのだと思います。 単体レベルであれば、1ケーステストするだけで済むことも、結合レベルではすべての入力条件を組み合わせてテストケースを作るため、膨大な量に達すると思います。 単体テストは開発者が行う場合が多いでしょうが、結合テストは別の人や会社が行う場合もあります。スケジュールも厳しいです。 最終的な製品の品質を保証するためにどうしたらいいか、今後勉強していきたいと思います。 ありがとうございました。

関連するQ&A

  • 単体テストのテストケースの考え方(あげかた)について

    単体テストのテストケースの考え方(あげかた)について 最近、プログラム(java)をはじめたものです。 単体テストを行ううえで、 まず、テスト仕様書の作成を行う(正確にいえば詳細設計段階でやりますが…)と思いますが、 そのテストケースのあげかたはどういう着眼点であげればよいのでしょうか? 単体テストは、詳細設計に対してのテストだと思いますので、 基本的には、詳細設計で作成いたフローチャートの分岐をすべてのケース通るような仕様書を作成しています。 ただ、このやり方だと、問題があるような気がするのです。 たとえば、javaでMapを使用していて、 入力値が、値が固定のMap(例:1,2,3)に入っていればtrue、入っていなければfalseという処理があるとき、 フローチャートでは、trueかfalseかの2パターンしかなく、 実際のコードの記述もget(入力値)で、あるかないかだけ判断するため、2パターンです。 しかし、実際は、固定Mapの値1,2,3,とそれ以外という選択肢があるとおもうのですが、 こういう場合は、1、2、3、それ以外の4パターンのテストを行うべきでしょうか? それとも、Mapにあるかないかだけの部分なので、trueの時とfalseの時の2パターンでいいのでしょうか?

  • ’>(より大きい)’のテストパターンについて 

    単体テストにおいて、 下記のような処理(Xが3より大きい場合正常ケースの処理を行い、それ以外は異常ケースの処理を行う) のテストを行う場合、テストパターンはどのようになるでしょうか? IF(X > 3)THEN{正常ケースの処理} ELSE{異常ケースの処理} 正常ケースのテストとしてX=4と異常ケースのテストとしてX=3の2パターンで十分でしょうか? または、異常ケースのテストとしてX=2のパターンも必要でしょうか?

  • 作成したSQLの単体テスト【エビデンスの取り方】

    作成したSQLの単体テストをするにあたって、エビデンスの取り方に悩んでおります。 テストケースとしては、 抽出した項目が正しく設定されているか、ホワイトボックスの観点から、 条件に一致する場合、しない場合で期待した値が設定されているか、などです。 抽出したものは50件のレコードで、カラムは15個程度あるとします。 エビデンスは今まではプリントスクリーンで画面キャプチャを取得して、 エクセルに張り付けていました。(SQLを使わないものの単体テスト) そしてインプットとアウトプットのデータを、テストケースのNoに合わせたファイル名にして、 フォルダに格納しておりました。 しかしSQLのテストとなると、どのようにまとめればいいか悩んでおります。 例えばあるカラムが正しい値になっているかというのは、抽出した60件のレコードのうち1レコードをコピーして、エクセルに張り付け、「このカラムのところに○○という値が設定されているため正しい」というようにするのでしょうか。 そうなるとカラムが15個あるので、15個のカラムが正しい値に設定されているかのチェックは 最低でも15個のテストケースが出来上がります。 テストケース(1):カラムAAAの値が○○であること テストケース(2):カラムBBBの値が△であること テストケース(3):カラムCCCの値が□であること    ・    ・    ・ テストケース(15):カラムYYYの値がXであること 1つの1つのテストケースに対して1レコードをコピーして、 「このカラムはこの値になっているから正しい」ということを繰り返すことになるのでしょうか。 そしてインプットとなるデータは、そのデータをDBでつかえるようにインサート文を用意すれば良いのでしょうか。 意味が伝わりにくい文章になってしまいましたが、エビデンスの取り方という点で、 どのように工夫すれば良いのか教えていただきたく、質問致しました。

  • PostgresqlのCASE分の使い方

    SELECT MAX(CASE WHEN fld IS NULL THEN 0 ELSE fld END) FROM tbl ; tblテーブルのfldの最大値を取得するSQLを作りたいのですが、tblテーブルにレコードが登録されていない時に「0」を出力したいと思っています。 上記のSQLだとレコードが0の場合はfldの値がないため、0を出力してくれません。 どのように修正すればレコード0件のときに「0」を出力してくれるでしょうか。 宜しくお願いします。

  • 集計グラフの作成方法

    WindowsXP SP3、Excel2002使用です。 1320,1322,1321,1320,1317,1323,1324,1322,1319,1321,1317,1317... といった、ある一定範囲内のランダムの数値を、どの数値が何回出たのかのグラフを作成したいのですが、いまいち作り方が分かりません。 値を記述した範囲を選択してグラフの作成をしても、横軸が1つめ、2つめ、3つめ・・・縦軸が1317,1318,1319・・・になってしまいます。 横軸に1317,1318,1319,1320・・・縦軸に出現回数(1回、2回、3回・・・)というふうにしたいのです。 よろしくお願いします。

  • gooスピードテスト

    gooスピードテストって、回線種別を適当に選んでも計測されてしまいますが、正しい数値は本当に出ているのでしょうか? たとえばBフレッツなのにADSLを選択して、計測しても数値が出てきてしまいます。この場合、いったいどこの数値を計っているのかと思ってしまうのですが。。。

  • クエリーの作成方法(MS Access)

    以下の検索は可能ですか。 複数のフィールドの1つにデータ型は倍精度浮動小数を有すフィールドAがあり、そこでの検索条件はある数値 N を超えない最大の値をもつレコードです。 検索されるレコードは1件です。普通にすると検索条件に<Nを指定して、検索されたレコードでフィールドAの最大を有するレコードを抽出すればいいのですが、この操作を1回で実現する方法はありますか。 集計のグループ化を利用してフィールドAだけであれば検索できるのですが、他のフィールドをうまく表示できません。 他のフィールドを表示するにはグループ化以外に何を指定していいかご教示ください。それとも別の方法があるでしょうか。 よろしくお願いします。

  • Smartyのテンプレート作成方法

    以下の条件の時に、Smartyのテンプレートをどのように作成するといいか教えてください。 ◎以下は全ページで共通 ・HTMLのhead要素部分(title要素のテキスト部分のみ可変) ・画面上のヘッダ部分のメニュー(完全に共通) ・画面上のフッタ部分(完全に共通) ◎以下の部分がページにより異なる ・右サイドに表示されるナビゲーションメニューはカテゴリにより3パターン(もしかしたら増えるかも。それぞれのパターンで10-40行程度) ・メインコンテンツ部分は   - 半数程度のページが出力する要素は共通(テキスト部分のみ異なる。Aパターン)   - 数ページは出力する要素は共通(テキスト部分のみ異なる。Bパターン)   - のこりはパターン化が難しい… 疑問点は以下です ・このような場合、テンプレートファイルは1つにする? ・右サイドのナビゲーションメニュー部分はどうするか?  - テンプレートファイルを3枚に分ける?  - テンプレートファイルは1枚にし、Smartyの組み込み関数のif分で書き分ける?(→テンプレートファイルがけっこう冗長なソースになりそう)  - ナビゲーションメニュー部分のHTML文字列を返す関数を共通で作成し、別ファイルにし、すべてのページのPHPファイルからincludeで呼び出し、その関数の戻り値をSmartyの変数に設定する?(こうしようかと思っているが、無骨?) ・メインコンテンツの部分をどうするか? テンプレートファイルを1つにすると、分岐が多くなりかえって複雑なソースになり、メンテナンス性が低下してしまいそうという懸念があり、どうしようか迷っています。 個人の趣味の範囲でやっていますが、この件について開発の現場でも通用するようなテクニックを知りたいと思っています。 「実際、似たようなケースでよくこうしてるよ」 「こういう実装が多いが、こう実装した事もある」 など実際のプロジェクトの経験談など教えていただけるとうれしいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • ACCESSでのWORD差込印刷について

    ACCESSのテーブル情報をWORDに差し込んで印刷したいと考えているのですが、 1ページに複数のレコードの情報を出力する方法がわかりません。 例えば、6つのレコードがあった場合は 1ページ目に1つ目のレコードから4つ目のレコードまでの情報を出力し、 2ページ目に5つ目のレコードから6つ目のレコードまでの情報を出力する といった感じのものが作りたいのですが…

  • 【SELECT文】左の3桁内が数値か否か判断する方法を教えてください。

    初めて投稿させて頂きます。よろしくお願いします。 表題の件ですが あるAテーブルの項目の属性がCHAR型で左から3文字内で数値のみの場合と英字が含まれている場合とで判断をしたいのですが。 成功イメージ例 Aテーブル --------------------- TEST(フィールド) 1234567 12A4567 BN34567 左から3桁内数値だけ選択 結果>>>>'1234567'のレコード1件を抽出 ------>SELECTで左3桁内数値のものだけ抽出したいのですが。 SUBSTR(TEST,1,3)で左の3文字を切り離したのですが、行き詰ってしまいました。 わかりづらい説明で申し訳ございませんが、よろしくお願いいたします。

専門家に質問してみよう