Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

ブラックボックステスト

ブラックボックステスト

ブラックボックステスト は内部実装を見ずに、入力と出力だけを見てテストする方法
つまり、関数やAPIや画面の中身がどう実装されているかは気にせず、「この入力をしたら、仕様通りこの結果になるか?」を確認する

ブラックボックステストの技法

技法内容
同値分割同じ扱いになる入力をグループ化する
境界値分析0、1、上限、下限など境界を重点的に試す
デシジョンテーブル条件の組み合わせと結果を表で整理する
状態遷移テスト状態の変化が正しいか確認する
ユースケーステスト実際の利用シナリオで確認する

同値分割テスト・境界値テスト

ソフトウェアは入力値や条件によって処理方法が変わる。多くの場合、入力値の組み合わせは膨大になるため、すべての入力値・すべての条件を網羅してテストするのは不可能になる。

そこで、テストケースの枝刈りをして代表的な入力値だけテストするのが同値分割テストや境界値テスト。

例:パスワードの設定欄

パスワードの文字数を「8文字以上16文字以下」としていて、文字数が条件を満たすかどうか を判定する関数があったとする

def is_valid_length(password: str) -> bool:
    ...

この関数のテストに際して、想定される全部の入力値の組み合わせを試すわけにはいかない(記号をどこまで含むかにもよるが、94163.7×103194^{16} \approx 3.7\times 10^{31} 通りとかになる)。

同値分割テスト

同じ出力になる入力値の集合( 同値パーティション )ごとに代表的な入力値だけをテストケースとする

例:パスワードの設定欄

パスワードの条件が「8文字以上16文字以下」のため

  • 8文字以上16文字以下

の場合は正しい値として is_valid_length()の返り値が true になる( 有効同値パーティション

  • 8文字未満や16文字を超える場合

is_valid_length()の返り値が false になる( 無効同値パーティション

テストケースとしては、例えば

  • 有効同値パーティション の代表例として「9文字」

  • 無効同値パーティション の代表例として「6文字」

を設定する、というのが同値分割テスト

境界値テスト

境界値テスト は条件の境界となる値とその隣の値に対してテストを行う技法。

例:パスワードの設定欄

パスワードの長さは数値であるため、異なる同値パーティションが隣り合っている部分

  • 7文字と8文字

  • 16文字と17文字

が境界となる