Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Railsでエンドポイントごとのテストカバレッジを測定する / Measuring Test Coverage per Endpoint in Rails

Railsでエンドポイントごとのテストカバレッジを測定する / Measuring Test Coverage per Endpoint in Rails

Railsでエンドポイントごとのテストカバレッジを測定する話です。

以下リンク

Railsアップグレードを楽にする取り組み 〜社内向け管理画面編〜
https://tech.timee.co.jp/entry/2023/12/05/000000

Timee Advent Calendar 2023
https://qiita.com/advent-calendar/2023/timee

今回作ったスクリプト
https://gist.github.com/euglena1215/61f8e400b98e8a37d50232d007663a18

ChatGPT 先生の履歴
https://chat.openai.com/share/0cb3ce7d-36f8-4b71-af04-b01b177a22c2

Shintani Teppei

December 07, 2023
Tweet

More Decks by Shintani Teppei

Other Decks in Programming

Transcript

  1. 自己紹介 新谷 哲平(@euglena1215) • 株式会社タイミー • バックエンドエンジニア • omotesando.rb 参加5回目

    • マリオRPGの連続ジャンプ30回超えないので 誰かコツを教えてください
  2. まずは元々 simplecov gem で計測していた Code Line Coverage を指標として 考えることに。 指標その1:Code

    Line Coverage Code Line Coverage はこういったやつ。 テスト中に実行されたコードと実行されていない コードを区別し、実行された割合を算出する。
  3. まずは simplecov gem で計測していた Code Line Coverage を指標として考え ることに。 しかし、ActiveAdmin

    においては問題があることがわかった。 指標その1:Code Line Coverage
  4. なるべくシンプルな方法で Endpoint Coverage を集計してみる。 実行ステップ 1. rails routes 相当の情報を取得 2.

    spec/requests/* ファイルを読み込みルーティングに対応する describe 句 を抜き出す 3. 1.と2.で得られたデータを組み合わせて、テストされているエンドポイント ・テストされていないエンドポイントを分類する 4. 割合を算出する 実現方法
  5. まとめ • Rails アップグレードを楽にするために社内向け管理画面のテストの信頼性 を上げたい • テストの信頼性の指標として、今回のケースでは Code Line Coverage

    より も Endpoint Coverage の方が良いと判断 • 実際に集計してみた結果、確かに社内向けとそれ以外では Endpoint Coverage に2倍以上の開きがあることがわかった
  6. まとめ • Rails アップグレードを楽にするために社内向け管理画面のテストの信頼性 を上げたい • テストの信頼性の指標として、今回のケースでは Code Line Coverage

    より も Endpoint Coverage の方が良いと判断 • 実際に集計してみた結果、確かに社内向けとそれ以外では Endpoint Coverage に2倍以上の開きがあることがわかった 俺たちの戦いはこれからだ🔥 記事の方には少しだけ戦いの記録を書いてます