はじめに
Jestテストを実行して、カバレッジレポートを出力しました。
カバレッジレポートの見方と活用の仕方を、備忘録として記録したいと思います。
カバレッジレポートとは?
テストがどの程度のコードをカバーしているかを示すものです。各行が実際にテストで実行されたかどうかを測定し、未カバーの部分を特定するのに役立ちます。このレポートをもとに、テストの改善が必要な部分を見つけることができます。
実際に出力したものがこちら⇩
レポートの基本構成
- File: テスト対象のファイルのパスとファイル名
-
% Stmts: ステートメントカバレッジ (Statements)
- テストで実行されたコード内の命令文の割合
- if や return のような命令文がテストされた割合
-
% Branch: 分岐カバレッジ (Branches)
- 条件分岐のカバー率を表す
- if や switch などの分岐で、すべてのパス(条件が真の場合も偽の場合も含む)がテストされているかを示す
-
% Funcs: 関数カバレッジ (Functions)
- 関数やメソッドがテストで実行された割合
-
% Lines: 行カバレッジ (Lines)
- 実行されたコード行の割合
- コードのどの行が実行されたかを示す
-
Uncovered Line #s: テストされていない行番号のリスト
- このリストに載っている行はテストでカバーされていないため、追加のテストが必要
ふむふむ、、、ということは
各列の解釈:
-
All files:全体のカバレッジ
- テストされているステートメントの割合が 74%、
- 条件分岐のカバレッジが 64.28%、
- 関数は 90.9%、
- 行は 72.66%
-
context/logger.ts と prisma/index.ts:
- 100% カバレッジです。すべてのステートメント、分岐、関数、行がテストでカバーされています
-
router/categories.ts:
- ステートメントのカバレッジが 57.69%、分岐のカバレッジが 14.28% とかなり低めです。特定の分岐がほとんどテストされていないことがわかります
- Uncovered Line #s 列テストされていない行番号 (14-16, 30-32, 47, etc.) に対するテストを追加する必要があります
-
router/transactions.ts:
- ステートメントカバレッジが 79.72%、分岐カバレッジが 78.57%
- これも、特定の行 (22-24, 53, etc.) がカバーされていないので、追加のテストが必要です
改善ポイント:
分岐カバレッジが低いファイル (router/categories.ts など) は、特に if 文や switch 文の分岐条件に対するテストが不足しています。分岐のすべてのケースをテストするようにテストケースを追加する必要があります。
テストされていない行がリストアップされている場合、その行のコードに対するテストが不足しているので、追加のテストを書くことが推奨されます。
終わりに
今回は、トランザクションの処理機能に関する処理を重点的にテストしたため、カテゴリーのCRUD処理は低めという結果でした。
重点的に確認するべき機能と時間の制約を考慮して、保守性を高めつつ、迅速な実装ができるように意識したいです。
最後まで、読んでいただき、ありがとうございました!