『はじめて学ぶソフトウェアのテスト技法』 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無効値