テストに関するフレームワーク
あらゆるテストは、次に示す「テストを構成する五大要素」から成り立つ。
- テストの実施者
- 網羅性(ガバレッジ)
- 発見したい問題
- 作業内容
- 結果の判定方法
これらの要素を念頭に置き、次に述べるテスト技法を組み合わせる必要がある。
具体的な技法は次に述べる
テストの実施者に着目したテスト技法
「誰がテストを行うのか」がポイント
- ユーザーテスト(想定ユーザーを対象)
- アルファテスト(社内のテストチームが行うテスト)
- ベータテスト(マーケティングターゲットを対象)
- バグの叩き出し
- 対象分野の専門家によるテスト
- ペアテスト
ガバレッジテスト
「どこまでテストを行うのか」がポイント
全機能について、他の機能との組み合わせ全てが問題ないことを確認するなら、それはガバレッジ指向。
問題を予測し、それを確認するのなら、そのテストは問題指向と言える。
- 関数テスト(全ての関数を一つづつテストする)
- 機能や関数の組み合わせテスト
- メニューツアー(GUIを操作し、選択肢の全てを確認する手法)
- ドメインテスト(各関数の変数において、良い代表値を選出することで、すべての値でのテストを担保する)
- 同値クラス分類(ある変数において、同じ動作をするとみなせる値集合)
- 境界値テスト
- 最適な代表値によるテスト
- 論理テスト(プログラムにおける全ての論理関係の検証)
- 状態遷移テスト(取りうる全てのテスト状態に遷移させる)
- パステスト(状態遷移における、一連の流れについてサブテストを作成し、担保する)
- ステートメントと分岐のガバレッジ(命令文と分岐ガバレッジを高い率になるようにテストを設計する)
- 仕様や要求に基づくテスト(全ての仕様や要求に対してテスト)
- 組み合わせテスト(様々な変数の組み合わせと、その値を考慮)
発見したい問題に焦点をあてた技法
「どのようなリスクがあるか」がポイント
- 入力に関する制約
- 出力に関する制約
- 演算処理状の制約
- メモリに関する制約
作業内容に焦点を当てた技法
「どうテストするか」がポイント
- 回帰テスト(リグレッションテスト, 実行済みのテストを再度実施すること。修正が反映されているか、以前のバグに影響を与えていないか、副作用はないか)
- 手順書に従ったテスト
- スモークテスト(全面的な再テストが不要な、回帰テスト)
- 探索的テスト(新しいテスト方法の探索)
- ゲリラテスト, モンキーテスト(焦点を絞ってテストを実施し、効率的にバグを抽出する)
- シナリオテスト
- インストールテスト(いろいろな構成やバージョンのシステムに、異なるインストールを行う)
- 負荷テスト
- 長時間テスト
- 性能テスト
合格判定に焦点を当てた技法
「合否の判断基準」がポイント
- 検証情報の組み込みによる自己評価
- 前回の結果との比較
- 仕様書等の文章との比較
- 一貫性の確認(履歴やイメージ、競合他社、ユーザーの期待、目的等から判断する)