知識整理のために投稿しています。
本は 知識ゼロから学ぶ ソフトウェアテスト[改訂版]です。
テストってなかなか書けない。
境界値分析法
- プログラムでは「境界」に常にバグが潜んでいる
- 同値分割法とセットで使われることが多い
(例) 1ページ未満の印刷をユーザーが要求した場合にエラーを表示する
if ( a >= 1 ) {
// 印刷処理
} else {
// エラー処理
}
4つのバグが起こりうる
1.>と>=の間違い
if ( a > 1 ) {
// 印刷処理
} else {
// エラー処理
}
2.数字の書き間違いやスペックの読み違いなど
if ( a >= 2 ) {
// 印刷処理
} else {
// エラー処理
}
3.境界がない
if ( a >= 1 ) {
// 印刷処理
}
// このあとがコメントアウトされているなど
4.余分な境界
if ( a >= 1 && a < 10 ) {
// 印刷処理
} else {
// エラー処理
}
境界のテストをするために ~On-Off ポイント法~
- 異なる処理が行われる一番近い2地点をテストする方法
- 前述の4つのケースが満たされることを意識する
今回書くべきテストケース例
- 1を入力→正常な処理がなされること
- 0を入力→エラー処理がなされること
同値分割法と境界値分析法の組み合わせ
(例)
入力A:1~999まで入力可能
入力B:同上
入力C:A*B
| 有効同値クラス | 無効同値クラス | 境界値 | |
|---|---|---|---|
| 入力A | 1~999 | 0以下1000以上 | 0,1,999,1000 |
| 入力B | 1~999 | 0以下1000以上 | 0,1,999,1000 |
テストケースは、A・Bに以下の数を入れて作れば良い
- 0:常にバグになりやすい数
- 1:有効な値の下限
- 499:有効な値の真ん中
- 999:有効な値の上限
- 1000:無効な値の下限
経験則によるテストケース
いつでも上記のような表を作ってテストケースを書けるとは限らない
- データが複雑に絡まりあっている
- 十分なスキルがない
- 時間がない… などなど
良いデータと悪いデータを入力するということを意識するだけでもテストは改善する
良いデータ
- ユーザがよく使いそうなデータ
- プログラムが許す最小のデータ
- プログラムが許す最大のデータ
- ゼロ(これが悪いデータの場合もあり)
悪いデータ
- 非常に小さなデータ(-99999999, 0.0000001など)
- 非常に大きなデータ(99999999, 10999999など)
- 長いデータ(abcdefghijklmnopqrstuvwxyz.txtなど)
- 無効なデータ