概要
テスト技法について基礎的な部分を学ぶ機会があったので
基本的な技法について簡単にまとめてみた。
JSTQB FLの内容なので出てくる用語もそれに準じた内容となります。
また、動的テストが主な内容となります。
同値分割法
手法
同等に処理されると想定したデータすべてを同じパーティション(同値クラスとも呼ぶ)に
振り分け、各パーティションから少なくとも1個の値を選んでテストする。
なお、有効な値を有効同値パーティション、無効な値を無効同値パーティションと呼ぶ
あるメソッド(仕様)の入力値を条件分岐ごとにグルーピングして、そのうち何点か確認すればいいよね的な手法
例えばこんなコードがあった場合、(ホワイトボックステストの話になってしまいますが…)
int foo(int a) {
if(-5 < a) {
return -1
} else if((0 < a) && (a < 5)) {
return 1
}
// 仮想の異常通知処理
Error();
}
同値パーティションは以下の通りに分割されます。
入力範囲 | パーティション |
---|---|
a <= -5 | 無効同値パーティション1 |
-5 < a <=0 | 有効同値パーティション1 |
0 < a < 5 | 有効同値パーティション2 |
5 <= a | 無効同値パーティション2 |
テストケースはこのパーティションから代表値を選ぶ手法
入力値 | テストケースの意図 | 結果 |
---|---|---|
-7 | 無効同値パーティション1 代表値 | 異常通知 |
-3 | 有効同値パーティション1 代表値 | -1 |
3 | 有効同値パーティション2 代表値 | 1 |
7 | 無効同値パーティション2 代表値 | 異常通知 |
メリット
やるべきテストケースを減らせる
(パーティションごとの代表値を選択するため)
注意点
イレギュラーな故障については見逃しやすい
(入力が2つ以上の場合にある特定のパターンの組み合わせでのみ出る故障など)
境界値分析
手法
同値分割法とセットで使う、各パーティションの境界部分についてテストする手法
さっきの例で行くと以下の通り
入力値 | テストケースの意図 | 結果 |
---|---|---|
-5 | 無効同値パーティション1 上限値 | 異常通知 |
-4 | 有効同値パーティション1 下限値 | -1 |
0 | 有効同値パーティション1 上限値 | -1 |
1 | 有効同値パーティション2 下限値 | 1 |
4 | 有効同値パーティション2 上限値 | 1 |
5 | 無効同値パーティション2 下限値 | 異常通知 |
メリット
故障の発見をしやすい
(エラーしやすい点を選んでテストするため )
注意点
実装の仕方によっては境界値分析でも網羅できていない可能性がある。