前回の続きね。
プログラムに書き込んだ分岐や繰り返しの処理を実行できているか
これが簡単なようで難しいw プログラムの分岐(IF、SELECT、SWITH等)はそこに書かれたルートのどこかは通るように、そして繰り返し処理(FOR、LOOP、WHILE、PARFORM等)は必ず入り口があって出口があるように作っているはずです。作ってないプログラム……はそれ以前だぞ(笑) それらのおかげで一本道だったプログラム動作開始から終了までのあいだにはいくつもの通り道ができあがります。
単体テストは、それらの取り得る限りの全てのルートを通ったことを証明し、かつ、通った結果が予想通りであることを証明するためのテストです。自分が作ったプログラムソース全部を最低一回は処理されたことを確認しましょう。。
さて、事例を使い慣れたVBで(笑)
01 Dim a As Long = 0
02 Dim Gusu, Kisu As Long
03
04 Dim s As Long = InputBox("計算値を入力")
05
06 While (a <= s)
07 a += 1
08 If a Mod 2 = 0 Then
09 Gusu += 1
10 Else
11 Kisu += 1
12 End If
13 If Kisu > 8 Then
14 Exit While
15 End If
16 End While
というロジックがあったとします。この時、分岐は08行目と13行目、繰り返しは06行目にありますが、分岐の単体テストを行う場合には、最低でも全てのロジックを通すわけですから
分岐:
1.08行目→09行目処理
2.08行目→11行目処理
3.13行目のみ処理
4.13行目→14行目処理
の4種類の通り道が存在し、1→3、1→4、2→3、2→4の4通りの組み合わせが発生しうることがわかります。ですので、単体テストでは、最低でも1→3と2→4の組み合わせか、1→4、2→3の組み合わせでプログラムソースを処理し、ロジックが正しく実行される事を証明しなくてはなりません。
同じように、繰り返しも入り口と出口の確認が必ず必要なのですから、
繰り返し:
1.06行目から始まる
2.14行目で繰り返し処理が終わる
3.06行目で繰り返し処理が終わる
と1種類の入り方と2種類の出方が存在し、1→2、1→3の始まり方と終わり方の組み合わせが発生しうる事がわかります。分岐と同じ考え方で最低でも全ての組み合わせを確認するべきことも判るでしょうか? トータルすると、このプログラムの場合、分岐の動作確認として4つのテスト、繰り返しの動作確認として2つのテストが最低限でも必要、ということになります。プログラムが長くなればなるほど、分岐や繰り返しが増えれば増えるほど、テストで動作確認するべき項目は増えていきます。実際には、先ほどの分岐とあわせて、「実際に通りえる道全ての洗い出し」を行う必要はありますが……たとえば、分岐の4の通り道を処理しない限り、繰り返しの3の処理は行われない、とか。
けれど、単体テストは全ての通り道だけを確認すれば良い、という代物ではありません。というわけで、以降はレベル1、で(^^;
お粗末さまでした。