ソフトウェアテスト技法
- 目標は なるべく少ないテストケースでなるべく多くのバグを発見する
- テストの種類
- テスト設計アプローチ
- 以下どちらでテストするかを明確にする
- 契約によるテスト
- 事前条件の範囲内だけでテストする
- 防御的テスト
- 事前条件の範囲外もテストする
同値クラステスト
- テスト的には同じ意味になる値のこと
- 同値クラスの分だけテストケースを用意すれば良い
境界値テスト
- 同値クラスの境界とその前後を調べる
ドメイン分析テスト
- 複数の条件がある時に有効
- 2つの条件(変数)が相互作用を持つ場合に適している
- ドメイン内は条件を満たす範囲のこと
- onポイントは境界値のこと
- offポイントは境界値に隣接する値のこと
- onポイントがドメイン内ならoffポイントはドメイン外とする
- onポイントがドメイン外ならoffポイントはドメイン内とする
- ドメインテストマトリクスで網羅性を確保できる
- in(ドメイン内の満たす値)を固定しonとoffを調整
※1,2列は算数の点数>=60の条件を検証している
※ 列がテストケース(下記例は4ケース)
変数 | 条件 | ポイント | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|---|
算数 | 算数の点数>=60 | on | 60 | - | - | - |
off | - | 59 | - | - | ||
in | - | - | 70 | 80 | ||
合計点 | (算数の点数+国語の点数)>=90 | on | - | - | 70/20 | - |
off | - | - | - | 80/9 | ||
in | 60/40 | 59/41 | - | - | ||
期待される結果 | 合格 | 不合格 | 合格 | 不合格 |
デシジョンテーブル
- 複数の条件がある時に有効
- 2つの条件(変数)が独立している場合に適している
- それは論理式で表すことができるもの
- テストケースの圧縮(ケースを減らす)を考える
※上からNoが出たら以降の判定は行わないのがコツ
※ 列がテストケース(下記例は4ケース)
1 | 2 | 3 | 4 | |
---|---|---|---|---|
条件 | ||||
書籍を購入している | Yes | Yes | Yes | No |
4000円以上購入している | Yes | Yes | No | - |
離島に住んでいない | Yes | No | - | - |
アクション | ||||
送料無料 | Yes | No | No | No |
ペア構成テスト
- もっと複雑、多くのテストケースがある時に有効
- 全ての組み合わせではなく条件の全てのペアをテストする
- 70~85%程度のバグを発見可能
- 直交表(列が条件、行がテストケース)を使う
※例:L4(23)・・・2値条件が3つ
※ 行がテストケース(下記例は4ケース)
A | B | C | |
---|---|---|---|
1 | 0 | 0 | 0 |
2 | 0 | 1 | 1 |
3 | 1 | 0 | 1 |
4 | 1 | 1 | 0 |
状態遷移テスト
- もっと複雑、多くのテストケースがある時に有効
- 状態と遷移がある時に有効
- 1.まずは状態遷移図で全体感を把握
- 2.次に状態遷移表を使って全ての遷移を確認
- 3.その後Nスイッチカバレッジにより段階的な遷移をテスト
- Nスイッチカバレッジ
- Nは前状態から後状態までに経由する状態(スイッチ)のこと
- 例えば停止中→初期状態(スイッチ)→動作中
- 状態遷移表を前状態(行)、後状態(列)の行列にする
- Nが増えるとテストケースが増える
※以下は状態遷移表
※列→行
イベント\状態 | ①初期状態 | ②動作中 | ③停止中 |
---|---|---|---|
スタートボタン | ② | ③ | ② |
リセットボタン | N/A | N/A | ① |
※以下は1スイッチカバレッジ
※イベントRはリセット、Sはスタート
※+はorの意味
※行→イベント→列へ遷移
※ 行列がテストケース(下記例は12ケース)
前状態\後状態 | ①初期状態 | ②動作中 | ③停止中 |
---|---|---|---|
①初期状態 | RR+SR | RS | SS |
②動作中 | RR+SR | RS+SS | - |
③停止中 | RR+SR | RS | SS |
テスト技法以外のテストケースを設計する観点としてカバレッジ
- ホワイトボックステスト
- データフローテスト
- 変数毎に生成→使用→廃棄の順番が守られているか確認
- 制御フローテスト
- 100の内何%が実行されたかに注目してテストを行う(=カバレッジ)
- データフローテスト
- カバレッジレベルの求め方の種類(低い順に)
- カバレッジ計算は自動計測ツールを用いる
- ポイントは 効果の高いテスト技法を採用した結果、高いカバレッジが副次的に得られる ということであり、カバレッジの上昇が目的ではない
- 85%程度のカバレッジが努力目標
参考文献
ひらまつ しょうたろう, 2023, 「はじめてのソフトウェアテスト技法【全てのエンジニアが知るべき最重要テスト技法を、丁寧な解説と演習問題で身につけよう】」, udemy, (2024/2/20取得,https://www.udemy.com/).