ソフトウェアテスト#3 ホワイトボックステスト

どうも、irisawaです。今日のソフトウェアテストは「ホワイトボックステスト」について学びました。

以下、内容と感想です。

まず、開発モデルの一つである「ウォーターフォール」について学びました。
名前の由来は、用件定義からシステムテストまでの流れが滝の水が落ちる様子からウォーターフォールと名付けられました。

【ウォーターフォールの流れ】

  1. 要件定義 どんなものを作るか
  2. 外部設計 ユーザーインターフェイスの設計(どんなWEBページにするか)、DB設計
  3. 内部設計 プログラム構造の設計
    ※外部設計、内部設計を合わせて基本設計とも呼ぶ
  4. 詳細設計 具体的なプログラム設計
  5. 開発実施 コーディング
  6. 単体テスト
  7. 結合テスト
  8. システムテスト

この前習ったブラックボックステスト(ソフトウェアテスト#2 ブラックボックステスト)は、単体テスト、結合テスト、システムテストにおいて使われます。今回、習うホワイトボックステストは単体テストに使います。

ホワイトボックステストの方法として制御パステストがあり、その中に3つの方法があります。

  • C0網羅(命令網羅) それぞれの命令をテスト。分岐条件は確認されない。
  • C1網羅(分岐網羅) 分岐条件をテスト。このとき、命令も一緒に確認される。
  • C2網羅(条件網羅) 全組み合わせチェック。命令の組み合わせが確認される。

ホワイトボックステストについて習った後、昨日のPHPの実習で書いたプログラムのテストケースを実際に書き出してみました。このプログラムは、入力された1〜100までの値で九九の表を作るというものです。

【コード】


<form action='kuku2.php' method='post'>
   <p><input type='text' name='value1' value='9' />×
 <input type='text' name='value2' value='9'/></p>
   <p><input type='submit' name='button' value='生成' /></p>
   <?php
   if(isset($_POST["button"])){
     if(ctype_digit($_POST["value1"]) && ctype_digit($_POST["value2"])){
       if(($_POST["value1"] <= 100 && $_POST["value1"] > 0) &&
       ($_POST["value2"] <= 100 && $_POST["value2"] > 0)){
	     echo "<table border='1' summary='九九リストをtableタグで表示する'>";
	     echo "<caption>リスト</caption>";
	     echo "<thead><tr>";
	     echo "<th>段</th>";
	     for($i = 1; $i <= $_POST["value2"]; $i++){
	       echo "<th>".$i."の段</th>";
	     }
	     echo "</tr></thead><tbody>";

	     for($i = 1; $i <= $_POST["value1"]; $i++){
	       echo "<tr>";
	       echo "<th>".$i."</th>";
	       for($j = 1; $j <= $_POST["value2"]; $j++){
		 echo "<td>".$i*$j."</td>";
	       }
	       echo "</tr>";
	     }
       }else{
	 echo "<p>1〜100までの整数を入力してください。</p>";
       }
     }else{
       echo "<p>文字列は入力できません。</p>";
     }
   }

	 ?>
	   </tbody>
	   </table>

【テストケース】
正常系

  • 入力値1に100、入力値2に1 → 一列百行の九九表が表示される
  • 入力値1に1、入力値2に100 → 百列一行の九九表が表示される

異常系

  • 入力値1を未入力、入力値2に100 → ctype_digit()で未入力は偽となり「文字列は入力できません」
  • 入力値1に100、入力値2を未入力 → ctype_digit()で未入力は偽となり「文字列は入力できません」
  • 入力値1にア、入力値2に1→ ctype_digit()で文字は偽になり「文字列は入力できません」
  • 入力値1に101,入力値に50→ 3つ目のifでvalue1の値が100を超えているので偽となり「1〜100までの整数を入力してください。」
  • 入力値1に100,入力値に101→ 3つ目のifでvalue2の値が100を超えているので偽となり「1〜100までの整数を入力してください。」
  • 入力値1に0,入力値に100→ 3つ目のifでvalue1の値が1を下回っているので偽となり「1〜100までの整数を入力してください。」
  • 入力値1に1,入力値に0→ 3つ目のifでvalue2の値が1を下回っているので偽となり「1〜100までの整数を入力してください。」

ホワイトボックステストのテストケースは、書き出すのがブラックボックステストより難しい気がしました。書き出すのに慣れていきたいと思います。

コメントをどうぞ

名前: (Required)

eMail: (Required)

Website:

Comment:

Spam Protection by WP-SpamFree