• 締切済み

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

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

みんなの回答

  • assault852
  • ベストアンサー率48% (1364/2797)
回答No.1

回答でなくすみません。 仕様書の書き方についてお尋ねなんですよね。 先輩は指導してくれないのですか? とても不思議なんですが・・

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

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

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

  • 単体テストのテストケースにて引数に値を入れたいです

    使用言語:JAVA言語 単刀直入ですが、djunitでの単体テストのメソッドの引数に値を設定したいですがどうすればいいのでしょうか? 引数がString型 Messageクラス public class Messages { public String getMessage(String message) { return message ; } } テストケース作成 public void testGetMessage001() { System.out.println("[testGetMessage001]"); Messages messages = new Messages(); System.out.println(messages.getMessage("Hello")); } とやれば、インスタンス生成してgetmessageメソッドにHelloが入ります。 問題は次の場合で仮にAxxクラスとして Public class Axx{     Public void getAxx(HttpServletRequest request){ ~処理~ } } 引数に(クラス名 オブジェクト名?) この場合、テストケースに Axx axx = new Axx(); System.out.println(messages.getAxx("????")); のようにMessageクラスと同じようにできるのでしょうか? それとも別の方法でHttpServletRequest requestに値をセットできる方法があるのでしょうか? よろしくお願い致します。

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

    単体テストのテストケースの考え方(あげかた)について 最近、プログラム(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パターンでいいのでしょうか?

  • HULFT の異常系テスト (配信) はやるべき?

    HULFT 導入後のテスト (配信) として、異常系のテストは行うべきでしょうか。 配信側は正常系のテストのみ行えば、それで設定内容はすべて確認完了できると思っています。 ※集信側は上書き禁止設定確認など、異常系テストも行う必要がありますが。 ただ、あくまで個人的な考え方であり、テストケースに漏れは出したくはないので、みなさんの意見をお聞きしたいです。 よろしくお願いします

  • 参照型変数を宣言と同時に初期化しない

    参照型変数は、宣言と同時に初期化する必要があります。 宣言時には参照先が決定しておらず、条件によって動的に参照先を決定したい場合、どのように記述すれば良いでしょうか? ------------------------------------------------------------------- CMyClass& obj; // 条件によって異なるオブジェクトを参照したい switch (mode) { case A: obj = objA; // 外部で生成済みのオブジェクトへの参照 break; case B: obj = objB; break; ・・・ case X: obj = objX; break; } // 以下、mode共通の処理 obj.hogehoge(); ------------------------------------------------------------------- 三項演算子を入れ子にして一行に収めれば可能ですが、スマートではないし見た目にも良くありません。 CMyClass& obj = A ? objA : (B ? objB : objC);

  • IE7のonChangeイベントを使用して入力チェック

    textフィールドのonchangeイベントでjavascriptの入力チェックを行い、エラー時はフォーカスをエラー項目に戻し、カーソルを移動できないようにしたいです。 --想定している動作 (1)test1_fieldに1以外の値を入力し、tabなどで移動する。 (2)javascriptのcheck1()でエラーチェック。エラー「test1_field NG」が表示され、カーソルがtest1_fieldに戻る。 再度、カーソルを移動しようとすると、(2)の動作を行う。 --実際の動作 IE6(XP+IE6sp2)では、以下のテストスクリプトで想定している動作をしていたのですが、IE7(Vista+IE7)では、return falseを返しても、test2_fieldにフォーカスが移動できてしまいます。 --テストコード <html> <script> function check1(obj){ if (obj.value==1){ return true; } alert("test1_field NG"); obj.focus(); obj.select(); return false; } function check2(obj){ if (obj.value==2){ return true; } alert("test2_field NG"); obj.focus(); obj.select(); return false; } </script> test1_field:<input type="text" name="test1_field" onchange="return check1(this)" >(1のみOK)<br><br> test2_field:<input type="text" name="test2_field" onchange="return check2(this)" >(2のみOK) </html> 記述等に間違いがあるのでしょうか? ご教授いたがければ幸いです。

  • java mainメソッドの正常・異常の判定について

    基本的な質問で大変お恥ずかしいのですが、どうぞ回答宜しくお願いします。 javaのプログラムではmainメソッドはvoidと決められてしまっていますが、 それではプログラムが正常に動いたか、異常だったかという判定は普通どのようにするものなのでしょうか?復帰値で判断することができないので困っています。 たとえばUNIX上でtestというjavaプログラムを実行するとして、 ”java test”とコマンドで実施します。 Cで作成された復帰値を返却するタイプのプログラムなどですと、 実施直後に”echo $status”とコマンドを発行すると復帰値が確認できますが、 javaプログラムだと確認できないですよね? ジョブスケジューラなどのアプリケーションから実施する場合などについても、 プログラムの正常・異常判定をどのようにしたらいいのか悩んでいます。 一般的?にはどのような判定を行うものなのか、どなたかご教授ください。 宜しくお願いします。

    • ベストアンサー
    • Java
  • メモリアロケーション異常の発生方法

    こんにちは。 プログラムテストの仕様書を作成してます。 mallocの戻り値がNULLの場合の処理のテスト方法に迷っています。 指定したサイズのメモリが取れなかったときに、 mallocで異常(戻り値=NULL)になるということですので、 あらかじめメモリ不足状態を作るのかとも思うのですが、 方法がよくわかりません。 いいテスト方法があれば、教えてください。 宜しくお願いいたします。

  • モジュールの概念・リファレンスとオブジェクト

    {  package TEST;  new { bless {}; }  method {} } 最も簡単な(何もしない)クラスを作ってみたのですが、 $obj = new TEST; とした場合、この戻り値は『自分がどのパッケージに属しているか知っているリファレンス』である、と理解しました。 ここで考えたのですが、パッケージ外で $obj->method(); とした場合は『クラスのメソッド』を呼べると思うのですが 『自分がどのパッケージに属しているか知っているリファレンス』=要するにリファレンス に対してアロー演算子をつけると、クラスオブジェクトを表すようになるという概念が理解できません。 $obj->method(); は リファレンス->関数 という事になり、意味がわかりません。 挙動はわかるのですが、内部的にどのように処理しているのかをご存知の方、もしくはそれに関して言及している資料などご存知の方が居ましたら教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • データベース処理のプログラミングについて

    データベースを処理するためのプログラムを作成していますが、そのコーティングで悩んでいます。 説明が長くなってしまいますが、お付き合いいただける方、ご教示頂ける方がいらっしゃることを、切に願います。 まずは現在の状況説明ですが、下記のような感じでプログラムを作っています。 データベースに、Table1があります。 ・Table1・・・fld1~fld10までの10個のフィールドがあり、fld1が主キー また、このテーブルを処理するためのクラスがあります。 ・データベース処理系のクラス・・・clsTable1 clsTable1では、各フィールドを、メンバ、プロパティとして作ってあります。 ・メンバ:_fld1、 プロパティ:fld1 ・・・ メンバ:_fld10、 プロパティ:fld10 また、Table1に対してSQLを発行するためのメソッドがあります。 ・SelectRecord・・・主キーで検索して1件だけ返すメソッド(検索のためfld1が必要) ・InsertRecord・・・Insert用メソッド(fld1~fld10の全てが必要) ・UpdateRecord・・・主キーで検索し、該当するレコードのfld2を更新するメソッド(検索値のfld1と更新値のfld2が必要) また、あるフィールドの範囲検索などをするメソッドとして、 ・SelectRecords・・・fld3を範囲検索して複数レコードを返すメソッド(fld3をBETWEEN演算子で検索するためfld3minとfld3maxが必要) を作成した場合は、fld3minとfld3max用のメンバとプロパティを追加しています。 これらのメソッドは全て引数なしになっていて、フォームなどから使う場合は必要なプロパティに値を代入してから各メソッドを呼んでいます。 そのため、メソッドを呼び出す際には、どのプロパティを設定する必要があるのかが分からないです。 (作っている時は記憶で、メンテの時はコメントやソースを見て判断しています。) これを改善するために、設定が必要なフィールド全てを各メソッドの引数にしてしまえば良いのかとも思ったのですが、そうするとInsertRecoedの引数は10個になります。 仮にフィールド数が100列のテーブルだったりした場合は引数が100個になってしまうので、それもダメだろうと思っています。 Insert以外でも、詳細な検索などが必要な場合や、全フィールドのUpdateの場合にも、引数が多くなりすぎです。 どんな感じにすればよろしいのでしょうか? また、みなさんは、どんな感じにされているのでしょうか? 開発環境: SQL Server 2000 Standard Visual Basic 2010 Express