高速な自動ブラウザテスト
LearnZillion 社は、CircleCI を使用してQA プロセスを完全に自動化しています
CircleCI を選んだ理由
LearnZillion 社は、幼稚園から高校までのベテラン教師によって開発された世界初の無料のデジタルカリキュラムを作成し提供しています。LearnZillion 社のアプリは、カリキュラムの授業用のカスタムコンテンツ管理で構成されており、その規模は拡張しているため、複雑なアプリケーションと同じように、多くのデータストアやキューなどが必要となっています。
LearnZillion 社は、Rails に加えて、バックエンドでPostgres、Redis、Memcached、Resque を使用し、単体テストにRSpec を使用しています。フロントエンドには、ノックアウトを使用しています。ブラウザテストには、Selenium、Capybara、および Cucumber を使用しています。
「CircleCIは、自社で開発したテストインフラストラクチャの管理に費やす時間を減らし、より多くのエネルギーをテストに費やすことができるようにすることで、製品をより良いものにしています。」
Ian Lotinsky | CTO | LearnZillion
CircleCI 導入前の課題
LearnZillion 社では、ラップトップで TeamCity を実行し、CI プロセスを稼働させており、この運用環境と OS に関する問題が常につきまとっていました。さらに、機能の QA テストプロセスは完全に手動になっており、長い時間がかかっていました。リリースは、エンジニアによって 2〜4 週間ごとに不定期で行われていました。LearnZillion 社のエンジニアリング部門の CTO である IanLotinsky 氏は、次のように述べています。「当時、コードをデプロイするエンジニアは、複雑な課題を抱えており、非常に危険な状態でした。デプロイは、予期しない問題による影響を軽減するため、多くの場合、深夜に行われていました。継続的デリバリーに移行することが急務だったのです。」
ソリューション
LearnZillion 社は CircleCI を使用して、すべてのブランチですべてのテストをすばやく実行し、GitHub プルリクエストで結果を確認してから、新しい機能をマスターにマージできるよう になりました。LearnZillion 社の QA リーダーである ManpreetKomal 氏は、CircleCI を使用した徹底的な単体テストに加えて、AutoQA と呼ばれるブラウザテストスイートを構築しました。これは、Manpreet と彼のチームが独自のリポジトリで管理しています。
LearnZillion 社について
LearnZillion 社のエンジニアである Ron Warholic 氏は、CircleCI と GitHub の API を使用して、Rails アプリケーションコードや AutoQA ブラウザテストスイートに変更があると、AutoQA ブラウザテストが再実行されるようにする第 2 の CircleCI プロセスを設定しました。テストは CircleCI ビルドコンテナで実行され、LearnZillion のステージング環境にその結果が反映されます。AutoQA により、適切なアプリケーションと AutoQA ブランチがステージング環境にデプロイされ、データベースが準備され、ステージング環境でブラウザテストが実行されます。開発者は、GitHub プルリクエストで、Rails 単体テスト用と AutoQA 機能テストスイート用の 2 つのステータスエントリを確認できます。
LearnZillion 社は、独自の CI インフラストラクチャを維持する心配がなくなりました。1 日に何度でも自信を持ってデプロイできるようになり、短時間で新しい機能をユーザーに提供できるようになりました。