0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ソフトウェアテスト技法を読んで学んだこと

Last updated at Posted at 2020-02-23

買った本

ソフトウェアテスト技法
Part1をやり終えたので学んだことを記録

同値分割法

テスト結果で同じ結果になるものをグループ分けして、その中で代表となる値のみテストをする。
例えば今月の獲得ポイントによって来月の会員ランクが決まるような処理
以下のような条件だった場合

図1 同値分割法の例

No 獲得ポイント 来月の会員ランク 代表値
1 0-100 ノーマル 50
2 101-500 ブロンズ 300
3 501-1000 シルバー 750
4 1001- ゴールド 2000

同値分割法は、同じ結果に範囲に分割して、その中で1つのみテストを実施する。
そうすることで、その範囲内の動作は正しいと判断するテスト。
ただし、ソースコードの組み方によっては、代表値だけのテストでは足りない場合もありうる。

public static String getRank(int point) {
    switch(number) {
        case 0:
            return "ノーマル";
            break;
        case 1:
            return "ノーマル";
            break;
        // caseが100まで続く
        case 32:
            return "ブロンズ";
            break;
        // caseが100まで続く
        case 100:
            return "ノーマル";
            break;
    }
}

こんなソースないとは思うが、もし間違って32の時に ブロンズを返すと書いていた場合、
同値分割法のテストで不具合を発見することはできない。
静的解析ツール、レビューで上記のような問題は解決されるはずなので大きな問題にはならないはず。

境界値分析

同値分割法で分割したクラスの境界値をテストする手法
図1を例とすると、ノーマルとブロンズの境界である、100, 101をテストする。
100はノーマル
101はブロンズとなるはず

境界値テスト.png

// こんなメソッドがあった場合に不具合に気づくことができる。
public static String getRank(int point) {
    if (0 <= point && point < 100) { // <= 100とすべきだが間違っている!!
        return "ノーマル";
    } else if(101 <= point && point <= 500) {
        return "ブロンズ";
    }
}

知識として持っているものを使用して、実際にテストケースを作成していく練習ができました!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?