その理由
コードカバレッジとは、テスト手法の一つで、どのコードがテストされているかを知らせるもので、パーセントで表示されます。
コードカバレッジは、コードの総行数のうち、全体の何割がテストされているのかを把握することができます。
また、テストを書くことはとても大変です。しかし、コード変更があると、せっかく書いたテストコードも変更内容をテストできているかがわかりません。
このストレスから、共同創業者のイーライ氏と私は、テスト駆動開発で解決したいと思うようになりました。
私たちは、(まだ)存在していないものを作ることが好きです。
また、ほとんどの開発者はエラーが発生するコードのテスト状況を見たいだろうと思っていました。
しかし、SentryがCodecovを買収したとき、次のような反応が最も多かったです。
それは私たちもとても感じていました。
Codecovを使ってコードレビューしても、デプロイ後の作業にはあまり役立ちませんでした。
長い間、ユーザー/顧客向けの製品に携わる開発者は、”OK、でも次の問題は何?”ということに向き合ってきました。
その問題は、おおよそ次のように表現されます。
- アプリでエラー・不具合内容を受け取る
- エラー周辺のデータを開く(アプリケーションのパフォーマンス監視と例外処理) “よし、でも次はどうする?“
- 別画面で自分のIDEを開く
- 2つの画面を見渡し、コードのメンタルモデル(価値観やイメージのこと)を構築する。
- そのコードにテストがあるのなら、根本的な原因を修正する方法を考える。
- 必要であれば、今後同様のエラーが発生するのを防ぐために、基となるソースコードを変更し、テストを記述・編集する。
さらに一歩踏み込むと…
- もしエラーが発生するコードがテストされていない場合、次のステップは、このケースを中心にテストを書くことかもしれません。
または
- もしエラーが発生するコードがテストされていた場合、次のステップとして、問題のテストとコードのロジックとの関連性を調査します。例えば、テストケースに見落としがないかを確認します。
SentryのスタックトレースにCodecovを導入することは、本番前とデプロイ後のデータ連携を実現する最初の取り組みです。
これにより、問題が発生した際のデバッグやパッチ適用がより迅速かつ容易になります。
何を?
ひとことで言うとCodecovのSentry連携を使えば、Sentry Issueのスタックトレースでエラーの原因となる未テストのコードを直接確認することができます。
この機能を使うことで、さまざまなユーザー操作を考えたり、コードを手動で分析したりする必要はもうなくなります。
SentryにCodecovを導入すれば、テストするべき優先箇所を正確に把握できるので、時間を無駄にすることなく、信頼性の高いコードを維持することができます。
テストカバレッジを改善するために、数ヶ月に一度「カバレッジ週間」を設けて、コードのテストを改善していました。しかし、SentryとCodecovの連携により、コードを分析し、テストカバレッジが必要な箇所を考えることはなくなりました。さらに、Sentryが取り組むべき箇所を正確に教えてくれるので、テストカバレッジの構築に費やしていた時間を約50%ほど削減できました。
– アレックス・ナサネイル(技術担当ディレクター)@vectare.co.jp
Codecovの使用方法
前提条件:
Sentryの場合
SentryのGitHubインテグレーションをインストールし、Codecovにテストカバレッジデータがあれば、使い始められます。
また、GitHubインテグレーションにCode Mappingsをセットアップする必要もあります。これはテストカバレッジを表示するためのソースコードファイルを把握するのに必要です。
GitHubを使われていない方は、GitLabとBitbucketは対応中ですので、しばらくお待ちください。
Codecovの場合
Codecovにサインアップするだけです。一度アカウントを取得すれば、テストされていないコードが本番環境でエラーを引き起こしている箇所をワンクリックで確認できます。
コードカバレッジは初めてですか? 大丈夫です。詳しくはこちらをご覧ください。
SentryとCodecov – スタックトレースでコードカバレッジを即座に確認できるようになります。
- 最も簡単な方法 – 全く何もする必要はありません。両方のサービスでセットアップされたときに、自動連携を有効にする日次ジョブを実行します。
- 簡単な方法 – すぐにでも始めたい場合は、設定ページに移動し、「コードカバレッジインサイトの有効化」をオンにしてください。
最後に
ソフトウェア開発には、時間がかかる複雑な作業などが多く、開発者を悩ませるような問題があります。
とはいえ、テストカバレッジの低さとビジネスに影響を与えるインシデントの間には、直接的な関係があることも分かっています。
開発者がカバレッジの不足を補い、テストされていないコードで発生する深刻な問題を解決するのに役立つソリューションは、今まで1つもありませんでした。
SentryとCodecovは、より強い連携、より多くの機能、そして開発環境とポストデプロイのデータを連携するツールを構築し、エラーの特定および修正をより迅速かつ容易にできることを目指しています。
さらなるアップデートにご期待ください。
また、GitHub、Twitter、Discordで私たちと連絡を取ることもできます。
お気軽にご連絡ください。
Sentryは、アプリケーションコードの健全性を監視するために不可欠です。エラートラッキングからパフォーマンスモニタリングまで、開発者は、フロントエンドからバックエンドまで、アプリケーションをより明確に把握し、より迅速に解決し、継続的に学習することができます。
Sentryは、世界中の350万人以上の開発者と85,000以上の組織に愛され、Disney、Peloton、Cloudflare、Eventbrite、Slack、Supercell、Rockstar Gamesといった世界的有名企業の多くにコードレベルの監視機能を提供しています。
毎月、世界中で人気のサービスやアプリケーションから、数十億件の例外を処理し続けています。
IchizokuはSentryと提携し、日本でSentry製品の導入支援、テクニカルサポート、ベストプラクティスの共有を行なっています。Ichizokuが提供するSentryの日本語サイトについてはこちらをご覧ください。またご導入についての相談はこちらのフォームからお気軽にお問い合わせください。