LCL Engineers' Blog

バス比較なび・格安移動・バスとりっぷを運営する LCLの開発者ブログです。

Webサービスの品質向上のために導入しているサービス・ツールまとめ

LCLが運営しているWebサービスは、品質向上のために、複数のサービスやツールを利用しています。今回はそれらのサービス・ツールをまとめてご紹介します。

品質向上のためのプロセス

それぞれのサービス・ツールは以下のタイミングで利用しています。 f:id:lcl-engineer:20180222085613p:plain

各サービス・ツールの紹介

各サービス・ツールについて、一つずつご紹介します。 なお、今回はコードレビューや手動テストについては取り上げません。

SideCI

SideCIとは、コードレビューを自動化してくれるサービスです。GitHubのプルリクエストを自動で解析して指摘してくれます。 Ruby, PHP, JavaScript, CSS, Java, Python, Go, Swiftなどに対応しているようです(2018/02/15現在)。 詳細は以下の記事でご紹介しています。 techblog.lclco.com

SideCIは、プルリクエストが作られたタイミングで指摘が入るので、プルリクエスト作成後、コードレビューを依頼する前に対応します。

Danger

Dangerとは、Pull Requestのレビュー時に発生しやすい、 ”You Forgot To...(...するのを忘れてませんか?)"という指摘を自動化するツールです。 事前に指摘する内容をコードに記述することで、CI上でPull Requestを解析して自動でコメントしてくれます。 詳細は以下の記事でご紹介しています。 techblog.lclco.com

Dangerは、プルリクエストが作られたタイミングと、その後、コードがプッシュされる度に実行されます。 また、プルリクエストのラベルがWIP→ready for releaseへ変更されたタイミングでも実行され、chatworkへ通知される仕組みも入っています。 f:id:lcl-engineer:20180215144822p:plain

RSpecによるRailsテスト

重要なページ・機能を中心、Rspecにてテストコードを実装しています。 RSpecは、ローカル・CI環境で実行します。

Visual Regressionテスト(Capybara + Rmagick他...)

Visual Regressionテストとは、「Webページのスクリーンショットを以前のバージョンと比べて、ピクセルレベルでの差分を検出するテスト手法」です。 詳細は以下の記事でご紹介しています。 techblog.lclco.com

Visual Regressionテストは、一通り実装が終わったあとにchatwork上のHubotに命令をして実行します。 また、リリース時、masterブランチにマージされたタイミングでは、自動的に実行します。

Bugsnag

Bugsnagは、アプリケーションのエラーを監視して報告してくれるツールです。 詳細は以下の記事でご紹介しています。

techblog.lclco.com techblog.lclco.com

Bugsnagは、テストサーバーやステージングサーバーの警告も通知されるので、開発中の不具合発見に役立っています。ディレクター・デザイナーの方がテストサーバで遭遇したエラーも、詳細な情報が検知できるため、操作手順など連絡を貰わなくても、すぐに修正ができます。

また、リリース後にはユーザーの環境で起こった不具合を報告してくれるので、テストでは気づけなかった不具合にも早いタイミングで気づくことができます。

課題

複数のサービス・ツールを導入しましたが、課題もあります。

  • 自動化できていない部分がある
  • 自動テストのカバー範囲がまだ狭い

さらなる品質の向上を目指して、今後も改善していきたいと思っています。