ホワイトボックステスト
テストのやり方だよ
テスト対象の中身に着目してやるよ
中身のすべてが最低1回は動くようにテスト項目を作るのが基本だよ
簡単に書くよ
ホワイトボックステスト(英:white box test)とは
テストのやり方の分類のひとつ
であり
プログラムの中身がどうなっているかに着目して、プログラム内のそれぞれの処理がきちんと動くかを確認するテストのこと
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として「ブラックボックス」と「ホワイトボックス」について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
ブラックボックスは「中身?知らんよ」な状態です。
例えば、そうですね。
ここに大きな箱が ありました。
箱にケーキを入れると、お金が出てきます。
箱の中身が一体どうなっているのか、ピヨ太君は知りません。
でも、ケーキを入れるとお金が出てくることは分かっています。
ピヨ太君としては、それで十分です。
ピヨ太君は、おこづかいが欲しくなったらケーキを箱に入れます。
出てきたお金を使って豪遊します。
ピヨ太君は箱の中身を知りません。
でも箱を活用しています。
このような
「中身(内部の構造とか)が分かってないよ~」な状態
がブラックボックスです。
ホワイトボックスはブラックボックスの逆です。
中身が分かっている状態です。
先ほどのブラックボックスの説明で箱が出てきました。
ケーキを入れると、お金が出てくる箱です。
ある日、ピヨ太君は誘惑に負けてしまいました。
箱の中身を覗いてしまったのです。
なんと!
箱の中にはピヨ子さんが入っていました。
ピヨ子さんが箱に入ってきたケーキをパクパク食べて、そのお礼として、お金を放り投げていたのです。
これで謎の箱の中身が分かりました。
もう謎では ありません。
このような
「中身(内部の構造とか)がバッチリ分かってるぜ!」な状態
がホワイトボックスです。
以上を踏まえて
中身をテストするテスト
が「ホワイトボックステスト」です。
ホワイトボックステストでは、対象となるプログラムの内部構造に着目して、それぞれの処理がきちんと動くかを確認します。
例えば、そうですね。
ピヨ太君がピヨピヨ苺大福製造機を作りました。
ピヨピヨ苺大福製造機は、苺と大福を入れると苺大福に加工するのがお仕事の機械です。
このピヨピヨ苺大福製造機がきちんと動くかテストします。
ピヨピヨ苺大福製造機は、苺と大福を入れると苺大福になって出てくる機械です。
……と、口で言うのは簡単ですが、中身は複雑です。
大福を真ん中から真っ二つに割り、そこにヘタを取った苺を突っ込み、また元のようにくっつけるのです。
あれ?中身もそんなに複雑じゃないな。
まぁ、いいや。
とにかく、ピヨピヨ苺大福製造機は、大福を真ん中から真っ二つに割り、そこにヘタを取った苺を突っ込み、また元のようにくっつけることで苺大福を作る機械です。
ホワイトボックステストでは、ピヨピヨ苺大福製造機が「大福を真ん中から真っ二つに割り、そこにヘタを取った苺を突っ込み、また元のようにくっつけることで苺大福を作る機械である」と知っている前提で、それぞれの工程がきちんと行われるかを確認します。
確認項目としては、例えば以下のような内容が考えられるでしょう。
1.大福を真ん中から真っ二つに割れるか
2.大福を真ん中から真っ二つに割れない場合どうなるか
3.苺のヘタを取れるか
4.苺のヘタが取れない場合どうなるか(最初からヘタが付いていない、など)
5.苺を大福の中に入れられるか
6.苺を大福の中に入れられなかった場合どうなるか
7.一度割った大福を元のようにくっつけられるか
8.一度割った大福を元のようにくっつけられない場合どうなるか
これらの確認項目は、ピヨピヨ苺大福製造機の中身がどうなっているかを知っているからこそ用意できる項目ですよね。
ピヨピヨ苺大福製造機の中身を知らなければ「大福を真ん中から真っ二つに割れるか」なんて確認項目は出てこないはずです。
ピヨピヨ苺大福製造機が大福を真ん中から割っているか分からないですからね。
もしかしたら、上の部分をくりぬいて苺を詰めているのかもしれません。
このように、テスト対象の内部構造を把握し、それぞれの処理に対して確認項目を設定するのがホワイトボックステストです。
なお、ホワイトボックステストにおける確認項目の設定は「すべての処理を最低1回は通ること」が基本です。
プログラムというのは処理が一本道とは限りません。
「こんな条件だったらこっちの処理をやる。そうじゃなかったらあっちの処理をやる」のように枝分かれしているのが普通です。
この枝分かれした左の処理と右の処理は両方確認する必要があります。
そのため「こんな条件を設定したら左の処理を通るか」「こんな条件を設定したら右の処理を通るか」のような確認項目を用意し、テストが全部終わった時点で1回も動いていない処理がないように確認項目を設定するのです。
本当は処理の全パターンを網羅するのが理想ですけどね。
プログラムの内容によっては膨大な数になってしまうので「取りあえず、1回は動くようにしようね」と妥協されています。
一言でまとめるよ
まぁ「ホワイトボックステスト」って単語が出てきたら「プログラムの中身に着目して、それぞれの処理がきちんと動くか確認するテストなんだな~」と お考えください。
おまけ
■訳してみるよ
「white(ホワイト)」の意味は「白」とか「白い」とかです。
「box(ボックス)」の意味は「箱」とか「(拳で)殴る」とかです。
「test(テスト)」はカタカナで「テスト」で分かりますよね。
何となく くっつけると
白い箱テスト
となります。
■検索してみる?






