SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

テンプレートから学ぶ 受注する開発者のためのテスト仕様書

単体テスト計画書 (2)
― ホワイトボックステスト

開発者のためのテスト仕様書テンプレート(3)

  • X ポスト
  • このエントリーをはてなブックマークに追加

2. サンプルプログラム

 今までは定義を見てきました。ここで、サンプルプログラムを作って実際の制御構造を見てみましょう。

 このサンプルプログラムは「要件」「プログラム」「ホワイトボックステスト」からなります。その内、今回は「要件」と「プログラム」を見ます。

2.1. 要件

 このサンプルの要件およびプログラムは普通とはかけ離れています。制御構造のセグメントを見るためだけに作ったものですので、実際こうはコーディングしないというプログラムです。

 それでは、次のようなJava Applicationプログラム「test.java」を作成してください。

サンプルプログラムの要件

実行時の引数を読んで、その値に応じて以下の処理を行う
  • 引数がない場合は「nothing in earray」と出力する
  • 引数がある場合は「something in earray」と出力する
下記の制約を置く
  • 引数は「empty」という文字列を使わない
  • 引数は最大でも3つまでとする

 上記が「サンプルプログラム」の要件です。ここで出て来た「制約」は作為的ですが、ご容赦ください。

2.2. プログラム

図3: サンプルプログラム
/**
 * @author Yoshi Yamamura
 * これは制御構造の「セグメント」を見るための『変な』プログラムを
 * わざと掲載しています。実際こうはコーディングはしません。
 */

public class test {
    public static void main( String[] args ) {
        String earray[] = new String[3];
                 
        if (args.length > 0)
        {
            for (int i = 0; i < args.length; i++) {
                earray[i] = args[i];
            }; // rof
        }
        else 
        {        
            for (int i = 0; i < earray.length; i++){
                earray[i] = "empty";
            }; // rof
        }; // fi
        
 
        if (earray[0].startsWith("empty"))
        {
            System.out.println("nothing in earray" );
        }
        else
        {
            System.out.println("something in earray" );
        }; // fi
         
    } // dohtem
} // ssalc

/**
 * (c) 2008. YARNE and Company. All rights reserved.
 */

 図3は要件を実装したJavaプログラムです。このプログラムでは「引数を『earray』に読み込んでいるのに、条件判定にあえて『empty』を入れる」など、極めて非現実的な実装です。くどいようですが、これはセグメントを見るための非現実的なプログラムです。

2.3. 物理行と論理行

 図3のサンプルプログラムをそのままエクセルにコピー・ペーストして行数を数えてみましょう。物理行と論理行を見てみたいのです。図4の中央にある「ソースコード」にはペーストしたソースが入っています。

 図4の左端にある「物理文(物理行)」は改行も含めた一行一行を表しています。

 図4の右の方にある「論理文(論理行)」はセミコロン(;)の場所までを文とした時の行を表します。

 図4の場合、

  • 物理行は38行
  • 論理行は9行

 と数えます。

図4: 物理行と論理行
図4: 物理行と論理行

 パーソナルソフトウェアプロセス(PSP)では、やはり行数の数え方に注意を払っているようです。PSPにおける物理行、論理行に関しては『パーソナルソフトウェアプロセス(PSP)実践講座~第2日』で分かりやすく解説されています。

2.4. セグメント

図5: セグメント
図5: セグメント

 同じプログラムを条件で描き直してみると図5のセグメントになります。このプログラムにはセグメントは「a」から「j」までの10セグメントあります。

3. まとめ

 今回は単体テストの手法のうちホワイトボックステストを見てみました。ホワイトボックステストではプログラムの構造に基づいてテストすることになります。

 今回取り上げた構造は「順番」と「条件」でした。プログラムを「順番」で見ると「プログラムはステートメントの集まり」となります。プログラムを「条件」で見ると「プログラムはセグメントの集まり」となります。

 ステートメントもセグメントも数えることができます。

参考文献

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
テンプレートから学ぶ 受注する開発者のためのテスト仕様書連載記事一覧

もっと読む

この記事の著者

山村 吉信(ヤマムラ ヨシノブ)

同志社大学大学院・電気工学専攻修了(工学修士)。プリンストン大学大学院・計算機科学科修了(MSE)。1978年、日本アイ・ビー・エム(IBM)入社。システムズ・エンジニア(SE)として、性能評価モデルの営業支援に従事。1983年、IBMサイエンス・インスティチュート(現東京基礎研究所)にて研究員とし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4289 2009/09/10 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング