猫でも使えるソフトウェアのテスト網羅(4):C1カバレッジの弱点とエンジニアの信念:山浦恒央の“くみこみ”な話(87)(3/4 ページ)
ソフトウェアにおけるホワイトボックス・テストの代表格がパス網羅です。パス網羅にもいろいろありますが、条件文の結果が「真」「偽」になる両方をテストする「C1」が広く利用されます。今回はC1パス・カバレッジの長所と短所を確認します。
3. C1カバレッジの利点
C1カバレッジの利点を以下に示します。
- 3.1 テスト量が少ない
C1カバレッジのテスト項目数は、条件文数+1です。これは、非常に重要です。例えば、プログラムにif文が3つあれば、テスト項目は4件にしかなりません。これは、非常に現実的なテスト件数です。もちろん、C1カバレッジ達成が容易と言いませんが、生命を扱う製品や、重大事故に直結するソフトウェア群では、命令文のみを網羅するだけでは十分なテストとはいえないでしょう。そのため、「最低限C1までは……」と考える企業も少なくありません。
C1カバレッジより厳しいC2カバレッジでは、全ての組み合わせをテストしなければなりません。if文が3つあればテスト件数は2の3乗となり、8件になります。if文が10個の場合、C1カバレッジのテスト件数は11件ですが、C2カバレッジでは1024件となります。
いわゆる「計算量問題」で、処理対象の量が増えるとC1カバレッジのように、処理時間が線形に増加する場合とC2カバレッジのように累乗で増加する場合があり、もちろん、線形に増加する方が、圧倒的に簡単です(図3の「C1カバレッジとC2カバレッジのテスト量の比較」を参照)。このあたりもC2カバレッジが敬遠される原因と言えます。
- 3.2 説得力がある
C1カバレッジは、知識が乏しい管理者への説明に有効です。大変悲しいことですが、プロジェクト全体を統括するマネジャーは、カバレッジの考え方すら知らないことが少なくありません(*4)。
そのような人に対し、命令文の実行度合いで考えるC0カバレッジは、説得力が非常に乏しく「実行されてないパスがあるからテスト不足だ!」と一蹴される可能性があります。よって、制御パステストを採用する場合は、指標にはC1カバレッジを用いることを強く推奨します。
一見するとC1カバレッジは万能に見えますが、条件文の中身を考慮していないため、テスト漏れが起こる可能性があります。次節でC1の欠点を解説します。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 猫でも使えるソフトウェアのテスト網羅(3):無料ツールで単体テストを楽に実行しよう
組み込み開発の大規模化により、プログラムテストの重要性が高まっています。パス網羅をベースにする単体テストは困難な作業ではありませんが、ツールを導入することで効率化できます。今回はGcovを用いたテスト手法を紹介します。 - 猫でも使えるソフトウェアのテスト網羅(2):パス網羅の種類と内包する問題点
趣味ならとにかく、ビジネスとしてのプログラミングに「網羅的なテスト」は欠かせません。網羅的なテストの代表的な手法である「制御パス・テスト」の手法について、解説していきます。 - 猫でも使えるソフトウェアのテスト網羅(1):基本のC0パス・カバレッジ
ソフトウェアのバグが全て取れたか?は開発における最大の関心事でしょう。網羅的テストはもちろんですが、その前に単体テストが必要です。代表的な手法である「制御パス・テスト」の基礎を紹介していきます。 - 統計の食わず嫌いを直そう(その11)、5分で残存バグ数を予測する方法
「回帰分析」は統計分析の有力な手法であり、Excelさえあれば5分で統計的に根拠のある数字を出せます。今回はExcelのツールを使って簡単に残存バグ数を予測する方法を解説します。 - 統計の食わず嫌いを直そう(その10)、ワインを飲まずに品質を予測する方法
統計アレルギーの解消には、身近な分野で考えてみることも大切です。今回は「ワインを飲まずに、ワインの品質を予測する方法」を例に統計に触れてみましょう。