連載
» 2016年09月07日 09時00分 公開

山浦恒央の“くみこみ”な話(87):猫でも使えるソフトウェアのテスト網羅(4):C1カバレッジの弱点とエンジニアの信念 (3/4)

[山浦恒央 東海大学 大学院 組込み技術研究科 非常勤講師(工学博士),MONOist]

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カバレッジが敬遠される原因と言えます。

photo 図3. C1カバレッジとC2カバレッジのテスト量の比較
  • 3.2 説得力がある

 C1カバレッジは、知識が乏しい管理者への説明に有効です。大変悲しいことですが、プロジェクト全体を統括するマネジャーは、カバレッジの考え方すら知らないことが少なくありません(*4)。

 そのような人に対し、命令文の実行度合いで考えるC0カバレッジは、説得力が非常に乏しく「実行されてないパスがあるからテスト不足だ!」と一蹴される可能性があります。よって、制御パステストを採用する場合は、指標にはC1カバレッジを用いることを強く推奨します。


*4:筆者が出会った「最も困ったプロジェクト・マネジャー」は、「パス網羅とは、全条件の全ての組み合わせを網羅するので、100行のソースコードでも100万年かかる」と信じていたアメリカ人でした(こう盲信しているエンジニアは意外にたくさんいます)。「C1カバレッジなら、2週間でできる」ことを説得するのに2週間もかかりました。その間、時間がもったいなくてイライラしました。

 一見するとC1カバレッジは万能に見えますが、条件文の中身を考慮していないため、テスト漏れが起こる可能性があります。次節でC1の欠点を解説します。

Copyright © ITmedia, Inc. All Rights Reserved.