コードカバー率とは
コードカバー率は、単体テストがどれだけの部分のコードをチェック(カバー)しているかを示す数字です。例えば、100行のコードがあって、単体テストがそのうちの75行をチェックしていれば、カバー率は75%です。
コードカバー率の重要性
コードカバー率が高いということは、そのコードの大部分がテストによって検証されていることを意味します。これにより、コードの各部分が期待通りに動作するかどうかを確認できるため、バグや問題を早期に検出しやすくなります。具体的には、高いカバー率を持つコードは、多くのシナリオや条件下でテストされているため、異常な動作やエラーを引き起こす可能性のある箇所が少なくなります。
逆に、カバー率が低いと、多くのコードの部分がテストされていないことを示しています。これは、未検証のコードの部分に潜む潜在的なバグや問題を見逃すリスクが高まることを意味します。テストがカバーしていない部分は、実際の運用時に予期しない問題を引き起こす可能性があり、それがシステムの信頼性や安定性を低下させる要因となります。
Salesforceにおけるカバー率要件
Salesforceでコードを本番環境に移行するためには、以下の2つの要件を満たす必要があります。
- 各Apexトリガーのカバー率が最低でも1%であること
-
この要件は、Apexトリガーごとに評価され、1%未満のカバー率のトリガーがある場合、デプロイは失敗します。
- ApexクラスとApexトリガーを合わせた全体のカバー率が75%以上であること
-
この要件は運用組織全体で評価され、例えば1つのApexクラスが0%のカバー率であっても、全体のカバー率が75%以上であればデプロイが可能です。
具体例
全体のコードカバー率としては、コード全体の75%(3/4)以上がテストによってチェックされている必要があります。一方、Apexトリガー(特定のイベント発生時に実行されるコード)は、たとえ1行だけでもテストでカバーされていない場合、そのトリガーの存在によりコードの本番環境への移行が許可されません。
例:10個のApexクラスが存在し、そのうち9個が100%のカバー率を持ち、残りの1つが0%のカバー率であった場合、全体のカバー率は90%となります。この場合、全体のカバー率の要件は満たされています。しかし、もし1つのApexトリガーがテストで全くカバーされていない(0%のカバー率)場合、このトリガーがテストされていないだけで、本番環境への移行ができなくなります。
まとめ
Salesforceでの本番環境へのコード移行は、各Apexトリガーのカバー率が1%以上かつ、全体のカバー率が75%以上である必要があります。これはシステムが安定して動くことを確認するための基準となっています。
コメント