概要
プログラミングにおいて、テストカバレッジはコードの品質を保証する重要な指標の1つです。特に、大規模なプロジェクトや多くの開発者が関わるプロジェクトでは、変更が頻繁に行われるため、新たなコードが既存のテストによって適切にカバーされているかを確認することが不可欠です。
このブログポストでは、undercover gemを使用して、プルリクエスト(PR)毎にDiffカバレッジを計測し、継続的インテグレーション(CI)で監視する方法について解説します。
背景
プロジェクトにアサインされた際、テストカバレッジの低さがバグの多さに直結していることに気づくことは珍しくありません。テストカバレッジを上げることは、バグを減らし、ソフトウェアの品質を向上させるために重要です。しかし、Simplecovだけでは、全体のテストカバレッジしか測定できず、変更点に対するカバレッジを把握できません。これでは、新たなコードが適切にテストされているかを確認することが困難です。
ここで役立つのが、undercover gemです。このgemを使用すると、PR毎に変更されたコードに対するテストカバレッジ、すなわちDiffカバレッジを計測できます。これにより、CIツール内での監視が可能になり、新しいコードが十分にテストされていることを保証できます。
Diffカバレッジを計測することの利点は、開発者が新しいコードに対するテストを怠らないように促すことです。また、レビュアーがコードレビューする際に、テストが適切に行われているかを確認するための指標としても機能します。さらに、テストカバレッジを徐々に上げることで、プロジェクト全体の品質を向上させることができます。
設定方法
undercover gemを使ったDiffカバレッジの計測方法は以下の通りです。
Gemfileにundercoverを追加し、bundle install
を実行します。
undercoverが対応しているのはLCOV形式なので、simplecov-lcovも一緒にインストールします。
|
|
次にsimplecovの設定を追加します。
|
|
最後に、CIツール(今回はGitHub Actions)の設定ファイルに、PRが作成された際にundercoverを実行するステップを追加します。 基本的にはフューチャーブランチでPRを作成するので、mainとのDiffカバレッジを取得するように設定します。
|
|
PRがマージされる前に、undercoverが生成するレポートを確認し、Diffカバレッジが十分であることを確認します。
まとめ
undercover gemを導入することで、PR毎に新たに追加または変更されたコードがどの程度テストによってカバーされているかを正確に把握できるようになりました。これにより、テスト漏れが発生するリスクを減らし、コードの品質を継続的に向上させることができます。また、開発者は自分のコードが十分にテストされているかを自己確認できるため、品質意識の向上にも寄与します。