データドリブンになっていくQAチームの舞台裏・コードカバレッジ編

どうしてもコードカバレッジを取得したいQAチームがプロダクト開発に首を突っ込む様子をお届けします。

はじめに。

テックブログ編集長&QAエンジニアの矢島です。

当社QAチームでは、データドリブンな品質改善活動の指標として、ISO/IEC 25000シリーズ(SQuaRE)を参考にしています。その中で「信頼性>成熟性>テスト網羅性」の指標である「コードカバレッジ」に注目しました。

なぜ、コードカバレッジを測定するのか?

コードカバレッジを測定する目的は次のとおりです。

- コードカバレッジと他の指標の相関関係を読み取ってビジネス価値に繋げたい。
- どの程度コードカバレッジがあれば「十分」と言えるのかを調査し、プロダクト開発のプロセスに組み込みたい。
- 特に、単体テストが必要な領域を見極めたい。

これらを実現するために、今回私たちは使用中のコードカバレッジツールの再選定から検討を始めました。

課題

もともと、私たちの組織では既にOSSライブラリを入れてコードカバレッジを取得していましたが、QAチームがデータを集めるにあたって、3つの課題がありました。

1. OSSライブラリがメンテナンスされておらず、いつトラブルを起こして外されるかわからない。
2. フレームワークごとにコードカバレッジレポートが違っている。
3. コードカバレッジをわざわざ見に行かねばならず、不便

これらを解決すべくツールを探した結果、全ての課題を解決できそうだと考え、CodeCovを導入することになりました。

CodeCovとは?

画像2

広く使われているコードカバレッジ測定ツールです。自動でコードカバレッジの測定や可視化を行ってくれるほか、ブランチごとに測定したり、データの蓄積も行って日々のカバレッジの変化を追ってくれるなど、かゆいところに手が届くツールです。

導入後変わったこと。

1. メンテナンスが継続的されるようになった。

元々使っていたOSSライブラリを使用し続ける上でメンテナンスの課題がありましたが、CodeCovを導入することで、今後数年に渡ってメンテナンスを心配する必要がなくなりました。

メンテナンスをされ続けられるであろうと考えた理由は、以下のポイントです。

- 有名企業数社で既に導入されている。
- 自社のサービスをサポートする不可欠な周辺のOSSライブラリについてもメンテナンスを続けてくれている。

CodeCovを導入せずに、元々使っているOSSライブラリのメンテナンスを自分たちの組織で行う選択肢もありました。しかし、いくつか解決できない課題があることと、作業コストを増やしたくないと考えたことが理由で、この案は見送りました。

2. フレームワークを問わず統一されたコードカバレッジレポートへ。

GLOBISでは、AndroidやiOS,Ruby on Railsなど様々なフレームワークを利用していますが、それぞれ別のコードカバレッジツールを利用しているため、レポートのフォーマットが統一されていませんでした。

統一されていないレポートを利用してデータを取得していたことで、コードカバレッジツールごとに記載内容が異なるためプロダクトごとの比較が難しいこと、またデータ収集のためのBotを個別に作成・維持するコストが重いことが問題になっていました。

それに比べてCodeCovでは多数の言語をサポートしており、グロービスプロダクト開発組織内で利用しているフレームワーク全てに導入可能です。

さらに、各フレームワークのコードカバレッジレポートの形式を揃えられることで、簡単に比較できるようになる点も良いと考えました。

対応言語表

APIも存在しているので、外部からコードカバレッジを取得することも可能です。

API documentation

グロービスでは、このAPIを利用して、コードカバレッジをBigQueryに保存することで、他の開発に関する情報やビジネス指標と同じように扱えるようにしています。

3. コードカバレッジレポートがPull Requestに自動的に表示される

以前はコードカバレッジがCircleCI上にあるArtifactに保存されていたため、確認のためにその都度アクセスしなければなりませんでしたが、CodeCovはPull Requestにレポートを自動で表示できるため意識して見に行かなくても簡単に確認できるようになりました。

画像1

4.その他の嬉しい副産物

導入したことで、課題を解決できただけではなく、以下のような嬉しいこともありました。

1. 導入してから、じわじわコードカバレッジの値が上がっている。(それまではじわじわ下がっていた)
2. コードカバレッジが見やすくなったことで開発エンジニアも喜んでくれた。
3. やりとりをする中で、距離が少しずつ近くなり、エンジニアと仲良くなった。

終わりに

コードカバレッジの指標を元に、ビジネス指標と結びつけたり、コードカバレッジの十分性を調べたりすることが当初の目的で、今回はその土台となるCodeCovを導入しました。

次は、データを元に分析するチャレンジをお届けします!

QAチームでは理想を一緒に追いかける仲間を募集中です!

当社QAチームでは、採用・選考を一旦度外視したカジュアル面談を随時行っております。ご興味のある方は本エントリー執筆者のTwitterアカウント(@yajima_wataru)までお気軽にご連絡ください!

この記事が気に入ったらサポートをしてみませんか?