カバレッジ基準
20.4.1. 最小カバレッジ
TQS 認証のために、プロジェクトは以下の最小カバレッジ基準を満たさなければなりません。
| 項目 | 最小基準 | 説明 |
|---|---|---|
| ライン(Lines) | 80% | 実行されたコード行の比率 |
| ブランチ(Branches) | 70% | 条件分岐(if/else、switch)のカバー比率 |
| 関数(Functions) | 80% | 呼び出された関数の比率 |
| ステートメント(Statements) | 80% | 実行された文の比率 |
- 新規プロジェクトは初期から基準を満たすようにテストを作成します。
- 既存プロジェクトはカバレッジを段階的に向上させますが、新規コードについては基準を必ず満たさなければなりません。
- カバレッジ数値が高くても、意味のないテスト(単純な呼び出しのみのテスト)は認められません。
20.4.2. カバレッジレポート
vitest.config.ts にカバレッジプロバイダーとレポート形式を設定します。
typescript
import { defineConfig } from 'vitest/config'
export default defineConfig({
test: {
coverage: {
provider: 'v8',
reporter: ['text', 'html', 'lcov'],
reportsDirectory: './coverage',
include: ['src/**/*.{ts,vue}'],
exclude: [
'src/**/*.d.ts',
'src/**/*.test.ts',
'src/**/*.spec.ts',
'src/**/index.ts',
'src/types/**',
'src/constants/**',
'src/auto-generated/**',
],
},
},
})| プロバイダー | 特徴 |
|---|---|
v8 | V8 エンジン内蔵カバレッジ、高速、Vitest デフォルト |
istanbul | 精密な計測、広いエコシステム互換性 |
| レポート形式 | 用途 |
|---|---|
text | ターミナルで即時確認 |
html | ブラウザでファイル別の詳細カバレッジを確認 |
lcov | CI ツールおよび外部サービス(SonarQube、Codecov など)との連携 |
- TQS 基準のプロバイダーは
v8をデフォルトとして使用します。 text、html、lcovの 3 種類のレポートをすべて生成することを推奨します。
20.4.3. 除外対象
カバレッジ測定から以下のファイルを除外します。
| 除外対象 | 理由 |
|---|---|
型定義ファイル(*.d.ts) | ランタイムコードではない |
定数ファイル(constants/) | ロジックを含まない値の定義 |
自動生成コード(auto-generated/) | 手動管理の対象ではない |
設定ファイル(vite.config.ts、vitest.config.ts など) | ビルド/テスト設定専用 |
Re-export ファイル(index.ts) | 単純な再エクスポートのみ実行 |
テストファイル(*.test.ts、*.spec.ts) | テストコード自体はカバレッジ対象ではない |
- 除外対象は
vitest.config.tsのcoverage.exclude配列に明示します。 - 除外対象が追加される場合、チーム内で合意を得てから設定ファイルを更新します。
20.4.4. CI 統合
CI パイプラインでカバレッジ閾値未達時にビルドを失敗処理します。
typescript
// vitest.config.ts
export default defineConfig({
test: {
coverage: {
provider: 'v8',
thresholds: {
lines: 80,
branches: 70,
functions: 80,
statements: 80,
},
},
},
})thresholds を設定すると、カバレッジが基準未満の場合に Vitest が異常終了コードを返します。CI パイプラインでこれを検知してビルドを失敗処理します。
yaml
# CI パイプライン例(GitHub Actions)
- name: Run tests with coverage
run: yarn test:coverage
- name: Upload coverage report
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: coverage/thresholdsの値は 20.4.1 節の最小カバレッジ基準と同一に設定します。- カバレッジレポートは CI アーティファクトとして保管し、履歴を追跡します。
- 外部サービス(Codecov、SonarQube など)と連携してカバレッジ推移を可視化することを推奨します。