テストに関する基礎の基礎


はじめに

テスト is 何? 何にもわからんという方向けのものになっています。
解説する内容はこちらになります。

  • 基本用語(ブラックボックステスト、ホワイトボックステスト、単体テスト、結合テスト、総合テスト)
  • 同値分割
  • 境界値テスト
  • 分岐網羅
  • 条件網羅

基本用語

ブラックボックステスト

システムの内部構造を考慮せずに仕様を満たしているかどうかのみを確認するテスト手法です。
「プログラムが正常に動作しているか」ではなく、「望んだ機能ができているか」を見るテストになります。
内部的なものを考慮せず、機能だけを見るため、ユーザ目線でのテストです。

ちなみに、エンジニアのような内部をよく知る人がやるブラックボックステストをグレーボックステストといいます。

ホワイトボックステスト

全てのプログラムが意図した通りに動作しているかを確認するテスト手法です。
プログラムの構造、ロジック、制御の流れなどが正常かを見るテストになります。
内部をガッツリと考慮しているため、エンジニア(作り手)目線でのテストです。

同値分析

ブラックボックステスト技法の一つです。テスト手法というよりも、入力データの分析手法になります。
同じ影響を及ぼす入力値のグループ(同値クラス)に分け、その中から代表値を定めてテストに使用します。

ex) 自分の誕生月を入力する画面でのテスト
有効同値クラスになると推測される入力値

  1, 2 , 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 => 1以上12以下なら有効

無効同値クラスになると推測される入力値

  -1, 13, 100, 1.2 etc... => 1未満、12より大きいなら無効

同じクラスの入力値ならば得られる結果は同じであると考えて、クラスから1つ代表値を選んで入力値とする

いいところ

  • 仕様上のエラーの確認ができる
  • テスト項目を省略できる(全部の値を入れる必要がないため)

境界値テスト

ブラックボックステスト技法の一つです。上の同値分割と併用して使われることが多いものになります(境界値を判定するのに同値分析が使われたりします)
同値クラスの境界値にはバグが潜みやすいという経験則に基づいたテストになります。

ex) 自分の誕生月を入力する場所でのテスト

 正常な結果が返る条件は「1以上12以下」であるため、境界値は1、12になる

このように、コーディングにおける「<=」と「<」、「>=」と「>」の記述ミス、読解ミスを起こしやすいという前提の元行われるものになります。

いいところ

  • 条件分岐でのありがちなミスを検証できる
  • あるあるなバグを見つけやすい

分岐網羅

ホワイトボックステスト技法の一つです。
条件分岐処理(if文, switch文)の true or false を少なくとも一度は実行するテストになります。
ex)
if (A or B) {
処理1;
} else {
処理2;
}

この時のテストケースは、

A = True, B = False 処理1が実行
A = False, B = False 処理2が実行
これで分岐網羅達成

(B = Trueのケースがなくても条件分岐処理のtrue, falseのパターンを通っているのでOK)

条件網羅

条件分岐処理が複数ある場合、それぞれの条件がtrue, falseの場合を組み合わせたテストのこと

ex)
if (A or B) {
処理1;
} else {
処理2;
}

この時のテストケースは

A = True, B = False   処理1が実行
A = False, B = True   処理1が実行
A = False, B = False  処理2が実行
これで条件網羅達成