TEF/テスト技法

技法名 制御パステスト

技法名(英語) path testing

説明

構造ベースのホワイトボックステスト技法の1つです。

この技法は、ソースコードの制御構造に対して、その網羅性を高めるテスト方法です。

網羅性の基準には様々なものがあります。代表的なものは下表の通りです。

カバレッジの種類説明
ステートメントカバレッジテストケースによって実行された行の割合。C0カバレッジとも呼ぶ
ブランチカバレッジテストケースによって実行された分岐の割合。C1カバレッジとも呼ぶ

使用例

以下の方法は、手作業でブランチカバレッジを100%取るように、制御パステストを実施する方法です。

JRの料金体系は、

おとな12歳以上(12歳でも小学生は「こども」です)
こども6歳〜12歳未満(6歳でも小学校入学前は「幼児」です)
幼児1歳〜6歳未満
乳児1歳未満

となっています。

幼児を判定する以下のプログラムがあったとします。

   if (age >= 1) {
    if (age < 6) {
      printf("幼児\n");
      return;
    }
   }

ブランチカバレッジを100%とするテストケース求めるには、まず、ソースコードをプリントアウトし、それぞれのif文の前に□を2つ置きます。
左側の四角は真、右側の四角は偽のチェックのために使用します。

□□ if (age >= 1) {
□□  if (age < 6) {
      printf("幼児\n");
      return;
    }
   }

そして、それぞれのif文の真偽を通るようにテストデータを作ります。
たとえば、まず、age = 1の条件でテストしたとします。すると、両方のif文が真の条件になるので、左側の四角を塗りつぶします。

■□ if (age >= 1) {
■□  if (age < 6) {
      printf("幼児\n");
      return;
    }
   }

次に、age = 6の条件を考えます。一つ目のif文が真、二つ目のif文が偽となりますから、

■□ if (age >= 1) {
■■  if (age < 6) {
      printf("幼児\n");
      return;
    }
   }

となります。あとは、一つ目のif文が偽となる条件を作ればよいことがわかるので、age = -3でテストします。

■■ if (age >= 1) {
■■  if (age < 6) {
      printf("幼児\n");
      return;
    }
   }

全部塗りつぶされたことからブランチカバレッジが100%になったことが分かります。
ブランチカバレッジが100%ということは、ステートメントカバレッジも100%ということになります。

補足

この手作業の方法を取る時に、もっと少ないテストケースで行けるんじゃないかと神経をとがらせたくなりますが、多少テストケースが増えたって気にしない気にしない。
テストケースが抜けるよりよっぽどいいですから。

参考文献

書籍: ソフトウェアテストの基礎

total 858 today 2 yesterday 0

TEF/indexに戻る

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-09-01 (月) 13:07:41 (5710d)