ソフトウェアテストは、製品・サービスの品質を左右します。また、そのテスト技法には各フェーズに応じたさまざまな種類が存在します。
そこで今回は、複数プログラムを組み合わせる場合に用いられる「ブラックボックステスト」について解説します。
「ブラックボックステストの詳細を知りたい」という方はぜひご一読ください。
ブラックボックステストとは?
ブラックボックステストとは開発者以外の第三者によって、システムの内部構造を考慮することなく、外部から見た機能・動作が正常かを確認し、テストケースを作成・実行する手法です。
そのため、製品・サービスのユーザビリティや機能面などに関して利用者に近い目線で客観的にテスト結果を解析することが可能です。また、ブラックボックステストは数多あるテスト技法のひとつであり、総称であると言えます。
ブラックボックステストは主に、機能テスト・システムテストといった複数プログラムを組み合わせて行うテストにて用いられることが多い技法です。
ホワイトボックステストとの違い
動的テスト技法の古典的な分類として、ブラックボックステストの他にもうひとつ「ホワイトボックステスト」というテスト技法があります。
両者のテストにおける主な違いは、「実施方法」です。
下記に特徴・観点における違いをまとめました
種別 | 特徴 | 観点 |
---|---|---|
ブラックボックス テスト |
|
|
ホワイトボックス テスト |
|
|
上の表からも読み取れる通り、ブラックボックステストは複数プログラムを組み合わせたシステムの入出力や、ユーザー視点に着目したテストケースに適しています。
その一方で、ホワイトボックステストは、システムの内部構造を網羅するようなテストケースに適しています。
具体的には、実施するテストケースによるプログラム実行結果をテスト品質の指標とし、その網羅率(カバレッジ)を計測、分析します。
特徴
次に、ブラックボックステストとホワイトボックステスト、それぞれの特徴についてご紹介します。今回は両テストの主なメリットを特徴として、それぞれ列挙します。
ブラックボックステストの特徴
- テストレベルのほとんどで対応可能
- 費用対効果が高い
- 対応可能なテストレベルが幅広い
- ユーザー要求を満たしているか確認できる
- 操作面の良い点・悪い点を洗い出せる
ブラックボックステストでは、プログラムの内部構造を考慮せずに外部からの第三者視点で、ユーザー要求を満たしているかを確認します。
また、テストすべき項目は仕様書などから洗い出します。
そのため、多くのテストレベルに用いることが可能であり、費用対効果が高いと言えます。
ホワイトボックステストの特徴
- 単純なミスを検証
- 耐久性やバグなど、網羅的に検証できる
- 内部処理上の不具合・バグが発見できる
- テスト項目がまとめやすい
ホワイトボックステストとは、プログラムの内部構造を理解・意識した上で、それらが正しい構造で意図した通りに動作しているかを確認するテストです。
そのため、ホワイトボックステストは網羅的なテスト技法であり、単純な不具合・ミスを検証することに適した内容であると言えます。
観点
ブラックボックステストの観点
- 外部から仕様(入出力・UI)に着目したテスト
- システムがユーザー要求を満たしているかを確認
ブラックボックステストの観点は、「外部から見た仕様・機能」が要となります。
そのため、前述の通りブラックボックステストは、システムテストや機能テストといった複数プログラムを組み合わせたシステムの入出力や、ユーザー視点に着目したテストケースに適しています。
ホワイトボックステストの観点
- システムの内部構造に着目したテスト
- プログラム実行結果の網羅率を計測、分析
一方でホワイトボックステストの観点ではシステムの機能ではなく「内部構造における整合性」が要となります。
具体的には、ソースコードの文・分岐・条件などを網羅的にテストします。そのため、ホワイトボックステストの実行にはプログラミングに関する知識が必要不可欠となります。
ブラックボックステストの主要技法
「ブラックボックステストの主要な技法」についてご紹介します。
ブラックボックステストの主要技法・概要は以下の通りです。
種別 | 概要 |
---|---|
同値分割法 | 出力が同様になる入力値を各グループ(同値クラス)にまとめ、 そのグループから代表値をひとつ選択し検証する方式 |
境界値分析 | 出力が同様になる入力値を各グループにまとめ、グループが隣接する境界や その前後の値を入力値として検証する分析方法 |
デシジョンテーブル テスト |
条件(入力)に対して、プログラムがどのように動作(出力)するかを 表形式にまとめたデシジョンテーブルを活用し、複雑な仕様を 確認するテスト |
状態遷移テスト | 設計仕様どおりにイベントによって、システム・ソフトウェアの状態が 正常に変化するかをチェックするテスト |
同値分割法・境界値分析
同値分割法とは、テストケース作成方法のひとつです。主に、比較的少ないテスト回数で、広範囲での効率的なテストを可能にします。
具体的には、出力が同様になる入力値を各グループ(同値クラス)にまとめ、そのグループから代表値を1つ選択し、テストを実行します。
さらに、境界値分析もまたソフトウェアテストにおいてテストケース作成方法に含まれます。
具体的には、出力が同様になる入力値を各グループにまとめ、グループが隣接する境界やその前後の値を入力値として検証作業を行います。
ここでの境界値とは、「ある範囲の最小値もしくは最大値などの同値分割した領域の端となる値」を指します。
境界値テストでは、出力結果が変化する境界付近を重点的に検証することで、それらに潜む不具合・ミス(ヒューマンエラーなど)を効率的に検出し、プロジェクトに応じたテストケースを作成します。
また、境界値テストは同値分割法を行った後に、併用で実行されることも多々あります。
デシジョンテーブルテスト
一般的なデシジョンテーブルの構成
デシジョンテーブルとは、論理関係をJIS規格の表形式で整理したものを指します。
具体的にはシステム・ソフトウェアの動作に関する「真・偽の組み合わせ・条件」を複数表にまとめて、それぞれの場合に対応する結果(どのような動作をするのか)を示したものです。
デシジョンテーブルの例
デシジョンテーブルテストとは、上記の表を活用した検証方法です。
主に、以下5つの規則をテストケースとして活用します。
デシジョンテーブルテストの規則・記載内容 (テストケース)
条件記述部
テスト対象の入力条件や、実際の入力データを記載。
動作記述部
各条件に合わせて、実際の動作や処理の内容を記載。
条件指定部
条件の判定結果の組み合わせを記載。
動作指定部
条件の組み合わせに対する動作結果を記載。
規則
条件の組み合わせと、それに対する動作結果の組み合わせを記載。
状態遷移テスト
状態遷移テストとは、設計仕様どおりにイベント(状態遷移の条件)によって、システムの状態が正常に変化するかをチェックする方法です。
状態遷移図・状態遷移表といったリソースを主に用いて行います。
状態遷移図
一般的に、システム・ソフトウェアの複数の状態が、具体的にどのように遷移するのかを図解したものを指します。
状態遷移表
システムの状態と遷移について、表にまとめたものです。主に、テストケースの網羅的な抽出に役立ちます。
ブラックボックステストを行う際の注意点
つづいて、「ブラックボックステストを行う際の注意点」についてご紹介します。
主な注意点は、以下の2つに大別されます。
ブラックボックステストを行う際の注意点
- 不得意なバグ・不具合がある
- ホワイトボックステストと組み合わせて実施する
では、ブラックボックステストでは、何故これらのポイントについて注意すべきなのでしょうか?
ここからは、それぞれの注意点に関する概要・理由について解説します。
不得意なバグ・不具合がある
ソフトウェアテストにおいては品質保証の観点から、ブラックボックステストだけでは、発見が難しい不具合もあります。
そのため、ブラックボックステストを行う際には、
以下3つのタイプの不具合・バグには注意しましょう。
ブラックボックステストを行う際に注意すべき不具合
- 仕様が間違っている・矛盾している
- 変更された仕様条件が記載されていない
- 入力値の違いによる不具合
これらの不具合・バグは何故ブラックボックステストだけでは
見つけられないのでしょうか?
その理由は、ブラックボックステストのテスト観点にあります。
前述の通り、ブラックボックステストでは機能・仕様などの内部構造よりもユーザー要求や使いやすさといった部分を中心に第三者検証を行うからです。
以上のことから、これらを解決するにはどのような改善策が有効なのでしょうか?
次の注意点とともにご紹介します。
ホワイトボックステストと組み合わせて実施する
ブラックボックステストを行う際には「ホワイトボックステストと組み合わせた実施」を推奨します。
両テストを組み合わせて実施することで、各テスト観点を用いてメリット・デメリットを補いながら、効率性・網羅性の担保されたテスト実現に繋がります。
まとめ
いかがでしたでしょうか? 今回は、システム・ソフトウェア開発におけるテスト技法の「ブラックボックステスト」に注目しました。
ブラックボックステストは開発者以外の第三者検証による、ユーザビリティを意識したテスト技法です。外部から見た機能や振る舞いが正しいか否かを確認することで、ユーザー要求を満たした、愛される製品・サービスの提供を可能にします。
今回の内容をおさえ、ブラックボックステストを採用した正しい手順・方法にて「効率的且つ網羅的なテスト設計~実行」に繋げていきましょう。
本記事をふまえ、導入するテスト技法の見直しや、ソフトウェア品質向上に役立ていただければ幸いです。最後までお読みいただき、ありがとうございました。