FP活用研究会

2021年度研究発表

JFPUGからIT業界への提言
テストケース粒度の標準化について
日本ファンクションポイントユーザ会

Copyright © Japan Function Point User Group. All rights reserved.

目次
1. はじめに

2. テストにおける課題
3. 問題提議
4. 各工程におけるテストの目的と内容
5. トランザクションフローテストにおける粒度定義
6. 今後の展望

7. まとめAppendix
1
Copyright © Japan Function Point User Group. All rights reserved.

1. はじめに◼ 本資料はFP活用研究会の2021年度活動の一部を発表するものです。
◼ 2021年度は『FPをどう測定するか』から『FPで何を成すのか』にシフトし、より実践的でITプロジェクトの現場で役に立つ研究を志向し推進して参りました。
◼ 2021年度は約10名程の研究会メンバーにて開発から保守工程まで、FP活用の可能性につき議論を進めてきました。その中で、テストケース粒度の業界標準や指標がない事が、FPや定量データの活用、品質マネージメント高度化の阻害要因のひとつであるとの結論に達しました。
よって、この度、テストケース粒度の一部をFP活用研究会にて定義する事となりました。
◼ 本資料が皆様の課題解決の一助となれば幸いです。
◼ 2022年度以降も、FP活用研究会では引続き参加メンバーを募集しております。
会員の皆様の積極的なご参加をお待ちしております。
（委員会・作業部会メンバー応募／問合せフォームはこちら）
http://www.jfpug.gr.jp/app-def/S-102/wp/?page_id=1731

2
Copyright © Japan Function Point User Group. All rights reserved.

2. テストにおける課題[1/2]◼ エンタープライズアプリケーションを対象とした場合、テスト工程における代表的な課題は以下と考えます。
テストケース
妥当性が不明瞭✓ テストケース（実行数）が必要な量を満たしているのか分からない

テスト項目
妥当性が不明瞭✓ テスト項目（期待結果）が必要な質を満たしているか分からない
結果、テスト実施したにも関わらず、不具合を見逃してしまう

不具合によるテスト遅延✓ 不具合が多くてテストの消化が遅れ、後続のスケジュールに影響

潜在不具合の混入✓ 不具合修正の方法に不備があり、潜在不具合が混入してしまう

再テスト範囲が不明瞭✓ 再テストは（最低限）どこまでやればいいのか分からない

3Copyright © Japan Function Point User Group. All rights reserved.

2. テストにおける課題[2/2]◼ テストの課題は「実施前」と「実施後」に大別できます。
テストケース
妥当性が不明瞭✓ テストケース（実行数）が必要な量を満たしているのか分からない

テスト項目
妥当性が不明瞭✓ テスト項目（期待結果）が必要な質を満たしているか分からない
結果、テスト実施したにも関わらず、不具合を見逃してしまう

不具合によるテスト遅延✓ 不具合が多くてテストの消化が遅れ、後続のスケジュールに影響

潜在不具合の混入✓ 不具合修正の方法に不備があり、潜在不具合が混入してしまう

再テスト範囲が不明瞭✓ 再テストは（最低限）どこまでやればいいのか分からない

テスト実施前の課題

テスト実施後の課題

定量データ活用の観点ではケース数の妥当性が不明瞭な事が最も課題と認識
4
Copyright © Japan Function Point User Group. All rights reserved.

（参考）テストケースとテスト項目◼ テストケースとテスト項目は混同されがちですが、意味合いが異なります。
⚫ テストケースとはテストの手順とテストデータを組み合わせたものであり、テスト実行の最小単位
通常は1つのテストケースで1つ以上のテスト項目を確認⚫ テスト項目とはテストの内容と期待結果の組み合わせのことであり、テスト結果の最小単位
テスト項目に対してテスト実施の手順と利用するデータを決定＜補足＞
テストケースのまとめ方が悪いと、同じテスト項目を何度もテストする羽目になる。それを防ぐためには、テストケースとテスト項目の対応関係を明確にしておき、テスト項目のダブリや漏れをなくすようにしたい。
そのうえで、最小限のテストケースで、より多くのテスト項目を網羅できるように、テストケースを作成することが大切である。
出典：日経XTECH 記事『知っておきたいテストの“イロハ” 』より当方加筆

5
Copyright © Japan Function Point User Group. All rights reserved.

3. 問題提議◼ ケース粒度の業界標準や指標がない事が、FPをはじめとする定量データ活用の阻害要因のひとつと考えます。
テストケース数の妥当性が不明瞭✓ テストケース数（実行数）が必要な量を満たしているのか分からない✓ ケース数の妥当性を判断する基準としてテスト密度があるが、ケース粒度が会社毎、プロジェクト毎にバラバラ
課題の真因✓ テスト密度を外部や自社のリポジトリと比較しても妥当性判断が困難

組織を超えた標準的なテストケースの粒度定義が必要
6
Copyright © Japan Function Point User Group. All rights reserved.

4. 各工程におけるテストの目的と内容◼ 非機能観点のテストに比べて、機能観点のテストは粒度定義が比較的容易です。
単体テスト
（UT）

✓ ソースカバレッジ充足と単機能確認が中心
オンライン処理は分岐条件等を検証し画面や帳票の表示を確認
バッチ処理はジョブネットに組込む前にモジュールの疎通を確認

結合テスト
（IT）

✓ 機能観点のシナリオテストが中心
オンライン処理は画面遷移とトランザクションフローテスト
バッチ処理はトランザクションフローテストが中心

総合テスト
（ST)

✓ 機能観点に加えて非機能観点のテストが加わる✓ 機能テストオンライン処理は業務フローに登場する機能確認中心（≠全機能）
アクターとして登場する他システムとの連携も含む
バッチ処理はサイクルテスト中心
日次に加えて、週次、期次、年次等、処理日付を操作し一定期間の処理結果を確認✓ 非機能テスト
性能（非同期、並列処理含む）、セキュリティ、障害、運用テスト等

機能確認の中心であるトランザクションフローテストに着目し粒度を定義
7
Copyright © Japan Function Point User Group. All rights reserved.

（参考）トランザクションフローテストとは◼ トランザクションフローテストはトランザクションの妥当性を網羅的に確認するテストです。
概 要 ：システムの処理（トランザクション）をフローグラフに表現し、それを網羅するようにテストケースを設計

方 法 ：テスト対象とするシステムの動作（機能）の構造をトランザクションフローに表現し、フロー中の条件分岐や結合点に着目して選択したパスを通るようにテストを実行
効 果 ：トランザクションフローを作成することで、システムの仕様を明確にする効果があり、かつ、その仕様の網羅性を確認可能
留意点：フローのノードやリンクを網羅するだけでは多数の障害を検出することはできない（障害の多くは変則的なパスに潜んでいる）
また、外部システムよりもたらされる障害など、テストで作り出すのが困難なトランザクションもある

出典：ソフトウェア品質知識体系ガイド（SQuBOK）第3版 P.204 より当方抜粋

本資料ではフローグラフをCRUD表で代替した場合のケース抽出をご紹介
8
Copyright © Japan Function Point User Group. All rights reserved.

5. トランザクションフローテストにおける粒度定義◼ ケース粒度を統一するには最小単位に揃える事が最も有効です。
テストの目的✓ 機能横断によるトランザクションの妥当性を検証

粒度定義✓ データアクセスを伴う機能の組合せをテストケースの最小粒度と定義
分解前

テストブロックA
画面1→画面2→画面3→画面4
テストブロックB
画面2→画面3→画面5

テストケース数２

テスト仕様書

分解後
分解

画面1
画面2
画面3
画面2
画面3→→→→→

画面2画面3画面4
画面3画面5

テストケース４

出典：ソフトウエア品質シンポジュウム2018発表資料『派生開発におけるテストケースの第三者検証について』を当方加筆

データアクセスを伴う任意の2機能の組合せをテスト粒度と定義
9Copyright © Japan Function Point User Group. All rights reserved.

（参考）CRUD表を活用したケース算出◼ 機能とデータを組合せを表すCRUD表にてテストケースは抽出可能です。
CRUD表

テストケース
テーブル
A

画面

B

XX登録

C

XX検索

R

YY更新

ＲC

ZZ取消

RUC

抽出

＜TBL A＞
XX登録 →
XX登録 →
XX登録 →

XX検索
YY更新
ZZ取消

＜TBL B＞
YY更新 →

ZZ取消

単純・効率的
標準的ケース漏れなし

C

出典：ソフトウエア品質シンポジュウム2018発表資料『派生開発におけるテストケースの第三者検証について』を当方加筆

CRUD表をテストケースのインプットする場合はPGMと乖離していない事が重要
10
Copyright © Japan Function Point User Group. All rights reserved.

（参考）FPを活用したケース数の補正と2点見積り[1/2]◼ トランザクションはデータの通り道、複数の通り道をもつ機能は分離してカウントするのが望ましいと考えます。
テーブル
A

一般
ユーザ

管理者
ユーザ

CRUD表（トランザクション毎）

テストケース

テーブル

A
画面

B

XX登録C

XX検索（一般）

R

XX検索（管理者）

R

YY更新

ＲC

ZZ取消

RU

テーブル
A

C

抽出

C

参照するテーブルが同じでもデータの状態や権限設定によってデータの抽出条件（SQL）が異なる
場合は別々のトランザクションが発生（ラベル等の軽微なUI変更除く）＜TBL A＞
XX登録 →
XX登録 →
XX登録 →
XX登録 →

XX検索（一般）
XX検索（管理者）
YY更新
ZZ取消

＜TBL B＞
YY更新 →

ZZ取消

出典：ソフトウエア品質シンポジュウム2018発表資料『派生開発におけるテストケースの第三者検証について』を当方加筆

ファンクションポイントにおけるトランザクションファンクション（TF）とデータファンクション（DF）の組合せが真に必要なテストケース
11
Copyright © Japan Function Point User Group. All rights reserved.

（参考）FPを活用したケース数の補正と2点見積り[2/2]◼ 開発見積の検証手法を応用し、テストケース数を複数の方法で見積る事が有効です。
見積方法✓ FPとテスト密度からテストケース数を算出✓ FPにて補正したCRUD表からテストケース及びテストケース数を算出

FPベース

CRUDベースFP

CRUD＋FP

インプット
ケース数
算出方法
実施可能時期

FP

÷

テスト密度

要件定義または基本設計終了時点

CRUD表にトランパタンを追加しTFとDFの組合せから抽出
基本設計または詳細設計終了時点

出典：ソフトウエア品質シンポジュウム2018発表資料『派生開発におけるテストケースの第三者検証について』を当方加筆

テストケース数を複数の方法で検証する事で、精度向上と客観性の確保が期待できる
12
Copyright © Japan Function Point User Group. All rights reserved.

６．今後の展望◼ 2022年度も引き続き定量データの活用、及びその促進にむけた活動を行う予定です。
⚫ テスト粒度は機能テストを中心に更なる標準化を検討していく⚫ 策定した粒度定義が業界標準となるよう、社会へ働きかけていく

13
Copyright © Japan Function Point User Group. All rights reserved.

７. まとめ◼ 提言骨子⚫ FPや定量データをテストで活用するにはテスト粒度を標準化する事が必要⚫ 機能テストは粒度定義が比較的容易⚫ 機能確認の中心であるトランザクションフローテストに着目し粒度を定義
データアクセスを伴う任意の2機能の組合せをテストケースの標準粒度とした◼ 参考⚫ 機能とデータを組合せを表すCRUD表にてテストケースは抽出可能だがデータの状態や権限等により、1機能で複数トランザクションが発生する場合もある⚫ TFとDFの組合せがトランザクションフローテストに真に必要なテストケース⚫ テストケース数を複数の方法で検証する事で、精度向上と客観性の確保が期待できる

14
Copyright © Japan Function Point User Group. All rights reserved.

Appendix◼ 参考文献⚫ 日経XTECH 記事『知っておきたいテストの“イロハ” 』 (2005年)
https://xtech.nikkei.com/it/article/COLUMN/20051102/223936/⚫ ソフトウェア品質知識体系ガイド（SQuBOK）第3版(2020年)より『3.8 テストの技法』 PP.199-213
https://www.juse.or.jp/sqip/squbok/index.html⚫ ソフトウエア品質シンポジュウム2018発表資料『派生開発におけるテストケースの第三者検証について』
https://www.juse.jp/sqip/symposium/archive/2018/day1/files/B2-2_happyou.pdf

15
Copyright © Japan Function Point User Group. All rights reserved.

ThinkTogether!
Copyright © Japan Function Point User Group. All rights reserved.