テストカバレッジの目標値はどれくらいの値が良いのか
テストカバレッジの現状について記事を漁ったので、リンクをメモしておく。
【参考】
Google Testing Blog: Code Coverage Best Practices
テスト駆動開発で品質は上がるのか。Googleの事例などを参考に考察。 - サックルMAGAZINE
Ericssonの『ユニットテストカバレッジの神話』を読んでみる - ソフトウェアの品質を学びまくる2.0
コードカバレッジでのブランチカバレッジとデシジョンカバレッジは何が違う?|Tsuyoshi Yumoto|note
ホワイトボックステストの必須知識! コードカバレッジをご紹介! | Qbook
カバレッジ(網羅率)分析とは | ソフトウェアの検証の種類 | テクマトリックス株式会社
過信は禁物!コードカバレッジの種類と落とし穴 | Qbook
グーグルはあれほど多くのソフトウェアのテストをどのように行っているのか? - Publickey
テストカバレッジ100%を追求しても品質は高くならない理由と推奨されるカバレッジの目標値について - Qiita
Analyzing statement coverage at Google
テスト自動化は品質向上に直接的に役立つ。
特に、既存機能への回帰テストでは重要な役割を果たす。
Redmineでは、テストカバレッジの一覧が下記で公開されている。
全てのソースが100%ではないが、いつでも回帰テストを実行できるからこそ、高品質を維持できて、10年以上も世界中の開発者に利用されてきたのだと思う。
では、テストカバレッジの目標値はどれくらいの値が良いのか?
ほどほどによい目標値はどれくらいなのか?
GoogleTestBlogではこんな説明がある。
・Googleでは、60%を「許容可能」、75%を「推奨」、90%を「例示的」という一般的なガイドラインを提供しています。
・90%のコードカバレッジから95%に到達する方法に執着するべきではありません。
・プロジェクト全体で90%を超える目標は価値がない可能性が高いですが、コミットごとのカバレッジ目標である99%は妥当であり、90%は適切な下限しきい値です。
Analyzing statement coverage at Googleによると、
「C0(命令網羅, Statement Coverage) 目標値 85%+」らしい。
Martin Fowler氏のテストカバレッジによると、
「カバレッジ(C0?、C1?)の目標値 85% - 99%」らしい。
テストカバレッジ100%を追求しても品質は高くならない理由と推奨されるカバレッジの目標値について - Qiitaでは「クリティカルなコードではない限り、カバレッジ(C0 / C1)の目標値は 85%程度 に設定すべきである。」とあった。
85%程度が一つの閾値のようだが、定理や法則のようにどこでも使えるものではない。
テストカバレッジの目標値は高ければ良いわけでもない。
しょせん単体テストレベルなので、元々の機能設計のミス、要件漏れは発覚できない。
C2のコンディションカバレッジでは、禁則になる組み合わせも多いから、意味ある組合せだけを特定して、大量の組合せのパスをテストするのは、工数の割に無駄も多い。
今なら、テストカバレッジの目標値を指定したら、AIでテストコードを生成して、実際に回帰テストを実行して、目標値以上になるように実現してくれるのではないか、と勝手に夢想している。
| 固定リンク
« マッキンゼーの報告書「2030 日本デジタル改革」が手厳しい | トップページ | 組込ソフトウェア開発のための3部作「構造化モデリング」「オブジェクト指向モデリング」「リバースモデリング」を読んでいて楽しい »
「Redmine」カテゴリの記事
- Redmine AI HelperプラグインはRedmineをAI駆動プロジェクト管理に変える可能性を秘めている #Redmine(2025.12.31)
- 第29回東京Redmine勉強会の感想~今話題のテーマはJTC運用とAIによるプロマネ作業支援 #redminet(2025.11.09)
- 第22回 Redmine大阪の感想 #RedmineOsaka(2025.09.21)
- RedmineJapan vol.4の感想part1~Redmine AI HeplerプラグインはRedmineのナレッジ活用を強化してくれる #RedmineJapan(2025.07.31)
- Jiraの機能はTracに似ている気がする #redmine(2025.06.01)
「ソフトウェア工学」カテゴリの記事
- 自動車業界におけるA-SPICE・機能安全・サイバーセキュリティの規格に対応したプロセス改善とは何か?(2026.02.15)
- Jiraの機能はTracに似ている気がする #redmine(2025.06.01)
- チームトポロジーの感想~大規模アジャイル開発でも組織構造は大きく変化する(2025.01.01)
- Redmineは組織のナレッジ基盤として実現可能なのか~島津製作所の事例を読み解く #redmineT(2024.12.29)
- アーキテクチャ設計はベストプラクティスを参照するプロセスに過ぎないのか?~Software Processes are Software, Too(ソフトウェアプロセスもまたソフトウェアである)(2024.09.22)
「Agile」カテゴリの記事
- SAFeはScrumと全く異なるアジャイル開発プロセスだ(2026.02.01)
- 第29回東京Redmine勉強会の感想~今話題のテーマはJTC運用とAIによるプロマネ作業支援 #redminet(2025.11.09)
- RedmineJapan vol.4の感想part1~Redmine AI HeplerプラグインはRedmineのナレッジ活用を強化してくれる #RedmineJapan(2025.07.31)
- Jiraの機能はTracに似ている気がする #redmine(2025.06.01)
- チームトポロジーにおける4チームのインタラクションをUMLで整理してみた(2025.01.12)


コメント