GAIO CLUB

2023年07月14日

【第6回】ガイオ用語集「ブラックボックステスト」

ガイオ用語集
ブラックボックステスト

ブラックボックステストとは

ブラックボックステストとは、テスト対象となるシステムやアプリケーションなどを、内部のプログラムの構造や動作原理を考慮せずにテストして品質を評価する方法です。テスト対象を見えない箱として扱い、入力と出力の整合性を確認します。

ブラックボックステストの種類

ブラックボックステストにはいくつかの手法があります。主なものを以下に紹介します。

同値分割法

入力値や出力値を同じ結果になると予想されるグループ(同値パーティション)に分けて、各グループから代表的な値を選んでテストする技法です。システムに受け入れられる値を「有効同値パーティション」とし、システムに拒否される値を「無効同値パーティション」として振り分けていきます。

年齢を入力する場合を例に考えてみます。この場合、入力される年齢データを次の3つの同値パーティションに分けます。

・1歳未満のパーティション:0歳未満の年齢。例えば、入力値「0」。
・1歳以上120歳以下のパーティション:正常な年齢範囲。例えば、入力値「60」。
・120歳超のパーティション:非現実的な高齢の年齢。例えば、入力値「121」。

各パーティションから代表的な値を選んでテストケースを作成します。
この例では次のようなテストケースとなります。

・1歳未満:代表値「0」を使います。このケースでは、システムがこの入力をどのように扱うかを確認します。
・1歳以上120歳以下:代表値「60」を使います。このケースでは、システムがこの入力を正しく処理できるかを確認します。
・120歳超:代表値「121」を使います。このケースでは、システムがこの入力をどのように処理するかを確認します。
同値分割法
同値分割法を使用することで、テストケースの数を効率的に減らしながらも、システムが全ての重要な入力範囲を正しく処理できるかどうかを確認することができます。テストの網羅性と効率を両立させることが可能です。

境界値(限界値)分析

境界値(限界値)分析は同値分割法の拡張で、入力値や出力値の範囲を最小値、最大値、最小値より1小さい値、最大値より1大きい値などに分けて、それぞれの境界値でテストする技法です。

こちらも年齢を入力する場合を例に考えてみます。この場合、入力される年齢データの範囲を「1歳以上120歳以下」とし、この範囲に対して、次のような境界値を選定します。

・最小値より1小さい値:0歳
・最小値:1歳
・最大値:120歳
・最大値より1大きい値:121歳

これらの値を使ってテストケースを作成します。

・0歳:範囲外に位置する値。このケースでは、システムが最小値外の入力をどのように扱うかを確認します。
・1歳:範囲内に位置する値。このケースでは、システムが最小値の入力を正しく処理できるかを確認します。
・120歳:範囲内に位置する値。このケースでは、システムが最大値の入力を正しく処理できるかを確認します。
・121歳:範囲外に位置する値。このケースでは、システムが最大値外の入力をどのように扱うかを確認します。
境界値(限界値)分析
境界値分析を使用することで、テストケースの効果を高めることができます。システムが境界付近の入力を適切に処理できるかどうかを確認し、これにより、範囲の端で発生しやすいエラーやバグを見つけることができます。

状態遷移テスト

テスト対象が持つ状態や状態間の遷移を表現した状態遷移図や状態遷移表をもとにして、各状態での動作や遷移条件をテストします。例えば、ATMの操作画面をテストする場合、カード挿入・暗証番号入力・メニュー選択・取引実行・カード返却という状態やその間の遷移をテストします。

デシジョンテーブル

複数の条件や結果が組み合わさる場合に使用する表で、各条件の真偽に応じて期待される結果を列挙してテストします。例えば、商品の送料を計算する場合、購入金額や会員ランクなどの条件と送料無料かどうかなどの結果を表にまとめてテストします。

ユースケーステスト

ユーザーの視点からテスト対象が提供するサービスや機能を表現したユースケースをもとにして、ユーザーの目的や要求に沿ったテストシナリオを作成してテストします。例えば、ECサイトで商品を購入する場合、商品検索⇒ カート追加⇒ 注文確定⇒ 支払い方法選択⇒ 配送先入力などの一連の流れでテストします。

ブラックボックステストのメリット・デメリット

メリット

・プログラムの内部構造を知らなくてもテストが可能
・利用者の視点からのテストができるため、より現実的なテストができる
・どのテストレベルでも適用できるため、設計不良の発見が早期に行える
・ソフトウェアの異なるバージョンやプラットフォームでの互換性を評価するのに適している

デメリット

・プログラムの内部構造を考慮しないため、特定の箇所のバグが見つけにくい場合がある
・テストケースの選定に悩む場合がある
・内部のプログラム変更があった場合、テスト条件が変わることがある
・冗長なテストが発生しやすくなり、効率が悪くなる場合がある

ブラックボックステストのやり方(使い方)

ブラックボックステストの実施手順は以下の通りです。
1. テスト対象のソフトウェアやシステムの機能や仕様を確認します。
2. テストケースを設計し、実装します。入力データや操作手順、期待する結果を含むものです。
3. 実際にテストケースを元にテスト実行し、得られた結果を期待する結果と比較します。
4. テスト結果によって不具合が見つかった場合、修正を行った上で確認テストと回帰テストを実施します。
5. 全てのテストが完了し、問題がないと判断されたらリリースします。

まとめ

ブラックボックステストは、テスト対象が設計通りに機能しているか確認するための重要なテスト方法です。内部の構造を知らずに行えるため、幅広い視点でテストが可能です。ただし、内部構造を考慮しないため、特定の箇所の故障や欠陥が見つけにくい場合があることを理解し、テスト計画を立てることが大切です。

人気のコラム

最新のコラム