『はじめて学ぶソフトウェアのテスト技法』 1章から3章まで
はじめて学ぶソフトウェアのテスト技法を読んで、印象に残ったことなどをメモ。
5章まで読んだけど、とりあえず3章までのことを。
第1章 テストのプロセス
- テストとは
- 「実際どうなっているか」と「本来はどうあるべきか」の比較
- この本の役割
- テスト設計を有効かつ効率よく行うための技法
- テストケースの構成
- 入力
- 出力
- 期待値(オラクル)
- 実行の順番
- ランダム or シーケンシャル
- すべてをテストすることは不可能
演習問題
考えたテストケース
入力 | 期待される結果 | 実際の結果 |
---|---|---|
30000 | 1 | 0 |
-30000 | 0 | -1 |
29999 | 1 | 0 |
-29999 | 0 | -1 |
実際に動かしてみた
#include <stdio.h> int blech (int j) { j = j - 1; j = j / 30000; return j; } int main() { printf("case 30000 %d\n", blech(30000)); printf("case -30000 %d\n", blech(-30000)); printf("case 29999 %d\n", blech(29999)); printf("case -29999 %d\n", blech(-29999)); return 0; }
結果
case 30000 0
case -30000 -1
case 29999 0
case -29999 -1
第2章 ケーススタディの説明
- 省略
第3章 同値クラステスト
- 同値クラス
- 同じクラスからは1ケースだけ
- 時間的余裕があるなら複数やってもいい
- でもそれで得られるのは担当者の安心感のみ
- 契約による設計
- 事前条件を満たせば、事後条件を満たす
- 契約によるテスト
- 異常な(事前条件を満たさない)入力はテストしない
- 防御的設計
- どんな入力でも事後条件のどれかは満たす
- 防御的テスト
- どんな入力もテストする
- 無効値のテストは1項目ずつ
- 疑問
- 同値クラスの識別についての汎用的な方法がわからない
演習問題
考えたテストケース。
これでいいんだろか。なんかもやっとする。
No | ZipCode | State | LastName | UserID | StudentID | 備考 |
---|---|---|---|---|---|---|
1 | 12345 | NY | Sumida.-' 1 | y_smd_01 | RW | 全て有効値 |
2 | 123 | AK | Sumida.-' 1 | y_smd_01 | RW | ZipCode無効値 |
3 | 12345 | ZZ | Sumida.-' 1 | y_smd_01 | RW | State無効値 |
4 | 12345 | AK | Sumi%@;da | y_smd_01 | RW | LastName無効値 |
5 | 12345 | NY | Sumida.-' 1 | y_sumida | RW | UserId無効値 |
6 | 12345 | NY | Sumida.-' 1 | y_smd_01 | AA | StudentID無効値 |