ホワイトボックステスト

命令網羅(C0)

処理を全部通る。

処理①if (A) {     処理②}
処理③

処理①、処理②、処理③の処理を全部通ればいいので、A=trueのデータを用意すれば1回のテストでOK。

処理①    ←2回とも通るif (A) {     処理②    ←1回だけ通る}else{     処理③    ←1回だけ通る}
処理④    ←2回とも通る

この場合、A=trueだけだと、処理③を通らないので、命令網羅をするためには、A=trueとA=falseのデータで2回テストしないといけない。

分岐網羅(判定条件網羅)(C1)

分岐を全部試す。分岐の通り道を全部見る。

処理①
if (A) {     処理②    ←A=trueの時に通る}else{     処理③    ←A=falseの時通る}
処理④

説明通り、分岐したところを全部通る必要がある。

ちょっとひっかけ分岐網羅①

処理①    
if (A) {     処理② ←A=trueの時に通る。}
     A=falseで↑を通らないのも試す必要がある(けど何も起こらないw)
処理③

命令網羅の時はA=trueだけ試せばよかったけど、elseはなくても、A=falseも試さないといけない。

ちょっとひっかけ分岐網羅②

処理①
if (A and B) {     処理②    ←A=true / B=trueの時だけ通る}else{     処理③    ←ABの組み合わせは3パターンあるけど1パターンだけでOK}
処理④

とりあえず処理①と処理②を1回ずつ通れば良いので、2回テストすればよい。
ABの真偽は処理①を通る(A=true / B=true)は必ず必要だけど、処理②は(A=true / B=false)、(A=false/ B=true)、(A=false/ B=false)のどれか一つで網羅できる。

テストパターン2つ

  1. (A=true / B=true)←処理②を通るためには必須
  2. (A=true / B=false)、(A=false/ B=true)、(A=false/ B=false)のどれか一つ

条件網羅(C2)

分岐で通るところじゃなくて、分岐する時の条件の中身を見る。
分岐網羅の上二つと、テスト回数は同じだけど、ひっかけ分岐網羅②の場合はちょっと違う。

処理①
if (A and B) {
     処理②    
}else{     処理③    ←A=true / B=false , A=false / B=trueで同じ処理を2回通る}
処理④

Aのtrueとfalse、BとTrueとFalseをそれぞれ1回試せばいいので、上のように処理②を通らなくても処理③を2回通って条件は網羅できる。

テストパターン

  1. (A=true / B=false)
  2. (A=false / B=true)
処理①
if (A and B) {     処理②    ←A=true / B=trueで通る}else{     処理③    ←A=false / B=falseで通る}
処理④

もちろん(A=true / B=true)と(A=false/ B=false)で、処理②と処理③を1回ずつ通ってもOK

テストパターン

  1. (A=true / B=true )
  2. (A=false/ B=false)

※Cなど条件が増えればその分パターンも増える

判定条件・条件網羅

分岐網羅+条件網羅。分岐をすべて通ることと条件(複数あれば全部の)true,falseを試すことが必要。

AND条件

処理①
if (A and B) {     処理②    ←1回目:A=true / B=trueで通る}else{     処理③    ←2回目または3回目}
処理④
  • 処理②と処理③を通す(分岐網羅OK)
  • AとBのそれぞれのtrue、falseを試す(条件網羅)

というのを満たすようにテストする。

テストパターン1(2回で完了)

  1. (A=true / B=true )←処理②を通るためには必須
  2. (A=false/ B=false)

テストパターン2(3回で完了

  1. (A=true / B=true )←処理②を通るためには必須
  2. (A=true / B=false)
  3. (A=false/ B=true )←Aのfalseを試すためにもう1回

OR条件

処理①
if (A or B) {     処理②    ←1回目:A=true / B=false で通る。 2回目:A=false / B=trueで通る}else{     処理③    ←3回目:A=false / B=falseで通る}
処理④

A=true / B=falseを試すなら、

テストパターン1(2回で完了)

  1. (A=true / B=true )
  2. (A=false/ B=false)←処理③を通るためには必須

テストパターン2(3回で完了

  1. (A=true / B=false)
  2. (A=false/ B=true )
  3. (A=false/ B=false)←処理③を通るためには必須

※1回目、2回目と書いているが順番は関係ない
※Cなど条件が増えればその分パターンも増える

複数条件網羅(MCC)

すべての条件を試す必要がある

処理①
if (A or B) {     処理②    }else{     処理③    }
処理④

条件のすべてのパターンを試す

テストパターン(4回で完了)

  1. (A=true / B=true )
  2. (A=true / B=false)
  3. (A=false/ B=true )
  4. (A=false/ B=false)

※1回目、2回目と書いているが順番は関係ない
※Cなど条件が増えればその分パターンも増える