4.3 ホワイトボックステスト技法
サンプル
if (A) {
x();
}
if (B && C) {
y();
} else {
z();
}
デシジョンテーブル
#1 | #2 | #3 | #4 | #5 | #6 | #7 | #8 | |
---|---|---|---|---|---|---|---|---|
条件 | ||||||||
A | Y | Y | Y | Y | N | N | N | N |
B | Y | Y | N | N | Y | Y | N | N |
C | Y | N | Y | N | Y | N | Y | N |
=== | ||||||||
判定結果 | ||||||||
A | Y | Y | Y | Y | N | N | N | N |
B && C | Y | N | N | N | Y | N | N | N |
=== | ||||||||
アクション | ||||||||
x | X | X | X | X | ||||
y | X | X | ||||||
z | X | X | X | X | X | X |
4.3.1 ステートメントテストとカバレッジ
C0: statement coverage(命令網羅)
ステートメント数のカバレッジ
テストで実行したステートメント数 / 実行可能ステートメント総数
100%にするには#1,#2をテストすればよい
#1 | #2 | |
---|---|---|
条件 | ||
A | Y | Y |
B | Y | Y |
C | Y | N |
=== | ||
判定結果 | ||
A | Y | Y |
B && C | Y | N |
=== | ||
アクション | ||
x | X | X |
y | X | |
z | X |
3/3 = 100%
4.3.2 デシジョンテストとカバレッジ
C1: branch coverage(分岐網羅)
【補】書籍で「デシジョンカバレッジ」と表現されている
それぞれの判定結果における真偽が少なくとも1回は実行されるよう
#4 | #5 | |
---|---|---|
条件 | ||
A | Y | N |
B | N | Y |
C | N | Y |
=== | ||
判定結果 | ||
A | Y | N |
B && C | N | Y |
=== | ||
アクション | ||
x | X | |
y | X | |
z | X |
100%にするには#4,#5をテストすればよい
if文が2つあり、1つにつき判定結果が2つあるので
4 / (2*2) = 100%
おのずとC0カバレッジが100%になる
C2: condition coverage(条件網羅)
それぞれの条件における真偽が少なくとも1回は実行されるよう
#4 | #6 | #7 | |
---|---|---|---|
条件 | |||
A | Y | N | N |
B | N | Y | N |
C | N | N | Y |
=== | |||
判定結果 | |||
A | Y | N | N |
B && C | N | N | N |
=== | |||
アクション | |||
x | X | ||
y | |||
z | X | X | X |
100%にするには#4,#6,#7をテストすればよい
条件が3つあり、1つにつき真偽の2値があるので
6 / (3*2) = 100%
C0カバレッジが100%になるとは限らない
2 / 3 = 66%
MCC: multiple condition coverage (複合条件網羅)
デシジョンテーブルの全列実行すれば100%
8 / 8 = 100%
4.4 経験ベースのテスト技法
下記をもとに、他の体系的な技法では容易に識別できないテストを識別
- テスト担当者のスキルと直感
- 同様のアプリケーションや技術における経験
有効性やカバレッジには非常に大きなバラツキが生じる
- とくにカバレッジの評価は困難
4.4.1 エラー推測
エラー、欠陥、故障の発生を予測する
- アプリケーションの過去の動作状況
- 起こしやすいエラーの種類
- 他のアプリケーションで発生した故障
リスト化しテスト担当者間で共有することで属人性を軽減
【補】ミューテーション解析という手法では典型的なエラーを模倣してテストケースを生成することがある
4.4.2 探索的テスト
事前定義されていないテスト
テストチャーターに従って下記を並行して行う
- テスト設計
- テスト実行
- ログ記録
- 評価
ユースケース
- 仕様がほとんどない
- スケジュールに余裕がない
- 他の形式的なテスト技法の補完
セッションベースドテスト
- 予め決められた時間枠内で行う探索的テスト
- 実行した手順や発見した事象を文書化する場合がある(テストセッションシート)
4.4.3 チェックリストベースドテスト
なんのチェックリスト? … テスト条件
ISTQB的には、「テスト条件」とは、テスト分析で識別する、テストケースの基となるもの
- テスト分析の一環として、経験ベースでチェックリストの作成・拡張を行う(ことがある)
- チェックリストをカバーするようにテストケースの設計、実装、実行を行う
さまざまなテストタイプに適用可能
- 特に非機能テストでは仕様が明文化されていないことが多く、有用性が高い
チェックリストから直接テストを実行することもできる
- ハイレベルのガイドラインとしてある程度の一貫性はある
- 広範囲に網羅できる
- 解釈違いが生じ、完全な再現は困難になる