テストカバレッジ
コード規模とテストの実装速度から、カバレッジ向上に必要な工数と効果を試算します。
テストカバレッジツール
計算式と考え方
現在のカバレッジは「カバー済み行数 ÷ 総行数」です。50,000行のうち32,000行なら64.0%になります。目標80%に必要な行数は50,000×80%-32,000=8,000行です。C0基準では1時間あたり150行の実装として約53.3時間、時間単価6,000円で約32万円かかります。未テスト部分の不具合密度を千行あたり3件とし、テストで6割を検出できると仮定すると8,000行から約14.4件の抑止が見込めます。リリース後の修正費用15万円で換算すると約216万円分となり、投資に見合う計算です。
カバレッジの基準と水準
| C0(命令網羅) | 全ての命令を1回は通す。最も達成しやすく、公表される数値はこの基準が多い |
|---|---|
| C1(分岐網羅) | 条件分岐の真と偽の両方を通す。C0の1.5〜2倍の工数がかかる |
| C2(条件網羅) | 複合条件の組み合わせを網羅する。安全性が問われる領域で求められる |
| 目安の水準 | 70%が下限、80〜90%が目標とされることが多い。100%は費用対効果が急激に落ちる |
テストカバレッジの詳しい解説
テストカバレッジは、テストコードが製品コードのどれだけを実行したかを示す指標です。測定が自動化しやすく数値で比較できるため、品質管理の入口としてよく使われます。ただしこの数値が示すのは「実行されたか」であり、「正しさが確認されたか」ではありません。戻り値を検証しないテストでもカバレッジは上がるため、数値だけを目標にすると実態を伴わない結果になります。水準の目安としては、70%を下回ると変更時の安心感が得られにくく、80%から90%が目標として設定されることが多い水準です。100%を目指すと費用が急激に増えます。理由は、残りの数%が到達しにくい例外処理や環境依存の分岐に集中しているためで、そこを埋めるために大量のモックを用意することになり、テスト自体が壊れやすくなります。基準の違いも工数に直結します。C0は全ての命令を1回通せば満たされますが、C1は分岐の真と偽の両方を通す必要があり、実装量はおおむね1.5倍から2倍になります。複合条件の組み合わせまで網羅するC2はさらに増え、航空や医療機器のように安全性が厳しく問われる領域で求められます。自社のサービスにどの基準が必要かを決めないまま数値を追うと、労力の配分を誤ります。効果が大きいのは、コード全体を一律に上げることではなく、対象を選ぶことです。変更頻度が高い箇所、過去に障害が発生した箇所、金額計算や権限判定のように誤りの影響が大きい箇所を優先すると、同じ工数でも防げる不具合の数が変わります。逆に、設定値の受け渡しだけを行うコードや自動生成されたコードは、カバレッジを上げても得られるものが少ない領域です。テストの保守費用も見落とされがちです。テストコードは製品コードと同じく保守の対象であり、仕様変更のたびに書き換えが必要になります。実装の詳細に依存したテストを大量に持つと、リファクタリングのたびに大量の修正が発生し、変更を妨げる要因に転じます。振る舞いを対象にしたテストを中心に据えると、この負担は軽くなります。指標としての使い方も工夫できます。全体の絶対値を目標にするより、新規に追加または変更した行のカバレッジに下限を設ける運用のほうが、既存コードの負債を抱えたままでも改善が進みます。数値が下がったときに原因を確認する仕組みを持つことが、数値そのものより有効に働きます。
業界・現場での使い方
工数の見積
目標カバレッジに到達するために必要な時間と費用を算出します。
投資判断
抑止できる不具合の修正費用と実装費用を比較します。
基準の選択
C0とC1で工数がどれだけ変わるかを確認します。
よくある間違い・注意点
- カバレッジの数値だけで品質を判断する — 戻り値を検証しないテストでも数値は上がります。何を確かめているかの確認が必要です。
- 100%を目標にする — 最後の数%は到達困難な分岐に集中し、費用対効果が急落します。80〜90%が現実的な水準です。
- テストの保守費用を計算に入れない — 実装の詳細に依存したテストは変更のたびに修正が必要になり、開発を遅らせます。
関連する規格・法規
- 業界標準
- ISO/IEC規格
※本ツールは公的基準に基づく参考計算です。実際の設計・施工・法令適用は最新の告示・規格および所轄官庁の判断に従ってください。
よくある質問(FAQ)
何%あれば十分ですか?
70%が下限、80〜90%が目標とされることが多い水準です。対象領域の重要度により異なります。
C0とC1のどちらを測るべきですか?
一般的な業務システムではC0を基準に、重要な分岐でC1を確認する運用が現実的です。
カバレッジが高ければバグは減りますか?
相関はありますが、テストの検証内容が伴わなければ効果は限定的です。