• 締切済み

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

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

みんなの回答

  • w_HIRO_w
  • ベストアンサー率47% (9/19)
回答No.3

No1で回答した者です。 個人な意見は・・・ 2パターンでやりたければ2パターンでいいし、3パターンでやりたければ3パターンで。 仕事でプロジェクト管理した経験からの意見は・・・ プロジェクトとして試験をする場合は、試験の計画(試験実施計画書)について事前にお客さんに説明し承認を貰います。その場合は、試験実施計画書に書いてある試験観点や試験方法とズレていると納品検査で不合格となり納品拒否となります。試験未実施の扱いとなります。 今回の場合、境界値チェックの項目が該当しますが、”>”、”<”、”<=”、”>=”をまとめて記述しているので「境界値±1」となっていることが想定されます。 また、試験実施計画書がないの場合は、プログラムによって2パターン、3パターンが混在していると納品検査で指摘される可能性があります。厳しいお客さんの場合、試験全体のやり直しとなることも・・・ 仕事での経験上からは、境界値チェックを「境界値±1」の3パターンでやることに慣れていた方がいいと思います。

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

Xが整数型の変数であるなら,X=4とX=3の2テストケースで十分だと思います。

  • w_HIRO_w
  • ベストアンサー率47% (9/19)
回答No.1

境界値チェックのテストパターンとして答えます。 私の場合、X=2、X=3、X=4の3パターンで、境界値チェックのテストパターンは境界値±1としてます。 コーディングミスで”<”、”<=”、”>=”のいずれにもなっていないことを立証するためには、3パターンが必要と思います。 仕様が分からないので何とも言えませんが、必要に応じて限界値チェックのテストパターンも忘れないようにしてください。

k-1983
質問者

補足

ご回答ありがとうございます。 今回例にあげた処理では条件が’X > 3’のため (1) X = 3のテストパターンにて異常ケースの処理が行われることを確認できれば   ”<=”、”>=”(3を含む)というコーディングになっていないことが立証できる (2) X = 4のテストパターンにて正常ケースの処理が処理が行われることを確認できれば   ”<”というコーディングになっていないことが立証できる 上記(1)(2)より「比較演算子が正しくコーディングされているか」という観点ならば、 2パターンでいいのではないでしょうか? 重ねての質問申し訳ありません。 

関連する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パターンでいいのでしょうか?

  • 単体テスト仕様書[正常系/異常系]書き方

    こんにちは、単体テスト仕様書作成初心者のものです。 ・正常系と異常系について ・メソッドからメソッドを呼び出すケースの書き方 について質問です。 1.正常系、異常系について 仮に引数 obj1 インスタンスフィールドに格納されている objA を使用して処理を行い結果を返すメソッドがあるとします。 (フィールド変数は初期化時にセットする) 正常系は、obj1,objAともに正常値で期待される結果処理が行われるかということは理解できるのですが、 異常系とは、Nullがくることは考えられない時に、obj1がnullがきた場合、objAがnullの場合などをさすのでしょうか? 異常系というのは何の異常なのかいまいちわかりません。 仮に、プログラム上で引数にNUllが想定されている場合は、正常系ということになるのでしょうか? 1.NULLがくることは想定されていないけど、その処理のテストケースは異常系 2.NULLがくるケースはあるので、その処理のテストケースというのは正常系 というような感じでしょうか? ちなみにファイルを読み込むときにパス上にファイルがないというのは 異常系?ということでしょうか 2.メソッドからメソッドを呼び出すケースの書き方 メソッドAの中でメソッドb、メソッドcを呼び出す処理があったとき、 メソッドbの異常系でエラーを投げた場合、メソッドAでも同条件でエラーがスローされるというような記述は必要なのでしょうか? 例がわかりにくくすいません。 ご存知の方や、このサイトにそれらしいことが書いてあるなどを 教えていただければと思います。

  • if文の処理部分の括弧を省略した場合の書き方

    C言語のif文の書き方についてですが、通常 if(条件) { ---処理1------- } else if(条件) { ---処理2------- } else { ----処理3------ } 括弧を使った場合は上のような動作をすると思うのですが、括弧を使った場合、 次のif文の”処理1”部分if((TEST_SENSOR & 0x03) == 0x03)は正常に動作できますでしょうか? コメント文が1行入ってしまうとダメでしょうか? コンパイラはエラーは出しませんでした。 if((TEST_SENSOR & 0x03) == 0x03) //return TEST_ERR; return T_NONE; else if((SENSOR & 0x03) == 0x01) return T_LOCK; else if((TEST_SENSOR & 0x03) == 0x02) return T_UNLOCK; return T_ERR; どうぞ、ご教授頂きますよう、お願い致します。

  • If x < y Then 0 Then ←この書き方の意味は?

    VB6.0の出来たプログラムをVB.NETに移行する為にソースを見ているのですが If x < y Then 0 Then ~処理A~ Else ~処理B~ End If と記述されている部分がありました。 「0 Then」がなければ、xがyより小さい時、処理Aを行い、 それ以外の場合は、処理Bを行うというのはわかります。 この時のThen 0 Thenとはどういった意味になるのでしょうか?

  • 単体テストのやり方

    単体テストってどうやってするのですか?教えてください。 例えば、この関数だったらどういうテストコードを書けばいいですか? bool isStart(char c){ if(c == 'Y'){ return true; } else if(c == 'N'){ return false; } }

  • 初めまして。HPUX11iv2サーバを使ってTCP通信のプログラム開発

    初めまして。HPUX11iv2サーバを使ってTCP通信のプログラム開発を行い始めたものです。 selectの挙動について質問があります。 下記のようにselectの戻りが正常の場合にどのソケットが読み取り可能か調べるプログラムで一番したのelseケースは発生するものでしょうか?(タイムアウト以外で何も読み取り可とならないパターン) 私の書いたプログラムでは発生しています。それが自分のバグでそう動いてしまっているのか、そう動くパターンがあるのか調べて判断がつかなかった為、質問させていただきました。もしわかる方いらっしゃいましたら回答を宜しくお願いいたします。 ret = select ( nfds, &readfds, 0, 0, null ); if ( ret > 0 ) {  if ( FDISSET( procfd, &readfds ) ) // UNIXデータグラムソケット  {   // プロセス間メッセージ受信処理  }  else if ( FDISSET( listenfd, &readfds ) ) // Listen用ソケット  {   // accept処理  }  else if ( FDISSET( tcpfd, &readfds ) ) //TCP送受信用ソケット  {   // TCPメッセージ受信処理  }  else  {  } }

  • シェルスクリプトのif文

    シェルスクリプトのif文について質問です。 あるファイルが存在しないときだけ処理を行いたい場合、 下記のような記述をするしかないのでしょうか? if [ -e /tmp/test.txt ]; then  ダミー処理(val1=1など意味のない処理)  (ダミー処理を入れるのは何も書かないとエラーとなってしまうため) else   行いたい処理 fi elseを使わずに if  fi だけですますことはできないでしょうか? -eはファイルが存在するならば真なので 逆に意味が真となるようにしたいのですが・・・

  • シェルスクリプトのテスト

    年が変わるとシェルの処理も替わります。 例えば: year=`date +%Y` if [ $year=2006 ];then echo "year 2006" fi if [ $year=2007 ];then echo "year 2007" fi テストをしたいですが、 2007年のテストは出来ますでしょうか? 教えてください!お願いします。

  • VBA 加算演算時のトラブル

    事務処理用に準備したVBA処理の数値合計チェックにて本来イコールとなるべきところ、ノットイコールと判定されてしまいます。当該部分を抜き出し、わかりやすくしたものが下記のロジックですが、ここで、test2,test4は結果がイコールとなるものの、test3の場合、ノットイコールとなってしまいます。どなたか、原因につき教えていただけませんか? Dim aaa As Double Dim bbb As Double sub test2() bbb = 16.67 + 16.67 aaa = 33.34 If bbb = aaa Then MsgBox "OK" Else MsgBox "NE" End If End Sub Sub test3() bbb = 16.67 + 16.67 + 16.67 aaa = 50.01 If bbb = aaa Then MsgBox "OK" Else MsgBox "NE" End If End Sub Sub test4() bbb = 16.67 + 16.67 + 16.67 + 16.67 aaa = 66.68 If bbb = aaa Then MsgBox "OK" Else MsgBox "NE" End If End sub

  • cshの条件式について教えてください

    cshで該当ディレクトリにファイルがなければOK、あればエラーというような処理をしようと思っています。 しかし、下記のような記述ではうまくできません。 1) *************************** if ( -e $DIR/*.* ) then echo "NG" exit 1 else echo "OK" endif exit 0 *************************** if文でなく、外にだせばうまくいくのですが... 2) *************************** test -e $DIR/*.* if($status == 0) then echo "NG" exit 1 else echo "OK" endif exit 0 **************************** if ( test -e $DIR/*.* ) then... でもだめでした。 どうにかしてif文で一発判定をしたいと思っているのですが、正しい記述方法を教えてください。 よろしくお願いします。