2. サンプルプログラム
今までは定義を見てきました。ここで、サンプルプログラムを作って実際の制御構造を見てみましょう。
このサンプルプログラムは「要件」「プログラム」「ホワイトボックステスト」からなります。その内、今回は「要件」と「プログラム」を見ます。
2.1. 要件
このサンプルの要件およびプログラムは普通とはかけ離れています。制御構造のセグメントを見るためだけに作ったものですので、実際こうはコーディングしないというプログラムです。
それでは、次のようなJava Applicationプログラム「test.java」を作成してください。
サンプルプログラムの要件
実行時の引数を読んで、その値に応じて以下の処理を行う
- 引数がない場合は「nothing in earray」と出力する
- 引数がある場合は「something in earray」と出力する
下記の制約を置く
- 引数は「empty」という文字列を使わない
- 引数は最大でも3つまでとする
上記が「サンプルプログラム」の要件です。ここで出て来た「制約」は作為的ですが、ご容赦ください。
2.2. プログラム
/** * @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行
と数えます。
パーソナルソフトウェアプロセス(PSP)では、やはり行数の数え方に注意を払っているようです。PSPにおける物理行、論理行に関しては『パーソナルソフトウェアプロセス(PSP)実践講座~第2日』で分かりやすく解説されています。
2.4. セグメント
同じプログラムを条件で描き直してみると図5のセグメントになります。このプログラムにはセグメントは「a」から「j」までの10セグメントあります。
3. まとめ
今回は単体テストの手法のうちホワイトボックステストを見てみました。ホワイトボックステストではプログラムの構造に基づいてテストすることになります。
今回取り上げた構造は「順番」と「条件」でした。プログラムを「順番」で見ると「プログラムはステートメントの集まり」となります。プログラムを「条件」で見ると「プログラムはセグメントの集まり」となります。
ステートメントもセグメントも数えることができます。
参考文献
- 『SEのためのソフトウェア・テストの基本』 山村吉信 著、翔泳社、2003年12月
- CodeZine 『テンプレートから学ぶ 受注する開発者のためのテスト仕様書 (1)』 山村吉信 著、2009年7月
- CodeZine 『テンプレートから学ぶ 受注する開発者のためのテスト仕様書 (2)』 山村吉信 著、2009年8月
- 『The Authoritative Dictionary of IEEE Standards Terms』 IEEE Standards Information Network/IEEE Press、2000年12月、IEEE
- CodeZine 『パーソナルソフトウェアプロ セス(PSP)実践講座 ~第2日 プログラムの規模を正確に測る』 南川 しのぶ 著、2009年8月