連載
» 2016年11月17日 11時00分 UPDATE

山浦恒央の“くみこみ”な話(89):猫でも分かるソフトウェアのテスト網羅(6):パス・カバレッジの王者の意外な弱点 (1/3)

「制御パステスト」をテーマとする「猫でも分かるソフトウェアのテスト網羅」シリーズの第6回では、前回に引き続き「C2カバレッジ」を取り上げます。パス・カバレッジの王者ともいわれる「C2カバレッジ」ですが弱点がないわけではありません。

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

1.はじめに

百獣の王 ※写真はイメージです

 ホワイトボックス・テストの王様がパス網羅です。パス網羅の中でも、全ての命令語を実行するにすぎないC0カバレッジ、条件文の真と偽の両方をテストするだけのC1網羅に比べ、条件文の真と偽の全ての組み合わせをテストするC2カバレッジは、パス網羅界の帝王のように最高レベルと思われているようです。ソフトウェア開発には、いろいろな開発方法や品質保証法がありますが、全てに利点と欠点があります。筆者には、C2カバレッジは、実力以上に評価が高い検証技法のように思われてなりません。

 ソフトウェアのテストの最も難しいところは、「どこまでテストすればよいか」の明確な目標が定まっていないことです。やろうと思えば、テストせずに出荷できますし、がっちりテストしても、リリース後に不具合が起こる可能性はゼロではありません。

 ソフトウェアには、いろいろなテストがありますが、C0、C1、C2カバレッジのような制御パス・テストの利点は、分岐や命令文の網羅を定量的に把握できるため、テスト量が明確なことです。

 前回は、制御パステストの網羅基準の1つであるC1カバレッジとC2の概要と、その限界を解説しました。C1カバレッジは、プログラムの「分岐」と「命令文」は少なくとも1回は実行可能で、ある程度の網羅的なテストができます。C2カバレッジは、さらに、条件文を組み合わせます。

 C2は、C1と異なり、条件文の中身をテストするため、非常に網羅的なテストができますが、以下の限界があります。

  1. テスト項目数が爆発的に増大し、全てのテストを実施できない
  2. C2は、単体テストでは可能かもしれないが、結合した全コードはテストできない
  3. デバッグ用ツールが必須
  4. ブラックボックス・テストも併用する必要がある
  5. ループを考慮していない
  6. 仕様のバグを検出できない
  7. デットコードを検出できない
  8. 割り込みやマルチタスクのバグは検出できない

 これらを少し踏み込んで考えると、C2カバレッジ、というより制御パステスト自体の限界が理解できるかと思います。本コラムでは、特に重要と思われる上記の1.〜4.の4つの欠点について考えます。

2.C2カバレッジの欠点

 過去、さまざまなソフトウェアの開発技法や検証技法が提案されてきましたが、限界や欠点のないものは存在しません。特に、検証技法でのC2カバレッジは、その典型例でしょう。ソフトウェア開発において、C2カバレッジは、パス網羅の中でも圧倒的に強い支持を受けているようです。ただし、筆者は、今まで多くのエンジニアと話す機会がありましたが、実際に、テスト終了条件をC2カバレッジ100%としている組織をあまり聞いたことがありません。使わないのは、何らかの欠点や限界が存在するためです。以降、上記に示した1.〜4.の欠点を考察します。

       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.