検索
連載

猫でも分かるソフトウェアのテスト網羅(5):C2カバレッジはエベレスト登山か?山浦恒央の“くみこみ”な話(88)(3/3 ページ)

「制御パステスト」をテーマとする「猫でも分かるソフトウェアのテスト網羅」シリーズの第5回では「C2カバレッジ」を取り上げます。C1より網羅性が高いので、高信頼性を求めるソフトウェア開発の管理者や発注者に好まれますが、実際にテストを行うプログラマにとってエベレスト登山並みの大変さになる可能性もあるので注意が必要です。

Share
Tweet
LINE
Hatena
前のページへ |       

4.C2カバレッジの限界

 筆者はソフトウェア工学の授業で、学生に制御パステスト(C0、C1、C2)を教えています。講義後、一部の学生は次のような錯覚を起こします。

  • 生徒A:「C2カバレッジまでテストをすれば、完璧なソフトウェアが作れる」
  • 生徒B:「C2を100%網羅すれば、どんなバグでも検出できる」

 上記のような錯覚を覚えても無理はありません。C1と比べると、C2カバレッジは非常に網羅的で、理論上完璧だと思われます。現実には以下の大きな問題があります。

(1)テスト項目数が爆発的に増大し、テストしきれない

 C2カバレッジのテスト項目数は、A4用紙を折るように、非線形的に増加します。よって、テスト項目を自動生成できないと、実施するのは困難です。

(2)全てのコードを結合すると、C2でテストしきれない

 本コラムでは単体テストに焦点を当てているため、結合したプログラムを想定していません。プログラムを結合すると、さらに組み合わせが爆発的に増加し、C2を100%網羅することは非現実的です。

(3)手ではできない(カバレッジ・ツールが必須)

 C2を網羅する際には、プログラムの構造上、網羅できない場合が必ずでてきます。パス網羅を実施するなら(C0でも)、必ずデバッガを導入しましょう。

(4)ブラックボックステストも併用する必要がある

 筆者は、テストの優先順位は、ホワイトボックステストよりブラックボックステスト(同値分割、境界値分析)の方が圧倒的に高いと考えます。C2を100%網羅することに工数をかけるより、ブラックボックステストの方が、時間がかからず、効率よくバグを検出できます。

(5)ループを考慮していない

 制御パステストでは、通常、ループの網羅は考慮しません。1回ループすればC2を満足する場合がほとんどです。C2を満足してもループに関するバグは検出困難です。ループのテストでは、ループの回数が、「0回」「1回」「最大−1回」「最大回」「最大回+1」をテストします。「最大回+1」は、パッチを当てて無理やりループさせ、それでも異常動作をしないかを確認します。

(6)仕様のバグが検出できない

 特に、機能の抜けを摘出できないのは、パス・カバレッジに共通する致命的な問題です。

(7)デッドコードを検出できない

 プログラムを見ると、実際には使わない変数を見掛けることがあります。そんなデッドコードもC2では検出困難です。

(8)割り込みやマルチタスクのバグは検出できない

 組み込み系ソフトでは、割り込みやマルチタスクのバグが最も厄介です。そのようなバグも検出困難です。

 以上から、C2カバレッジを100%網羅することは非常に困難である上、「労多くして効少なし」となります。C2を実施するなら、重要な箇所に対し、ピンポイントで適用すべきです。

 ソフトウェア開発の現場には、「C2カバレッジ最強説」が根強くはびこっています。プロジェクトマネジャーや、発注先の顧客が、開発計画書や契約書に、「C2を100%網羅すること」と書いてあれば、全力で反対しましょう。反対する根拠として、本コラムを使ってください。

5.終わりに

 C2カバレッジを100%網羅することは、理論的には可能ですが、素人がエベレストに登る以上に大変です。万が一、達成できても、工数の割にバグは見つかりません。C2カバレッジを適用する際は重要な箇所に絞り、他の重要な機能をしっかりテストしましょう。人生はC2を100%網羅するほど長くありません。

 C2カバレッジには、いろいろな誤解があります。次回は、4.で説明したC2カバレッジの限界について、より深く考察します。

【 筆者紹介 】
山浦 恒央(やまうら つねお)

東海大学 大学院 組込み技術研究科 非常勤講師(工学博士)


1977年、日立ソフトウェアエンジニアリングに入社、2006年より、東海大学情報理工学部ソフトウェア開発工学科助教授、2007年より、同大学大学院組込み技術研究科准教授、2016年より非常勤講師。

主な著書・訳書は、「Advances in Computers」 (Academic Press社、共著)、「ピープルウエア 第2版」「ソフトウェアテスト技法」「実践的プログラムテスト入門」「デスマーチ 第2版」「ソフトウエア開発プロフェッショナル」(以上、日経BP社、共訳)、「ソフトウエア開発 55の真実と10のウソ」「初めて学ぶソフトウエアメトリクス」(以上、日経BP社、翻訳)。


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る