ナレッジ
ブラックボックステストとは?種類やホワイトボックステストとの違いを解説
この人に聞きました:株式会社ベリサーブ 広報・マーケティング部 テスティング・エバンジェリスト大西建児さん
株式会社ベリサーブ 広報・マーケティング部。テスティング・エバンジェリスト。大手電機メーカー、外資系通信機器機メーカーでソフトウェアテストや品質保証などに携わった経験を活かし、テスト自動化の推進、テストプロセスやソフトウェア品質改善に関するコンサルテーションなどを行う。その後、業界で培ったネットワークや知見をベースに広報・マーケティング部門にて活動中。また、コミュニティ活動や講演・執筆などにも精力的に取り組む。ISTQBではAdvanced Levelワーキンググループを中心にシラバス策定/執筆に携わっている(ISTQB joint Foundation Level & Agile Working Groupsメンバー)。NPO法人ソフトウェアテスト技術振興協会(ASTER)副理事長、JSTQB(テスト技術者資格認定)日本代表、技術委員会副委員長など。『ソフトウェアテスト教科書 JSTQB Foundation 第4版 シラバス2018対応 EXAMPRESS』共著、『ステップアップのためのソフトウエアテスト実践ガイド 改訂版』著、『ビューティフルテスティング ―ソフトウェアテストの美しい実践』監訳など。
目次
テストを学び始めたら耳にする言葉の一つ、ブラックボックステスト。基本的なテスト技法の分類であり、ISTQBのFoundation Levelのシラバスではテストタイプ の一つとして定義されています 。(※1)
今回はソフトウェアテストを学び始めたばかりの方に向けて、ブラックボックステストをテーマにテスティング・エバンジェリストの大西建児さんにお話を伺い、HQW!編集部でまとめました。
テストタイプやテスト技法とは何か?という基礎的な内容から、ブラックボックステストとホワイトボックステストの違い、同値分割法や境界値分析といった具体的なテスト技法の種類までを解説していきます。
ブラックボックステストとは
ブラックボックステスト(black box testing)についての記述をJSTQBのシラバス(※1)から引用すると、以下の通りです。
ブラックボックステストは仕様に基づき、テスト対象の外観を示すドキュメントからテストを導出する。
ブラックボックステストとは、システムの内部構造は考慮せず、インプット(入力)とアウトプット(出力)に着目して仕様通り動作するかを評価するテストのことです。
他のテストタイプと分けて識別できるよう、上記のような特性を持つテストタイプを、ブラックボックステストと呼んでいます。
そもそもテストタイプって?
JSTQBのシラバスでは、「テストタイプは特定の品質特性に関連するテスト活動のグループであり、それらのテスト活動のほとんどは、全てのテストレベル※で実行することができる。」と解説されています。(※1)
※テストレベルは系統的にまとめ、マネジメントしていくテスト活動のグループのこと。
テストタイプとは、簡単に言えばテストの種類のことです。 テストの目的により実施するテストの種類(タイプ)が異なるため、いくつものテストタイプが存在します。その中でも今回は、JSTQBのシラバスでも紹介されている4つのテストタイプについてご紹介していきます。
図表1のように、特性の異なる機能テスト、非機能テスト、ブラックボックステスト、ホワイトボックステストの4つに分類されています。
テストタイプの分類 | 特性(シラバス記載をサマライズ) |
---|---|
機能テスト | 機能が仕様通りに実装されていることを確認する |
非機能テスト | 機能に関係しない特性(性能、ユーザビリティなど)を評価する |
ブラックボックステスト | システムの内部構造を考慮せず、インプット(入力)とアウトプット(出力)に着目して仕様通り動作するかを評価する |
ホワイトボックステスト | コンポーネントまたはシステムの構造、アーキテクチャーが仕様通りであることを確認する |
図表1:JSTQBによるテストタイプの分類
ブラックボックステストの観点・評価対象を具体的に例えるなら
例えば、皆さんがよく使うスマートフォンのアラーム機能なら、スマートフォンの時計アプリでアラームをセットした場合、セットした時間にアラームが実際に鳴るかどうかを確認するとします。
この際、スマートフォンのアイコンをタップすることでセットし、時間になって正しく鳴っているかが評価対象となります。内部構造は対象とせず、とてもシンプルですね。そのため、ユーザー目線で行えるテストとも言えます。ソフトウェアの動作を、その仕様と照らし合わせてチェックすることが目的となるのです。
ブラックボックステストでは、インプット(アイコンをタップしてセット)への応答・アウトプット(時間になって正しく鳴るか)を確認するため、仕様通り動作すること、または動作しないことを確認できます。
ブラックボックステストとホワイトボックステストの違い
ここでブラックボックステストと、上記の図表1で名前の挙がったホワイトボックステストとの違いを見ていきましょう。
名前から推測される通り、ブラックボックステストとホワイトボックステストは特性が対となっている部分もあり、比較するとより分かりやすくなります。
名称 | ブラックボックステスト | ホワイトボックステスト |
---|---|---|
内部構造 | 内部構造を考慮しない。 | 内部構造を考慮する。 |
テストレベル | 各種テストレベルで実施する。 | 各種テストレベルで実施する。 |
評価対象 | インプットとアウトプットに着目して仕様通り動作するかを評価する。 | コンポーネント、システムの構造、アーキテクチャー(基本的な構造や設計、動作原理)などが仕様通りであることを評価する。 |
カバレッジ | テスト対象となる仕様の網羅性で測定できる。全ての仕様のうちテストで実行した仕様の割合で表す(テスト技法ごとに測定方法が定義される)。 | 構造要素の種類の網羅性すなわち構造カバレッジで測定できる。 |
メリット | ホワイトボックスでは検出できない仕様視点での欠陥が検出できる 。 | ブラックボックスでは検出できない、実装が設計通りでない等の内部構造に着目した欠陥が検出できる 。 |
図表2:ブラックボックステストとホワイトボックステストの違い
内部構造を考慮しない(つまり、テスト対象の中身が見えない)のがブラックボックステスト、反対に内部構造であるコードなどを考慮する(つまり、テスト対象の中身が見える)のがホワイトボックステストという違いがあるため、名前とひも付けると覚えやすいですね。
どちらも仕様通りであるかを評価するテストですが、それぞれ別の対象から評価することで、お互いに検出できない仕様視点での欠陥や内部の潜在欠陥などを検出することが可能になるため、どちらも有用なテストです。
カバレッジとは
JSTQB用語集(※2)では、「テストスイートで特定したカバレッジアイテムをどの程度確認したかを、パーセンテージで表した度合い」と説明されており、簡単に書くと「テストしたいことをどれくらいテストしたかの割合」のことです。
カバレッジが分かる解説はこちら:テスト技法の本質
グレーボックステストとは
上記で述べた通り、それぞれ有用なブラックボックステストとホワイトボックステストのどちらも取り入れたいときに活用されるのが、グレーボックステストです。
グレーボックステストとは、プログラムの構成が分かった上で実施するテストタイプで、ブラックボックステストとホワイトボックステストの2つの中間に当たります。名前の通りのため、こちらも覚えやすいですね。
グレーボックステストは、単純にインプットとアウトプットを見るだけではなく、例えばアーキテクチャー(基本的な構造や設計、動作原理)の妥当性を確認するために、ある程度内部処理に踏み込んで検証する必要性があるときに適用します。(図表3)
ブラックボックステスト技法とは
ブラックボックステスト技法(black box testing technique)は、JSTQBのシラバスにおいて仕様ベース、構造ベース、経験ベースの3つに分類したテスト技法のうちの仕様ベース技法として解説されています。(※1)
そもそもテスト技法って?テストケースとの関係
まだソフトウェアテストを学び始めたばかりの方のために、まずは「テスト技法とは何か」ということから、JSTQBのシラバスを引用しながら説明していきます。(※1)
テスト技法は、テスト分析(何をテストするか)とテスト設計(どのようにテストするか)において、テスト担当者をサポートする。テスト技法は、比較的少ないながらも十分なテストケースのセットを体系的に開発するのに役立つ。また、テスト技法は、テスト担当者がテスト分析やテスト設計の際に、テスト条件を定義し、カバレッジアイテムを識別し、テストデータを識別するのに役立つ。
ここでは、より分かりやすいテスト設計のプロセス(図表4)で見ていきましょう。
テスト設計は、テスト条件をテストケースやその他のテストウェア(テストチャーターなど)に落とし込む作業を含む。この活動には、多くの場合、テストケースの入力を指定するためのガイドとして機能するカバレッジアイテムの識別が含まれる。(※1)
上記の通り、「どのようにテストするか?」を決定するテスト設計においては、テスト条件をテストケースに落とし込むプロセスを含みます。
つまり、テスト技法とはテストケースを作成・選定するための技法で、テスト技法を使うことで、テストケースの抜け漏れを防いだり、効率よくテストケースを作成したりできるのです。
JSTQBで定義されるテスト設計技法の分類・カテゴリ
テスト設計に適用するテスト技法もまた、多く存在しますが、ここではJSTQBのシラバスで分類されている3つのカテゴリを紹介します。
ブラックボックステスト技法
仕様書などのドキュメントを基にテスト設計を行うもので、仕様ベース技法とも呼ばれます。具体的には、仕様の情報を基にリストやマトリクスを作成し、仕様の網羅度を確保する技法です。内部構造は考慮しない点も特徴です。
ホワイトボックステスト技法
内部構造に関する詳細情報を基にテスト設計を行うもので、構造ベース技法とも呼ばれます。内部構造の理解が必ず必要になります。
主なテスト技法としては、制御フローテスト、データフローテスト、コールフローテストなどが挙げられます。
経験ベースのテスト技法
テスト担当者の経験等からテストを設計するもので、テスト担当者の経験に大きく依存することが特徴です。
ブラックボックスやホワイトボックスのテスト技法では見逃してしまうような欠陥も検出できる可能性が高く、一通りのテストを実施した後の最終確認的な位置付けのテストと言えます。
主なテスト技法としては、エラー推測、探索的テストなどが挙げられます。
ブラックボックステスト技法の種類
冒頭でご説明した通り、ブラックボックステストに分類できるテスト技法は複数存在していますが、ここでは具体例としてJSTQBのシラバスで「一般的に使用するブラックボックステスト技法」として紹介されている4種類を紹介します。
1)同値分割法(EP:Equivalence Partitioning)
同値分割法とは、処理が同等になると想定される入力値などのグループ(同値クラスや同値パーティションと呼びます)を識別し、各グループに対するテストケースを最低一つずつ作成するテスト技法です。
入力値の他に時間や出力結果なども同値分割法の対象になります。値のグループに着目することで、テストケースの件数を削減することができます。
詳しい解説記事はこちら:「同値分割法」テスト技法解説
2)境界値分析
境界値分析とは、テスト対象の仕様の中で「○○未満」「○○以上」など値に境界が存在する場合にその境界付近を狙う、テストケースを作成するためのテスト技法です。
境界の付近では、仕様の解釈の誤りやコーディングのミスが起こりやすく、その結果として不具合が埋め込まれることが多いため、境界値分析は欠陥の検出に有効です。
詳しい解説記事はこちら:「境界値分析」テスト技法解説
3)デシジョンテーブルテスト
デシジョンテーブルテストとは、複雑な判定ロジックの整理に有用な決定表(デシジョンテーブル)の考え方に基づき、入力条件の組み合わせと対応する出力結果を整理することでテストケースを作成する技法です。
複雑な条件や制約のあるソフトウェア仕様を整理するため、全ての論理的な組み合わせを漏れなくテストする際に有効です。
詳しい解説記事はこちら:「デシジョンテーブルテスト」テスト技法解説
4)状態遷移テスト
状態遷移テストとは、状態遷移モデルに基づきテストケースを作成するためのテスト技法です。このテスト技法を使うことで、テスト対象であるソフトウェアやシステムに状態遷移によって生じる不具合がないかどうかを確認できます。
詳しい解説記事はこちら:「状態遷移テスト」テスト技法解説
「GIHOZ」でブラックボックステスト技法を使ってみよう
ここまで、ブラックボックステストをテーマに、テストを学び始めたばかりの人にとって分かりにくい用語を解説してきました。それぞれの特徴、具体的なブラックボックステスト技法の種類なども紹介することで、テスト技法の大まかな全体像を理解いただけたのではないでしょうか。
ベリサーブのテスト技法サービス「GIHOZ」では、ご紹介したブラックボックステスト技法を含む6種類のテスト技法を使ってみることができます。初めての方でも直感的な操作で簡単に利用できるので、活用してみてはいかがでしょうか。
■参考■
(※1)ISTQBテスト技術者資格制度 Foundation Level シラバス 日本語版 Version 2023V4.0.J02
(※2)ISTQB 用語集
(※3)「ステップアップのためのソフトウエアテスト実践ガイド 改訂版」大西建児
この人に聞きました:株式会社ベリサーブ 広報・マーケティング部 テスティング・エバンジェリスト大西建児さん
株式会社ベリサーブ 広報・マーケティング部。テスティング・エバンジェリスト。大手電機メーカー、外資系通信機器機メーカーでソフトウェアテストや品質保証などに携わった経験を活かし、テスト自動化の推進、テストプロセスやソフトウェア品質改善に関するコンサルテーションなどを行う。その後、業界で培ったネットワークや知見をベースに広報・マーケティング部門にて活動中。また、コミュニティ活動や講演・執筆などにも精力的に取り組む。ISTQBではAdvanced Levelワーキンググループを中心にシラバス策定/執筆に携わっている(ISTQB joint Foundation Level & Agile Working Groupsメンバー)。NPO法人ソフトウェアテスト技術振興協会(ASTER)副理事長、JSTQB(テスト技術者資格認定)日本代表、技術委員会副委員長など。『ソフトウェアテスト教科書 JSTQB Foundation 第4版 シラバス2018対応 EXAMPRESS』共著、『ステップアップのためのソフトウエアテスト実践ガイド 改訂版』著、『ビューティフルテスティング ―ソフトウェアテストの美しい実践』監訳など。
この記事は面白かったですか?
今後の改善の参考にさせていただきます!