質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.04%

条件を増やしたときの単体テストのケースづくりについて

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 510

score 26

下記のようにソースを修正した場合、単体テストでどのようなテストケースが必要になりますか?
下記のようなケースを考えたのですが、ケース③、④は必要ですか?処理Dはインデントしているだけなのでテストの必要ないようにも感じます・・・。
また、これ以外にも実施するべきテストケースはありますか?

ケース① 条件1のみ成り立つとき、処理Aが実行されること
ケース② 条件1,2が成り立つとき、処理B,Cが実行されること
ケース③ 条件1,2が成り立ち、処理Cが正常終了時に処理Dが実行されること
ケース④ 条件1,2が成り立ち、処理Cが正常終了時に処理Dが実行されないこと
ケース⑤ 条件1が成り立たない場合

■修正前

if (条件1 AND 条件2) {
    処理A
    処理B
    処理C
    if (処理Cが正常終了) {
        処理D
    }
}

■修正後

if (条件1) {
    処理A
    if (条件2) {
        処理B
        処理C
        if (処理Cが正常終了) {
            処理D
        }
    }
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+2

テスト仕様レビューですか。
私がレビューアならリジェクトです。

  • 条件網羅テスト。条件1と条件2の真偽が網羅されていない
    真偽値表を書いて、どの条件の組み合わせのときにどの処理が実行されるのを期待するのか、明確にすること。
条件1 条件2 期待する処理内容
false false 何もしない
false true 何もしない
true false 処理Aのみ実行され、B,C,Dは実行されない
true true 処理A、処理B、処理Cが実行される

こんな感じで。
このケースだとfalse-trueが抜けやすい、現にあなたも抜けてる。

  • 条件1と条件2は処理C,Dと完全に独立していて、かつC、Dの処理内容に修正がないなら、処理Cが正常終了したら処理D、のテストはスキップしていいかもしれない。
    ただしケース③④を実施しなくていいという話ではなく、上の真偽値表に書いた期待する処理内容はテストする必要があります。あくまでCの成否にかかる分岐処理だけの話。
    インデントしてるだけとか、そういう理由でテストをカットすることはありません。
    (まあインデントやifのカッコが正しく記載されているかどうかはコードレビューの範疇の気がしますが。)
    実際のレビュー時なら、レビューイに本当に条件1,2と処理C,Dが独立しているか聞きます。
    明確に答えられなかったらきちんと処理内容を把握してないということなので、処理内容を理解するように促して一旦突っ返します。

質問文から読み取れる内容は以上かな。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/08/10 06:51

    ご回答ありがとうございます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.04%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る