ブラックボックステストとは、入力した結果(アウトプット)に注目する試験です。
テストデータを入力。その結果、「どんな出力結果になるか?」に注目します。
入力データ(インプット)と、出力結果(アウトプット)だけが観点。興味があるのは結果のみです。
マークシート試験で、てきとうに塗りつぶして正解しても得点できるように「途中式なんて関係ねぇ!答えだけあってればいいんだよ!」的なのが、ブラックボックステスト。
対(つい)になるのが、途中の処理内容とか細かい分岐をしっかりと検証する、ホワイトボックステストです。
ブラックボックステストとは、入力した結果に注目する試験
ブラックボックステストとは、入力した結果に注目する試験です。
例えば、「(1+3)×(2+3)×(1+4)」の計算結果の”100″を計算してくれるマシーンがあったとして。
入力データは(1+3)×(2+3)×(1+4)、出力データは100です。
途中式をていねいにかくと、(1+3)×(2+3)×(1+4)=4×5×5=100みたいになるけど。
「途中式なんてしらん!(1+3)×(2+3)×(1+4)を入力したら、計算結果の100が返ってくればいい!」として、結果を判断するのがブラックボックステストです。
ちなみに、「途中式をつくるところがおかしいけど、たまたま計算結果が一致した」という可能性もありますが、それはホワイトボックステストでしっかりとテストします。
※実際には入力データが100項目とかあって複雑。わかってくれてるとは思うけど、説明しやすいように、ごくシンプルな例にしました 笑
ブラックボックステストで作るべきテストデータ
ブラックボックステストで作るべきテストデータは、下記の通り。
作るべきテストデータ
- テストデータが、プログラムの機能仕様に沿って、意図した結果ですべて処理されること
- 実際にありえる数字や桁数で作ったテストデータが正常に処理されること
- ありえない数字や桁数で作られたテストデータが「エラー」として処理されること
- 意味のあるパターンを複数作り、そのパターンを網羅するテストをする(同値分割)
- 最大値/最小値/限界値(境界値ともいう。分岐の境となる値のこと)
同値分割の「意味のあるパターン」とは?
同値分割の「意味のあるパターン」がわかりづらいと思うので補足。
「ぴよぴよ遊園地」という遊園地があったとして、「ぴよぴよ遊園地」の入場料金は下記の通りだとします。
- 3歳以下:無料
- 4歳以上12歳未満:500円
- 13歳以上18歳未満:1,000円
- 18歳以上:2,000円
上記の場合は、料金のグループ4つをテストするので、4パターンのテストを作成。
具体的には、「3歳」・「4歳」・「13歳」・「18歳」の4パターンをテストして、「正しい料金が判定されるか?」を同値分割の観点でテストします。
結合テスト以降は、ブラックボックステストの比重が高くなる
結合テスト以降は、ブラックボックステストの比重が高くなります。
テストデータを流して意図した処理がされるかを確認
というのも、単体テストで、1つのプログラムをピンポイントでテスト。「詳細設計書」(内部設計書、モジュール設計書)にもとづいて、動くかを確認しているので。
結合テスト・総合テストでは、「プログラムの中身や構造が正しいか?」は、見るべき観点ではなく。
「複数のプログラムを合体して動かしてみて、それぞれの機能で意図した処理がされるか?」が確認のメインです。
それぞれのプログラムがケンカしているところを見つける
たとえば、「ぴよぴよ遊園地」という遊園地の入場料金。
- 3歳以下:無料
- 4歳以上12歳未満:500円
- 13歳以上18歳未満:1,000円
- 18歳以上:2,000円
仮に想定していない「-1歳」というデータが飛んできて、結合テストでシステムダウンしたとします。
すると、「料金判定のプログラムが-1歳でも対処できないとダメ」となるかもしれないし。
「いやいや、そもそも-1歳を入力できるのがダメだよ」となるかもしれません(この場合だったら、両方直せってなるかもしれないけどね)。
こんな感じで、それぞれのプログラムが、ケンカしているところを見つけるのが目的。
結合テスト以降では、プログラム単体では設計通りの動きをすること前提でテストされるので、全体を通して、入力データに対する処理結果を確認するブラックボックステストがメインです。
まとめ
ブラックボックステストときたら、入力した結果(アウトプット)に注目する試験のこと。
テストデータを入力。その結果、「どんな出力結果になるか?」に注目します。
意味のある入力値をつくって、正しくプログラムが動くこと。結合テストでは、「複数のプログラムの仕様(想定する動き)がケンカしてないか?」を発見するのに使われると思ってくださいまし(-_-;)。
コメント