すいません、VB4しかやってないんです、VBAはやったけど(ぼそ) チラシの裏だって立派な書き込み空間なんだからねっ!資源の有効活用なんだからねっ!とか偉そうに言ってるけど、実は色々と書き残したいだけ

だからなに? どうしろと? くるみサイズの脳みそしかないあやしいジャンガリアンベムスターがさすらう贖罪蹂躙(ゴシックペナルティ)

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  632  : 記事  35  : コメント  11686  : トラックバック  143

ニュース


片桐 継 は
こんなやつ

かたぎり つぐ ってよむの

大阪生まれ河内育ちなんだけど
関東に住みついちゃったの
和装着付師だったりするの
エセモノカキやってたりするの
VBが得意だったりするの
SQL文が大好きだったりするの
囲碁修行中だったりするの
ボトゲ好きだったりするの
F#かわいいよF#

正体は会った人だけ知ってるの

空気読まなくてごめんなさいなの


わんくまリンク

C#, VB.NET 掲示板
C# VB.NET掲示板

わんくま同盟
わんくま同盟Blog


WindowsでGo言語
WindowsでGo言語


ネット活動


SNSは疲れました

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

イベント活動

プログラムの活動

前回の続きね

 プログラムに書き込んだ分岐や繰り返しの処理を実行できているか

 これが簡単なようで難しい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、で(^^;

お粗末さまでした。

投稿日時 : 2007年6月19日 17:28

コメント

# re: 単体テスト レベル0 その2 2007/06/21 14:48 けろ
はじめまして。おもしろそうだったので、コメントさせて頂きました。
一般的にいうホワイトボックステストですよね。

良くテストする際、「全てのパスは通せ!」って言われますが、
まさにこれはその基本中の基本ですね。

分岐の部分は、その通り!って思いましたが、繰り返しの3.は
繰り返しの2.を意識するあまり、忘れそうになります。
おかげで初心に戻れたような気がしました。
今後、テストもサボらず、初心・基本に戻って忠実にテストします(笑)

# 単体テスト レベル1 その2 2007/07/04 13:37 すいません、VB4しかやってないんです、VBAはやったけど(ぼそ)
単体テスト レベル1 その2

Post Feedback

タイトル
名前
Url:
コメント