ソフトウェアの品質を保障するためには、ソフトウェアテストの実施が欠かせません。
しかし一口にソフトウェアテストと言っても、その中にはさまざまなテスト技法が存在します。
JSTQBの「Foundation Level シラバス 日本語版 Version 2018.J03」によれば、ソフトウェアテストには以下のようなテスト技法があるとされています。
・ブラックボックステスト
・ホワイトボックステスト
・経験ベースのテスト
ソフトウェアテストにおいてはテスト技法を適切に活用することで、不具合をより効果的に検出することができるようになることから、テスト技法に対する理解を深め、実践に活かせるようになることはとても重要です。
本記事では、テスト技法のひとつである「ブラックボックステスト」を取り上げて、JSTQBのシラバスや当コラムの記事などの関連情報を参照しながらご紹介します。
テスト技法やブラックボックステストの理解の一助になれば幸いです。
テスト技法全般に関しては以下の記事で詳しく紹介していますので、テスト技法について知りたいという方はこちらもあわせてご参照ください。
ソフトウェアテスト技法とは | 主な技法の種類や特徴について解説
また、経験ベースのテスト技法のひとつである「探索的テスト」については、以下の記事で詳しくご紹介しています。宜しければ、合わせてご参照ください。
探索的テストとは|スピード×コストに優れるテストスタイル
ブラックボックステストとは
ブラックボックステストとは、要件や仕様書、ユースケースといったテストベースを分析してテストする項目を洗い出し、システムの内部構造を考慮せず、そのインプットとアウトプットのみに着目してテスト対象の振る舞いを確認するテストです。
そのため、ブラックボックステストは「振る舞い技法」または「振る舞いベースの技法」と呼ばれることもあります。
もう少しかみ砕いた表現をすれば、ブラックボックステストとはシステムの内部をブラックボックスに見立てて、入力がどのように内部で処理されて出力されるかは無視し、入力と出力の整合性のみに着目するテストと言えるでしょう。
よりイメージをつかみやすいよう、ある顧客の管理システムの顧客検索機能に対してブラックボックステストを行う場合を例に挙げてみましょう。
この顧客検索機能では、顧客IDを入力したときにその顧客IDに紐づく顧客情報(氏名や住所、電話番号など)が検索結果として表示される仕様になっているとしたとき、ある顧客IDを入力して仕様通りの値が出力されるかどうかを確認するというのがブラックボックステストです。
このとき、システム内部でどのようなロジックで処理が行われているかなどには着目せず、ブラックボックステストでは仕様通りの値が出てくるかどうかという、システムの振る舞いのみに着目するのがポイントです。
ブラックボックステストの特徴
ブラックボックステストはすべてのソフトウェアテストレベル(単体テスト・結合テスト・システムテスト・受入テスト)で使用することができ、また機能テスト、非機能テストの両方に適用することも可能という特徴があります。
特に複数のコンポーネントやシステムにまたがる機能のテストや、複数の機能が関係するユースケースのテストなどにおいては、組み合わせの複雑さから内部構造を把握してテストを行うのは困難ですが、ブラックボックステストでは内部構造に着目せずあくまでも入出力のみに着目することからテストすることができます。
一方で、ブラックボックステストは入出力時に仕様通りの振る舞いをするかを確認するため、そもそもの仕様が間違っていたり、抜け漏れや矛盾が含まれたりする場合は適切にテストを行うことができません。
仮に仕様自体に誤りがある場合、動作が「仕様通り」であったとしてもその動作は本来不具合として扱われるべきものです。しかし、ブラックボックステストにおいては結果が「仕様通り」となるため、その不具合が見逃されてしまう恐れもあります。
したがって、ブラックボックステストを実施するエンジニア自身がテスト対象への深い理解と注意力を持つことに加え、システムの内部構造を把握した開発者によるホワイトボックステスト(後述)を組み合わせてテストを行うことが、高品質なソフトウェアの実現には極めて重要です。
ブラックボックステストとホワイトボックステストとの違い
ブラックボックステストと似た名前のソフトウェアテスト技法として、ホワイトボックステストがあります。
ホワイトボックステストとは、ブラックボックステストとは反対に、テスト対象内の構造と処理に重点を置いたテストであり、詳細設計やコードなど、内部構造の正しさを確認するテストです。
ブラックボックステストはシステム内部をブラックボックスと見立てる一方、ホワイトボックステストはシステム内部にのみ着目することから、ホワイトボックステストと呼ばれます。
またホワイトボックステストはシステムの構造に着目することから、構造技法または構造ベースの技法と呼ばれることもあります。
さらに、ブラックボックステストとホワイトボックステストには以下のような違いがあります。
・ホワイトボックステストはプログラミング知識を要し、テスト対象のコードや内部構造をしっかり把握した上でテストを行う必要があることから、通常はテストエンジニアではなく開発者が実施します
・ブラックボックステストでは、内部の構造について認識する必要が無いことから、プログラミングやコードに関する知識は必ずしも必要ではなく、ソフトウェアテストの知識があれば実施可能です
※ブラックボックステストを行う場合であっても、プログラミングやソフトウェアの内部構造に関する理解があれば、深い洞察をもとにしたより効果的なテスト実施にもつながる可能性があります
主なブラックボックステスト技法
ブラックボックステストにおいて使用される、3つの主なテスト技法についてご紹介します。
同値分割法
同値分割法とは、テスト対象のシステムにおいて同等に処理されると想定したデータを「同値パーティション」または「同値クラス」と呼ばれるグループに振り分けるテスト技法です。
理解しやすいように、一例として「ユーザーが20歳未満の場合と20歳以上で異なる料金を表示する仕様のシステム」をテストする場合を考えます。
このシステムでは、20歳未満であれば1歳でも5歳でも17歳でも、年齢が0歳~19歳のときには同じ料金が表示されることから、これらは「同値クラス」と考えることができます。
20歳以上の場合においても、25歳でも60歳でも20歳以上は仕様上同じ料金が表示されることから、これらも同様に「同値クラス」となります。
もし同値分割法を用いず、取り得る値のすべてを確認しようとした場合、膨大なテスト工数が発生することになります。
一方でこのように同値分割法を用いることで、テストとしての有効性を保ちながらテストケース数を大きく削減することができ、より効率的にテストを実施することが可能となります。
同値分割法については以下の記事で詳しくご紹介していますので、ぜひ合わせてご参照ください。
適切なテストケース作成に役立つ技法を知る1:同値分割法とは?
境界値分析
境界値分析とは同値分割法を拡張したテスト技法であり、同値クラスにおける最小値と最大値(あるいは最初の値と最後の値)を境界値と定義した上で、境界値やその前後の値を用いてテストを行う技法です。
例えば、上の同値分割で挙げた例の「20歳未満の場合と20歳以上で異なる料金を表示するシステム」を用いて、さらに「有効な年齢を0歳以上130歳未満とし、3桁の正の整数のみが入力可能(マイナスは入力不可)」という場合を考えます。
このとき、20歳未満の同値クラスにおける境界値は最小値と最大値である0歳と19歳となります。また20歳以上の場合は同様に最小値と最大値の20歳と129歳がそれぞれ境界値となります。
また3桁の正の整数しか入力できないことから、130歳と999歳も同じく境界値となります。
境界値付近では特に不具合が発生しやすいということが知られていることから、境界値分析を用いて境界値上やその前後を重点的に検証することが非常に重要とされています。
境界値分析については以下の記事で詳しくご紹介していますので、ぜひ合わせてご参照ください。
適切なテストケース作成に役立つ技法を知る2: 境界値分析とは?
デシジョンテーブルテスト
デシジョンテーブル(決定表)とは、対象が取り得る条件と、その結果生じる動作を整理して記述した表のことです。
このデシジョンテーブルをテストを設計する上で使用するテスト技法のことを、デシジョンテーブルテストと呼びます。
デシジョンテーブルの例として、上で使用した「20歳未満の場合と20歳以上で異なる料金を表示するシステム」をベースに考えます。
より具体的な仕様として、「20歳未満は500円」「20歳以上では1000円」と料金が表示され、かつ「130歳以上の場合は入力エラー」となり、また「平日以外の場合は年齢に関わらず1500円」と表示されるとしましょう。
このときのデシジョンテーブルは以下のようになります。
拡大画像はこちら
なおデシジョンテーブルにおけるYとNはそれぞれ以下を意味します。
Y:条件が真であること
N:条件が偽であること
デシジョンテーブルではあらゆる条件とその動作を漏れなく洗い出すことができることから、テストにおける高い網羅性を実現し、見逃しによるテスト漏れやそれに伴う不具合の検出漏れを防止できるというメリットがあります。
デシジョンテーブルについては、以下の記事で詳しく紹介していますので、ぜひ合わせてご参照ください。
デシジョンテーブル(決定表)とは|その概要から作り方までわかりやすくご紹介
さいごに
ブラックボックステストはその特徴でもご紹介した通りすべてのソフトウェアテストレベルで使用することができ、特に複数の機能が関係するテストにおいて有効なテスト技法です。
一方でシステムの内部構造の正しさについては確認することができないため、テスト対象の構造と処理に重点を置くホワイトボックステストと組み合わせて実施することが肝要です。
SHIFT ASIAでは、ソフトウェア品質保証・第三者検証のリーディングカンパニーである株式会社SHIFT(プライム市場上場)の品質保証ナレッジをベースに、長年に渡り国内外で培ってきた品質保証の経験とハイレベルなエンジニアの技術力を背景とした、高品質かつスピーディなソフトウェアのテストや開発を強みとしています。
ブラックボックステスト・ホワイトボックステストの実績も豊富にございますので、ソフトウェアの品質に関してお困りのことがありましたら、ぜひお気軽にお問い合わせください。
お問い合わせContact
ご不明点やご相談などがありましたら、お気軽にお問い合わせください。