Codecov で iOS アプリのテストカバレッジを可視化する (GitHub + CircleCI + Codecov)

エンジニアリングマネジャーの@nobuoka です。 iOS アプリ 「ゼクシィ」 の開発などを担当しています。本記事では、「ゼクシィ」 iOS アプリのプロジェクトでテストカバレッジを可視化した取り組みを共有します。 技術的に新しいことや難しいことをしているわけではありませんが、カバレッジ可視化の一つの事例として参考になればと思います。

背景・目的

これまで 「ゼクシィ」 のアプリ開発は社外に発注していたのですが、開発をさらに推進していくため、今年の 8 月から内製開発組織も 「ゼクシィ」 のアプリ開発に関わるようになりました。 我々内製開発チームがプロジェクトに参画した時点で、「ゼクシィ」 の iOS プロジェクトのコードテストに関する状況は下記のとおりでした。

ビルドやテストを自動実行する CI ジョブがなく、テストコードのビルドもできない状態になっている外部品質については手動での動作確認等でちゃんと担保されているものの、コードテストを活用して内部品質を高めたり開発効率を高めるといったことができない状況でした。コードテストが自動化されていなければやがて保守されなくなるのは必然です。 逆にいうと、コードテスト実行の自動化は最低限必要なものです。 書籍 『レガシーソフトウェア改善ガイド』 にも、『誰かがバージョン管理システムにプッシュするたびに、テストを実行してパッケージをビルドする、標準の CI ジョブ』 は 『人々が頼りにできるように準備すべき最小限のもの』 の一つであると書かれています。今回の取り組みの目的は、コードテストが継続的・自動的に実施される環境を整備することです。 そのためにコードテストを自動実行する CI ジョブを定義します。 さらに、コードテストのカバレッジを把握しやすくするため、テストカバレッジの可視化も行うことにしました。

利用したツール

下記のツールを利用しました。

カバレッジ可視化 : CodecovGitHub と CircleCI は RMP の内製開発組織でもともと利用されているものです。 fastlane や Bundler も 「ゼクシィ」 のプロジェクトでもともと利用されていたもので、そのまま利用しました。カバレッジ可視化ツールの選択肢としては、Codecov や Coveralls といったサービスや SonarQube などの製品があります。 今回は GitHub との連携のしやすさや管理コストの小ささから Codecov と Coveralls で検討しました。 その 2 つの比較では、Codecov の方が UI や機能性で優れていると感じるため、最終的に Codecov を採用しました。 具体的に優れていると感じる機能としては、Coverage … 続きを読む Codecov で iOS アプリのテストカバレッジを可視化する (GitHub + CircleCI + Codecov)