1. ホワイトボックステスト、その2
今回のテーマは前回に引き続き、ホワイトボックステストです。今回のメインテーマは網羅率です。網羅率はホワイトボックステストをどの程度実施したかを見る指標です。
網羅率に進む前に前回の途中から引き続いてお話をします。前回は「2.2.2. 条件」が終わっていました。今回は「2.2.3. 反復」からです。
1.1. 反復
反復は「繰り返し」や「ループ」とも言います。前回のサンプルプログラムで反復がどこにあるかを見てみましょう。図1に反復を示しました。図から分かる通り、このサンプルプログラムには2つの反復があります。
2つの「反復」の中身は図2と図3に示した「for文」です。
for (int i = 0; i < args.length; i++) { earray[i] = args[i]; }; // rof
for (int i = 0; i < earray.length; i++){ earray[i] = "empty"; }; // rof
1.2. 反復の「内(インテリア)」と「外(エクステリア)」
図1の左側(図2のコード部分)の反復を取り出して詳しく見てみましょう。図4のように「内」と「外」があることが分かります。この「内」のことを「インテリア」、「外」ことを「エクステリア」とも言います。
2. 網羅率
ステートメントとセグメントは前回解説しました。また、ループは先述のとおり反復のことでしたね。
1つのプログラムは「ステートメント」の集まりとも、「セグメント」の集まりとも、「ループ」の集まりとも言えます(余談ですが、これは実はダイクストラ先生の構造化プログラミングに出てくる3つの制御構成要素に対応しています。興味のある方はいつか構造化プログラミングを紐解いてみてください)。
つまり、網羅率はプログラムの制御構成要素3つに対応した観点でテストしたことを表しているのです。
2.1. C0網羅率
C0網羅率は、「プログラムをステートメントの集まりと見た時、テストによってどの程度網羅されているのか」を見る尺度です。
2.2. C1網羅率
C1網羅率は、「プログラムをセグメントの集まりと見た時、テストによってどの程度網羅されているのか」を見る尺度です。
2.3. C2網羅率
C2網羅率は、「プログラムをループの集まりと見た時、テストによってどの程度網羅されているのか」を見る尺度です。
サンプルを用いた網羅率の計算例は、この連載の後で出てくる「ブラックボックステスト」までお待ちください。