スキルアップ
「CFD法」テスト技法解説

CFD法とは?
CFD法とは、原因流れ図(Cause Flow Diagram)を作成し、これに基づいてデシジョンテーブルを作成するテスト技法です。原因流れ図は、仕様やソフトウェアの実装情報に基づき、同値分割法の考えを用いて原因(入力)と結果(出力)を流れ図で整理したものです。原因流れ図を作成する際は、条件判定の処理順序などの実装情報が必要です。原因はテスト対象への入力、結果はテスト対象からの出力と考えられます。
テスト設計全般はこちら
https://www.veriserve.co.jp/service/detail/testdesign.html
CFD法のメリット
ソフトウェアやシステムには複雑な条件や論理を持つものが少なくありません。原因流れ図を作成することで、条件や論理の関係を視覚的に整理し、システムの動作を把握しやすくなります。さらに、同値分割図を使用して補集合を考慮することで、発生しない条件や無効な値などを網羅的に含められるため、デシジョンテーブルを作成する際の抜け漏れを防止できます。また、原因流れ図の作成時に実装情報を活用することで、実装上考慮が不要な条件の組み合わせをテストケースから削減でき、網羅性を確保しながらテストケースの数を抑えられます。
<CFD法の利用シーン>
ソフトウェアはさまざまな条件判定を行って動作を制御しています。条件判定の処理順序など、実装情報が明確である場合、どのようなシステムであっても条件判定を行う機能や処理に対してCFD法を適用することが可能です。
また、実装前段階で設計の検討の際に原因流れ図を用いて条件判定の処理順序を整理することが可能です。設計段階で作った原因流れ図を、その後のテスト分析や設計にも活用することで、効率的にテストを行えます。
CFD法によるデシジョンテーブルの作成手順
ここからは、以下の仕様を例として、CFD法を用いたデシジョンテーブルの作成手順について説明します。併せて、このデシジョンテーブルを基にしたテストケース作成の流れについても紹介します。
■例■クレジットカード利用のキャッシュバックキャンペーンの仕様
あるカード会社では、クレジットカードを期間内に利用したお客様にキャッシュバックを実施することにしました。キャッシュバックの対象は以下の通りです。
- キャッシュバック7%:プラチナカード所持者で、期間内の利用があれば対象(国内外、対象店舗での利用の有無は問わない)。ゴールドカード所持者は、期間内の国外利用があれば対象。
- キャッシュバック5%:ゴールドカード所持者で、期間内の国内利用があれば対象。
- キャッシュバック3%:ノーマルカード所持者で、期間内に対象店舗での利用があれば対象(国内外は問わない)。
- キャッシュバックなし:どのカードでも期間内の利用がない場合、またはノーマルカード所持者が期間内に対象店舗以外で利用した場合。
条件判定は、期間内の利用の有無→カードの種類→国外での利用の有無、対象店舗での利用の有無の順に実装されている。この仕様に基づき、それぞれの条件に応じてキャッシュバックが正しく適用されているかを確認します。
CFD法を適用する際、専用のツールを使わずに原因流れ図を作成するのは手間がかかり、デシジョンテーブルを手動で作成するとミスが発生しやすくなります。GIHOZを使うと原因流れ図の作図が容易になり、デシジョンテーブルやテストケースもワンクリックで出力可能です。以下に、GIHOZを活用した原因流れ図の作成からデシジョンテーブル、およびそれを基にしたテストケースの作成手順について説明します。
ステップ1 原因と結果を識別する
仕様から原因と結果を識別します。まず、原因は「期間内の利用」、「カードの種類」、「国外での利用」、「対象店舗での利用」の4つであることが分かります。それぞれについて、同値パーティションや補集合を考えます。
- 期間内の利用:「あり」、「なし」の2つ
- カードの種類:「プラチナカード」、「ゴールドカード」、「ノーマルカード」の3つ
- 国外での利用:「あり」 、「なし」の2つ
- 対象店舗での利用:「あり」、「なし」の2つ
次に、結果はキャッシュバックの有無やその割合になるため、「7%」、「5%」、「3%」、「なし」の4つであることが分かります。
ステップ2 原因流れ図を作成する
① 原因を表記する
ステップ1で識別した原因と結果を原因流れ図で整理します。まず、識別した原因を同値分割図として表記します。四角形などで同値分割図の枠を描き、その中に同値パーティションを配置します。同値分割図の枠の中で、同値パーティションに属さない領域は補集合と捉えられます。GIHOZでは青色の四角形の中に白色の四角形で同値パーティションを追加することで同値分割図を表現します。GIHOZで補集合を表現する際は、同値分割図に「その他」という項目を明示的に追加してください。例えば、期間内の利用について同値分割図を作成すると、「期間内の利用」という同値分割図の中に、同値パーティションを追加し、「あり」と表記します。さらに、「その他」を追加し、「なし」と表記します。このようにして、他の原因についても同値分割図を作成すると下図(図表1)のようになります。

② 結果を表記する
次に結果を表記します。GIHOZでは結果を有効系(白色の円)と無効系(灰色の円)の2種類で表現します。「7%」、「5%」、「3%」を有効系、「なし」はキャッシュバックの処理が実行されないことを考えると無効と扱えるため、無効系で表記すると下図(図表2)のように表記できます。

③ 表記した原因と結果を矢印でつなぐ
表記した原因と結果を矢印でつなぎ、原因から結果へと流れるフローを作成します。原因を条件判定が行われる順(期間内の利用の有無→カードの種類→国外での利用の有無、対象店舗での利用の有無の順)に、結果へ向けて矢印をつないでいきます。まず、期間内の利用がない場合、その時点でキャッシュバックがなしになるため、同値分割図「期間内の利用」の補集合「なし」から、無効系の結果「なし」に向かって矢印をつなぎます。期間内の利用がある場合は、カードの種類の判定処理に進むため、同値分割図「期間内の利用」の同値パーティション「あり」から、同値分割図「カードの種類」に向けて矢印をつなぎます。このように、実装情報を基にして判定処理の順に同値分割図・同値パーティションや結果に向けて矢印をつないでいくことでGIHOZでは下図(図表3)のような原因流れ図で表すことができます。GIHOZでは、マウスのドラッグ&ドロップなどの簡単な操作で原因流れ図を作成できます。

ステップ3 デシジョンテーブルを作成する
ステップ2で作成した原因流れ図を基に、デシジョンテーブルを作成します。原因をデシジョンテーブルの条件記述部へ、結果をデシジョンテーブルの動作記述部に記載します。条件記述部と動作記述部への記載が終わったら、原因流れ図の矢印の流れを追って、デシジョンテーブルの条件指定部と動作指定部を埋めます。GIHOZでは、原因流れ図を作成することで、ワンクリックでデシジョンテーブルの生成を行えます。

GIHOZで生成したデシジョンテーブルは上図(図表4) のようになりますが、下図(図表5)のように補集合の内容を条件記述部に記載しない形の表現方法もあります。その場合は条件指定部に「N」を記載することで、対象の条件に該当しないことを表現できます。

今回の例では6件の組み合わせが作成できましたが、デシジョンテーブルを作成する際のカバレッジ基準はさまざまなカバレッジ基準が考えられます。例えば、矢印や同値パーティションを全て網羅する方法や、有効系や無効系の結果に応じてカバレッジ基準を決める方法などがあり、さまざまなカバレッジ基準が存在します。どのカバレッジ基準を適用するかは、プロジェクトごとにリスク等を考慮して選択する必要があります。
CFD法でデシジョンテーブルを作成した後、テストケースを作成する場合
デシジョンテーブルの規則ごとにテストケースに落とし込みます。今回の例では6件のテストケースを作成できます。例えば、規則1からテストケースを作成すると、「期間内の利用があり、カードの種類がプラチナの場合、キャッシュバックが7%になることを確認する」といった内容のテストケースになります。GIHOZではデシジョンテーブルから下図(図表6)のテストケースをワンクリックで生成できます。

CFD法の注意点
原因流れ図はソフトウェアの処理の流れを表現するため、原因流れ図を作成するには、実装情報を正確に把握することが前提となります。そのため、実装情報がどうなっているかを確認した上でCFD法の適用を検討したり、作成した原因流れ図について、実装情報を把握している人にレビューを依頼したりすると良いでしょう。
まとめ
仕様や実装情報から、同値分割法の考えに基づいて原因と結果を流れ図で整理した原因流れ図を作成し、これに基づいてデシジョンテーブルを作成するテスト技法であるCFD法をご紹介しました。CFD法は、条件判定を行っている機能や処理があるソフトウェアやシステムで、条件判定の処理順序などの実装情報が明確になっている場合に有効です。このような場合に、条件や論理の関係を視覚的に整理でき、網羅性を確保しつつテストの数を抑えられます。
GIHOZを使うと、原因流れ図の作成をドラッグ&ドロップなどの簡単な操作で行え、原因流れ図からワンクリックでデシジョンテーブルやテストケースの自動生成ができるため、簡単にCFD法を活用できます。また、GIHOZでデシジョンテーブルやテストケースを自動生成することで、漏れや誤りが発生することを防げます。CFD法を適用する際には、GIHOZをぜひご活用ください。
この記事は面白かったですか?
今後の改善の参考にさせていただきます!