中身を見ずに検査!ブラックボックステスト

デジタル化を知りたい
先生、ブラックボックステストって、どんなテストなんですか?

デジタル化研究家
中身は見ずに、外から見た結果だけを確かめるテストだよ。例えば、ゲーム機でボタンを押したら、画面にちゃんと反応が返ってくるかを確認するようなものだね。

デジタル化を知りたい
じゃあ、ゲーム機の中身がどうなっているかは気にしないってことですか?

デジタル化研究家
その通り!中身の仕組みは分からなくても、ちゃんと動いて結果が正しければ良い、という考え方だね。テレビのリモコンで電源ボタンを押したらテレビがつくか、というテストもブラックボックステストだね。
ブラックボックステストとは。
中身がどうなっているかは分からなくても、外から見て、きちんと動いているか確かめるテスト方法の一つについて説明します。このテストは『ブラックボックステスト』と呼ばれ、システムの内部構造を気にせず、入力に対して、想定通りの出力が得られるかどうかだけに注目します。
はじめに

近年の急速な科学技術の進歩に伴い、新しく作られた製品やサービスの品質を保つことは、これまで以上に大切になっています。特に、計算機を用いた仕組み作りにおいては、書いた命令の集まりが狙い通りに動くかを確認する作業は欠かせません。様々な確認方法がある中で、今回は「中身の見えない箱方式の確認」と呼ばれる方法を詳しく説明します。
中身の見えない箱方式の確認とは、仕組みの内部の作りを気にせず、与えた情報に対する出力結果だけを見る方法です。ちょうど中身の見えない黒い箱を扱うように、外から操作を行い、その反応を調べることから、この名前が付けられました。この方法は、仕組みを使う人と同じ視点で確認を行うため、実際に使われる状況で問題がないかを確認するのに役立ちます。
例えば、計算機を使うための道具を作る場合を考えてみましょう。画面に表示される計算結果が正しいか、ボタンを押した時の反応が適切かなどを確認します。この時、道具の内部でどのような命令が実行されているかは気にせず、ユーザーが実際に操作した結果どうなるかに注目します。
中身の見えない箱方式の確認には、様々な種類があります。例えば、「同値分割」と呼ばれる方法は、入力値をいくつかのグループに分け、それぞれのグループから代表値を選び出して確認を行います。これにより、全ての値を確認しなくても、効率的に品質を確認することができます。また、「境界値分析」と呼ばれる方法は、値の範囲の境界付近に注目して確認を行います。これは、境界付近で誤りが発生しやすいという経験に基づいた方法です。
中身の見えない箱方式の確認は、仕組みに詳しくない人でも理解しやすく、ユーザー視点での確認を行うことができるという利点があります。一方で、内部の作りを考慮しないため、全ての状況を網羅的に確認することは難しく、潜在的な問題を見逃す可能性もあります。そのため、他の確認方法と組み合わせて、より確実な品質保証を行うことが重要です。
| 確認方法 | 概要 | 例 | 利点 | 欠点 |
|---|---|---|---|---|
| 中身の見えない箱方式の確認 | 仕組みの内部の作りを気にせず、与えた情報に対する出力結果だけを見る方法。外から操作を行い、その反応を調べる。 | 計算機を使うための道具を作る場合、画面に表示される計算結果が正しいか、ボタンを押した時の反応が適切かなどを確認する。 | 仕組みに詳しくない人でも理解しやすく、ユーザー視点での確認を行うことができる。 | 内部の作りを考慮しないため、全ての状況を網羅的に確認することは難しく、潜在的な問題を見逃す可能性もある。 |
| 同値分割 | 入力値をいくつかのグループに分け、それぞれのグループから代表値を選び出して確認を行う。 | 効率的に品質を確認できる。 | ||
| 境界値分析 | 値の範囲の境界付近に注目して確認を行う。 | 境界付近で誤りが発生しやすいという経験に基づいた方法。 |
具体的な方法

中身が見えない箱を検査するような、中身の仕組みを分からなくても検査できる手法を説明します。この手法は、様々な検査事例を使って行います。検査事例とは、入力情報と、その入力に対する正しい出力結果を組み合わせたものです。例として、会員登録の機能を検査する場合を考えてみましょう。正しい利用者名と暗証番号を入力した時に、登録成功の知らせが表示されるか、間違った入力情報を入れた時に、誤りがあることを示す知らせが表示されるかなどを調べます。
これらの検査事例を漏れなく作ることで、仕組みの機能が設計通りに動くかを確認できます。会員登録機能以外にも、例えば商品の購入機能を検査する場合を考えてみます。この場合は、商品を買い物かごに入れ、支払い情報を入力し、購入ボタンを押すという流れを一つ一つ確認します。それぞれの段階で、正しい画面が表示されるか、エラーメッセージが表示されないかなどを検証します。また、商品の在庫がない場合や、支払い情報に誤りがある場合など、様々な状況を想定した検査事例を作成することが重要です。
多くの場合、設計書や要求定義書に基づいて検査事例が作られます。そのため、これらの文書が正しく、かつ細かく書かれていることが、良い検査を行う上でとても大切です。設計書や要求定義書に曖昧な点や不足している点があると、検査事例も不完全なものになり、結果としてシステムの不具合を見逃してしまう可能性があります。また、検査事例を作成する際には、開発者とは別の担当者が行うことが望ましいです。開発者自身が行うと、自身の作ったプログラムの誤りに気づきにくいという欠点があるためです。第三者による客観的な視点を取り入れることで、より精度の高い検査が可能になります。
| 検査対象 | 検査内容 | 期待される結果 |
|---|---|---|
| 会員登録 | 正しい利用者名と暗証番号を入力 | 登録成功の知らせが表示 |
| 会員登録 | 間違った入力情報を入力 | 誤りがあることを示す知らせが表示 |
| 商品購入 | 商品を買い物かごに入れる | 商品が買い物かごに追加される |
| 商品購入 | 支払い情報を入力 | 入力情報が受け付けられる |
| 商品購入 | 購入ボタンを押す | 購入完了画面が表示 |
| 商品購入 | 商品の在庫がない場合 | 在庫切れのメッセージが表示 |
| 商品購入 | 支払い情報に誤りがある場合 | エラーメッセージが表示 |
長所と短所

道具箱のように中身が見えない検査、つまり中身の仕組みが分からなくても外から操作して検査する方法には、良い点と悪い点があります。
良い点としては、まず仕組みを知らなくても検査できるため、作った人と別の第三者や、専門知識がない人でも検査を頼めます。利用する人の立場から検査できるので、実際に使われる状況で見つかりやすい欠陥を見つけやすいという利点もあります。
一方で、中身の仕組みを考えないため、隠れた問題を見落とす可能性があります。考えられる操作を全て試し尽くすことは難しいので、どの操作を検査するのか、選ぶことが重要になります。加えて、欠陥の原因を見つけるのが難しい場合もあるため、作った人が修正作業に時間がかかるかもしれません。
たとえば、計算機を例に考えてみましょう。計算機の中身がどう動いているか分からなくても、色々な数字を入力して計算し、結果が正しいか確かめることができます。これが道具箱のように中身が見えない検査です。
この方法では、計算機の内部の仕組みは分からなくても、実際に計算機を使う人がどのように使うかを想定した検査ができます。しかし、内部の計算方法に問題があっても、結果が正しければ見逃してしまう可能性があります。また、全ての計算式を試すことはできないため、どのような計算式で検査するかが重要になります。もし欠陥が見つかっても、その原因が計算機の内部のどこにあるのか特定するのが難しいため、修理に時間がかかるかもしれません。
このように、道具箱のように中身が見えない検査は、手軽にできる反面、注意深く計画を立て、検査項目を選ぶ必要があります。そして、欠陥が見つかった場合の原因究明と修正に時間がかかる可能性があることを考慮しておく必要があります。
| メリット | デメリット |
|---|---|
|
|
他の手法との比較

検証作業には様々な方法があり、その中でも対象の仕組みの中身を見ずに、入力と出力の関係だけに着目して行う手法を『中身を見ない検証』と呼びます。この手法は、利用者の視点に近い形で検証できるという利点があります。しかし、複雑な仕組みの全ての部分を検証するには不十分な場合があります。
一方、『中身を見る検証』という手法もあります。これは、仕組みの内部構造を理解した上で、細部まで検証を行う方法です。プログラムの命令一つ一つを追いながら、あらゆる状況を想定して不具合がないかを確認します。この手法は、不具合の原因を特定しやすいという利点がありますが、検証に時間と手間がかかるという欠点もあります。
これらの二つの手法は、それぞれ異なる側面から品質を検証するものなので、両方を組み合わせることで、より効果的な検証が可能となります。例えば、『中身を見ない検証』である程度動作を確認した後、『中身を見る検証』で詳細な部分まで確認するという方法が考えられます。
他にも、過去の利用状況から問題が起こりやすい箇所を重点的に検証する『経験に基づく検証』や、様々な条件で自動的に検証を行う『機械による検証』といった手法もあります。検証の目的や対象の特性に合わせて、これらの手法を適切に組み合わせ、効率的かつ効果的に品質を高めることが重要です。
| 検証手法 | 概要 | 利点 | 欠点 |
|---|---|---|---|
| 中身を見ない検証 | 入力と出力の関係に着目 | 利用者の視点に近い検証が可能 | 複雑な仕組みの全てを検証するには不十分 |
| 中身を見る検証 | 内部構造を理解した上で細部まで検証 | 不具合の原因を特定しやすい | 時間と手間がかかる |
| 経験に基づく検証 | 過去の利用状況から問題が起こりやすい箇所を重点的に検証 | 効率的な検証が可能 | 過去のデータに依存するため、新たな問題の発見が難しい場合も |
| 機械による検証 | 様々な条件で自動的に検証 | 網羅的な検証が可能、効率的 | 設定や準備に時間と手間がかかる場合も |
まとめ

利用者の立場で確かめる検査手法、いわゆるブラックボックステストは、仕組みの中身を知らなくても検査できる、手軽な方法です。
ちょうど、中身の見えない黒い箱に、何かを入れて、何が出てくるかを確認するようなものです。
どのような仕組みで動いているかは分からなくても、利用者の視点に立って、製品が正しく動くかを確かめることができるので、製品の質を保つ上で大切な検査方法です。
例えば、計算機を検査する場合を考えてみましょう。
計算機の中身がどうなっているか分からなくても、色々な数字を入力し、計算結果が正しいかを確かめることで、計算機が正しく動いているかを検査することができます。
ブラックボックステストは、手軽にできるという長所がある一方で、全ての状況を検査するには限界があります。
例えば、先ほどの計算機の例で言えば、全ての数字の組み合わせを検査することは現実的に不可能です。
また、思わぬ操作で不具合が起きる可能性もあります。
このようなブラックボックステストだけでは見つけにくい不具合を防ぐためには、他の検査方法と組み合わせることが大切です。
例えば、仕組みの中身を確認するホワイトボックステストと組み合わせることで、より多くの不具合を見つけ出すことができます。
製品を作る上で、利用者にとって使いやすく、不具合の少ない製品を提供することは何よりも大切です。
そのためには、様々な検査手法を理解し、製品や状況に合わせて適切な検査方法を選ぶ必要があります。
ブラックボックステストは、数ある検査手法の中でも特に重要な役割を担っており、他の検査手法と組み合わせることで、より質の高い製品開発を実現できるでしょう。
利用者の立場を意識した検査は、製品の完成度を高める上で欠かせないと言えるでしょう。
| テスト手法 | 概要 | 長所 | 短所 | その他 |
|---|---|---|---|---|
| ブラックボックステスト | 仕組みの中身を知らなくても検査できる。利用者の視点に立って、製品が正しく動くかを確かめる。 | 手軽にできる。 | 全ての状況を検査するには限界がある。思わぬ操作で不具合が起きる可能性もある。 | 他の検査方法(ホワイトボックステスト等)と組み合わせることで、より多くの不具合を見つけ出すことができる。 |
