自己紹介
名前
所属

加瀬 正樹
ニフティ株式会社
http://www.nifty.co.jp/
会員向けのメールサービスのシステム開発や迷惑メール対策への取り組み

原因結果グラフの分割と影響範囲の局所化に関する考察

主な活動

WACATE
http://wacate.jp/
若手テストエンジニアをターゲットにした
ソフトウェアテストワークショップ

TEF勉強会

加瀬 正樹（ニフティ株式会社）

http://www.swtest.jp/wiki/index.php
主にテスト技法をテーマにしたオフライン
勉強会を不定期開催
JaSST’11 Tokyo

2

はじめに

原因結果グラフ技法とは

 原因結果グラフ技法とは

定義
入力やイベント（＝原因）の組合せと，出力（＝結果）との関係をブールグラフ化し，そこからデシジョンテー
ブルを作成するテスト設計技法

 現状の課題 分割の導入
 ズームアウト [zoom-out] 分割 [partitioning] 原因結果グラフの分割

例 動物園の入園料
・6歳以下の地元住民は割引・65歳以上も割引

 考察
 まとめ

仕様から論理関係を見つけてグラフを作成

グラフからデシジョンテーブルを作成

デシジョンテーブルからテストケースを作成
JaSST’11 Tokyo

3

原因結果グラフ技法とは

JaSST’11 Tokyo

4

現状の課題

 長所
 図式化・整理し、網羅的なテスト条件を作成できる

仕様変更によるテスト工数増加

派生開発におけるテスト•機能の修正や追加•仕様変更を伴うバグ修正•既存ソフトウェアの拡張•システム構成の変更

 仕様の矛盾を見つけたり、設計の単純化をしやすくする

 短所
 仕様からグラフを作成する難しさ(分析・制約)
 グラフからデシジョンテーブルへ変換する難しさ

ツール化することによって技法として広く使われやすくなった•新たなテスト設計・実装・実施コスト•仕様や設計の複雑化

見直し
5

JaSST’11 Tokyo

6

JaSST’11 Tokyo1

ズームアウトとは ズームアウト [zoom-out]

テスト設計を行う際、テストの目的に応じてテスト条件や期待値の粒度をより粗く同値分割・水準抽出する手法。
粗くズームアウトと分割

電子メール

添付ファイル
あり

細かく

doc

xls

ppt添付ファイルなし

html

粒度を粗くして、テスト効率をあげる取り組み
JaSST’11 Tokyo

7

JaSST’11 Tokyo8

ズームアウトの注意点

分割とは ズームアウトによって見落とすバグ

 分割 [partitioning]

例

電子メール

添付ファイ
ルあり

例

規模の大きなソフトウェアのテスト設計において、テスト条件やモジュールを関連性のないグループ・テスト設計しやすいまとまりに分けて考えること。

メール送信

送信処理では添付ファイルの種類は関係ないので、ズームアウトしてよさそう

添付ファイ
ルなし

メール受信
doc

xls

ppt

html

受信処理のうち、表示するときにHTMLメールかどうかは関係するのでズームア
ウトしないほうがよさそう

テスト対象の性質やテスト目的によってはテスト条件を間引き、バグを見落とすリスクがある
JaSST’11 Tokyo

9

JaSST’11 Tokyo

10

分割とは分割の注意点

例

 関係性を見落とすことで生まれるバグ

動画中継機能動画中継機能を利用するためには、ユーザは以下の条件をすべて満たす必要がある。
1. 決済情報が登録されている2. 動画中継に必要なブロードバンド回線である※決済情報には「クレジット情報」「口座情報」の2種類があり、クレジット会社はA社、B社、C社のみが登録できる ブロ ドバンド回線は 光フ イバ で登録できる。ブロードバンド回線は、光ファイバーであるか、回線速度が10Mbps以上であるものとする。

分割してテスト対象を小さくしてみたが、実は関係性があったためバグを見落としてしまう。

テスト空間を小さくしてみたが、互いに関係するテスト条件・因子がみつかってしまった

決済条件と回線条件は互いに関連を持たないのでは？
テスト空間（の次元）を小さくすることで考えやすくなる
11

JaSST’11 Tokyo

12

JaSST’11 Tokyo2

原因結果グラフの分割
 原因結果グラフの分割可能性

原因結果グラフの中間ノードについて、原因となるノードをみつける。それらの原因となるノード全てが、他のノードの原因にならない場合、分割可能という。

分割の実例

分割不可能
分割可能

ノードc3の原因ノードであるc4は、c3の結果ノードであるAの原因でもあるため、c3では分割不可能ノードAは分割可能
c1,c2,c3,c4はA以外のノードの原因ではない

CEGTest で分割可能かどうかの判定を実装した
JaSST’11 Tokyo

13

JaSST’11 Tokyo

14

実例（テスト設計～実施）

実例（仕様変更が発生）

例

例

動画中継機能動画中継機能を利用するためには、ユーザは以下の条件をすべて満たす必要がある。
1. 決済情報が登録されている
2. 動画中継に必要なブロードバンド回線である※決済情報には「クレジット情報」「口座情報」の2種類があり、クレジット会社はA社、B社、C社のみが登録できる。ブロードバンド回線は。光ファイバーであるか、回線速度が10Mb 以上であるものとする
10Mbps以上であるものとする。

動画中継機能動画中継機能を利用するためには、ユーザは以下の条件をすべて満たす必要がある。
1. 決済情報が登録されている
2. 動画中継に必要なブロードバンド回線である※決済情報には「クレジット情報」「口座情報」の2種類があり、クレジット会社はA社、B社、C社のみが登録できる。ブロードバンド回線は。光ファイバーであるか、回線速度が10Mb 以上であるものとする10Mbps以上であるものとする。

仕様変更
ADSL／ケーブル回線以外だと10Mbpsでは性能要件を満たさない！

JaSST’11 Tokyo

15

実例（グラフの修正）

16

光ファイバーであるか、ADSLまたはケーブル回線の場合は、回線速度が10Mbps以上であるものとする。

JaSST’11 Tokyo

実例（グラフの分割）

分割

CEGTest でグラフ修正は容易
でも、テスト再実施にはムダが多そうだ
17

原因結果グラフを分割し、テスト設計・実施する
JaSST’11 Tokyo

18

JaSST’11 Tokyo

3

考察1 分割による効果
 影響範囲の限定
 規模を小さくすることによって分析が容易になる
 テスト空間・次元が小さくなり、考えやすくなる バグを見つけた場合の修正後再テストが限定できる分割に関する考察 例の場合は「決済条件」は修正によるデグレードが生じにくい

 原因側に近いノード（細い枝）で分割したほうが効果大
原因側に近いノ ド（細い枝）で分割したほうが効果大

 ズームアウトへの応用
 分割されたノードをT/F（2通り）に置き換えられる 例の場合、「回線条件」をT/Fの2通りに“粗く”捉える 結果側に近いノード（太い枝）で分割したほうが効果大

分割があれば、ズームアウトにもつなげられる
JaSST’11 Tokyo

19

JaSST’11 Tokyo20

考察2 分割パターンの分類

まとめ 同値分割型

 原因結果グラフ技法に分割の概念を導入
 テストコストの抑制

 ONE 制約または EXCL 制約の OR 接合部

 煩雑さの解消

 分割とともに、ズームアウトによるテスト条件の間引き 原因結果グラフでの分割可能性の定義がしやすい
 多層型

 分割による効果

 論理関係が複雑な場合

 影響範囲の限定 ズームアウトへの応用

 “見直し”によって中間ノードが追加されることが多い 今後の課題

 場合によっては、分割可能性が消える

 分割の概念の一般化・体系化
 分割パターンのさらなる分析

様々なグラフデータを採取して、引き続き分析
JaSST’11 Tokyo2122

原因結果グラフに特化しない分割パターン分析による設計へのフィー
ドバック
JaSST’11 Tokyo

参考 「ソフトウェアテスト技法ドリル」, 秋山浩一
 http://www.amazon.co.jp/dp/4817193603/

 「テスト観点に着目したテスト開発プロセス（VSTeP）の概要」, 西康晴

ご清聴ありがとうございました http://www.jasst.jp/archives/jasst09e/pdf/A7-6.pdf
 原因結果グラフによるテスト設計支援ツール –CEGTest, 加瀬正樹
 http://softest.cocolog-nifty.com/blog/cegtest.html

23

JaSST’11 Tokyo

24

JaSST’11 Tokyo4