JSTQB ch4 テスト技法 (3/3)

JSTQBテスト技術者

出典: 

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的には、「テスト条件」とは、テスト分析で識別する、テストケースの基となるもの

  • テスト分析の一環として、経験ベースでチェックリストの作成・拡張を行う(ことがある)
  • チェックリストをカバーするようにテストケースの設計、実装、実行を行う

さまざまなテストタイプに適用可能

  • 特に非機能テストでは仕様が明文化されていないことが多く、有用性が高い

チェックリストから直接テストを実行することもできる

  • ハイレベルのガイドラインとしてある程度の一貫性はある
  • 広範囲に網羅できる
  • 解釈違いが生じ、完全な再現は困難になる