電気自動車や自動運転技術、シェアリングエコノミーなど、技術の進化とともに車へのニーズも多様化している。
そんな中、クルマに関わる人と人、サービスをコネクトする、プラットフォームを展開しているのが株式会社カービューだ。新車から中古車まで、クルマの最新情報を発信する日本最大級のカー情報サイト『carview!』や、コアなクルマ好きユーザーが集まるSNS『みんなのカーライフ(みんカラ)』を運営している。
2015年には『Yahoo! JAPAN』と連携し、さらにユーザーを拡大。クルマを軸に新たなサービスも展開する同社で、開発本部を統括する北村 道介氏、品質保証を担うQAエンジニアの真鍋 智一氏の2名に、品質保証における課題や、Autify導入後の運用について聞いた。
– 株式会社カービューの主な事業内容について教えてください。
北村さん: インターネットで自動車関連のサービスを展開しています。主に『みんなのカーライフ(みんカラ)』というコアなクルマ好きが集まるSNSや、『carview!』という自動車の総合情報サイトで、新車のニュースやモーターショー、中古車などの情報を発信しています。
そのほか、複数の買取先でクルマを一括査定できる『買取カービュー』、車検の仲介サービス『カービュークリア車検』、クルマのパーツ取り付けやスキルシェアを行う『pitte』なども運営しています。クルマを軸に、メディア系やコマース系などを幅広く展開している会社です。
また子会社(株式会社KENKEY)を設立し、昨年には『KENKEY』という建設機械を扱うサービスを提供開始しまして、QA(Quality Assurance=品質保証)チームはそちらも対応しています。
– 担当範囲が広くて大変そうです。Autify導入前、QAチームではどのような課題がありましたか?
真鍋さん: QAチームはマネージャー含めて3名、実際に手を動かしてテストするメンバーは2人しかいないので、作業の効率化を図っていかなければなりません。Autifyを導入する以前は、Seleniumを使ってゴリゴリとプログラムを書いてテストを回して運用していました。
その開発とメンテナンスにかなりの工数を割いていました。プログラムや画面に変化があった際、自動テストを追従させるためのメンテナンスにも時間がかかります。昨年公開したサービス『KENKEY』では、ボリュームのあるものから、小さいものまで20ほどのテストシナリオを作成して、完全に動作確認ができるまで構築するのに、1年くらいかかりました。
– 真鍋さんがお1人でされていたんですか?
真鍋さん: はい。プログラミングの知識があるQAメンバーが実質、私1人しかいないので。マニュアルテストを行いながら、空いている時間に自動テストを実装する、といった優先度で進めていました。
QAのテスト業界的にも、自動化できる部分は自動で、手動でやらなければならないところは、人の手をかける、という潮流がありますよね。「1年掛けて1つのサービスの自動テストを実装」という呑気なスタンスでやっていると、いつまで経っても終わらない、と痛感しています。
– 御社では、リリースサイクルも早いのでしょうか?
真鍋さん: 1つのサービスでは、毎週水曜日にリリースしています。手動でコードを書いていた時から、毎週自動テストを走らせていました。
北村さん: 『KENKEY』は週1で、ほかのサービスはもう少し短いサイクルのものもあれば不定期なものもあります。ビジネス視点で見ると高い頻度でリリースしたいですし、もちろん品質も担保しなければならない。お客様からのご要望や問い合わせにも対応しつつ、UIを改修したり、新しい機能を追加したりと、さまざまな試みをしています。弊社はヤフーグループということもありまして、Yahoo!JAPANのサービスと連携しながら、A/Bテストを実施するなど、短いサイクルでPDCAを回すようにしています。
– 実際にAutifyの導入を進めていただくうえで、つまずいた点などがもしあれば、お聞かせいただけますか?
真鍋さん: Seleniumの自動テストのコードをAutifyに置き換える作業をしました。シナリオはすでに完成している状態でしたので、Autifyを習熟する意味でもいいかなと。
当初Autifyに今ほど機能面が充実していなかったこともあり、サポートにいろいろな質問をして、助けていただきながら進めていました。当時困っていたことが、今では機能が追加されて解決しているケースが多くて、Autifyの対応や改善の速さにはとても感謝しています。
– こちらこそ、感謝しかないです。まだ未成熟だった頃からご導入いただいて、いろいろお手間をおかけしたと思うのですが、継続してご活用いただきありがとうございます。
真鍋さん: つまずいた点で言えば、弊社のサービスには「CSVファイルをアップロードする」過程があるので、テストをうまく実装するのが難しかったです。そこだけはJavaScriptでコードを書くなど工夫していますが、そういうプログラマーの心を揺さぶるような工夫のし甲斐があるという(笑)。Autifyを使えば、ちょっとの工夫で、どんなシステムでも自動テストできそう!と感じられるのがいいですね。
– 実は最近また機能が追加されていまして、JavaScriptステップをご活用いただけると、かなりいろいろなことができるようになっています。JavaScriptステップに引数を入れたり、JavaScriptステップ同士で値を受け渡したり。最近、その機能を使って、二段階認証の突破方法を実装することができました(笑)。僕も元エンジニアとして真鍋さんのお気持ちよくわかりますし、設計した通りにワクワクしていただけるのはとても嬉しいです。ありがとうございます。
真鍋さん: ただ作業して、記録して……だけではなくて。エンジニアとしては、ハックしていく過程に、火が点くポイントがありますよね(笑)。結構、需要が高いと思うのですが、「開いているURLを拾ってくる」作業をボタン1つでできたらいいなと思っていて、僕からリクエストさせてもらいました。
– JavaScriptでよく使われているものを「もっと簡単に、誰でも使える」ように機能化していくというのが、Autifyの機能拡張の方針なので、リクエストいただいてありがたいです。
Autifyを導入して運用するなかで、何か工夫したことはありますか?
真鍋さん: 自動テストにおいては、あまり細かすぎるステップを設けないように意識しています。というのも、あまりに長いシナリオになると、エラー内容を追いかけるのも大変なので、なるべく削減できるように考えています。リリース前に現状動いているものがそのままの形で動くかどうかを軸に、追加で必要なものが出てきたら手動で対応します。
アサーションステップや、入力時のエラーの項目については、基本的に手動テストでも確認している状態なので、画面を新規作成した場合などを除けば、何度も不具合が起きることはあまり考えられません。そういうステップをなるべく外して、シナリオをスマートにする工夫をしています。網羅していてはキリがないので、システムとして本質的に必要なテストかどうかを見極めるようにしています。
– 自動だから全てチェックしよう、ではなく、本質的な部分だけに絞ってシンプルに設計されているということですね。
真鍋さん: そうです。今Chromeで速くできるようになったとはいえ、1つのテストシナリオを実行して完了するまで10分以上掛かるものもありますし、入力のチェックまで入れるとさらに時間が掛かってしまう。リリースの速さを求めるのであれば、ある程度はスマートにしなければと感じています。
– そのほか、工夫されていることはありますか?
真鍋さん: APIのドキュメントが公開されていたので、それを元にJenkinsからAutifyを起動し、結果を取得して、Jenkins上でエラーや、サクセスをハンドリングするようにプログラミングしました。
CSVファイルのアップロード機能は、JavaScriptの機能拡張がされていない状態で実装したため、そこだけJavaコードを埋め込んでます。動作Aの後にJavaベースのコードをJenkins上で動かして、Autifyで実装できなかった部分が終わったら、またAutifyに戻るというように、パイプラインを使って動かしています。これが解決した時は達成感がありました(笑)。
– Autify導入後は、どのような変化があったか教えてください。
真鍋さん: Autifyを導入してしばらく経った、2020年4月ごろに北村から「QAチームでAutifyを入れて、リリース前のチェックを行っている」ということを開発本部全体にアナウンスしたんです。今では社内でAutifyが周知されています。
それまでは『KENKEY』と『みんカラ』のテストのみに実行していたのですが、ほかのサービスにも自動テストを広げて、開発者や企画担当者が、リリース前にAutifyを動かせるようにまでなりました。
現状、シナリオはQAチームが作っているのですが、将来的には、リリースのCI/CDサイクルの中にAutifyのジョブを埋め込んでリリースする前に動かす、という運用ができるように構築を進めています。
– 「リリース前、これ回しておいてね」と、テストプランを渡して、ポチッとやれば検証できてリリースできる状態ですね。今後は、手動でポチも要らなくなり、完全自動化の状態になる。
北村さん: インフラ寄りのプラットフォームでは、たまに夜間メンテナンスをしています。そちらも真鍋のほうでシナリオを作ったものがありまして。今後は、プラットフォーム系のチームでも、Autifyでテストできるようにしたいと思っています。
– 実際に導入してみて、工数的にどのくらい削減できましたか。
真鍋さん: 導入して1年経った今、全体でみると1~2人/月くらいは削減できています。
以前は、テスト用のコードを1週間かけて書いていたのですが、腰を落ち着ければ1日でできるくらい、かなり工数が減りました。以前のペースでやっていたら、社内の全システムのテスト自動化は実現できていないと思います。
– 別部署への横展開に苦労するという話もよく聞くのですが、御社ではどのようにコミュニケーションされているんですか?
北村さん: 全社会議などで、開発本部の方針を話す場面があるので、そういう場を活用して伝えています。Autifyの概要を紹介して、自動テストで工数が掛からない、UIが変わっても保守の工数が掛からないといったメリットを何度か伝えて、浸透してきました。開発側は、プログラムを書くのに忙しいので、最初は積極的ではなかったのですが、実際に使って体験してみて、メリットが分かってきたようです。
ビジネス的にインパクトのある、基本動作がきちんと動くかどうかを自動でチェックできるので、クリティカルな障害の再発防止に役立っているのを実感しています。
真鍋さん: 弊社のサービスの場合、「中古車の申し込み」のような、基本的かつ重要な機能がちゃんと動いているのかの疎通確認を、毎朝、自動で回すのにちょうどいいかなと思っています。
北村さん: QAチームでは「朝チェック」という呼び方をしてたのですが(笑)。毎朝ちゃんと動いているかどうかを手動でやっていたところ、今ではAutifyを使ってJenkins経由で自動化しています。テストシナリオを作るのもラクだし、課題になりがちな、元サイトのUIが変わった時のメンテナンスコストも削減できる。
あらためて、本当に便利なツールですよね。ちょうど今週、とあるプロジェクトで画面が大きく変わったんです。もう1度、記録し直す必要があるのかなと思って試しに動かしてみたら、問題なくテストが完了していました。AIがちゃんと判断してくれているんだな、というのを嚙み締めたところです。
– そうなんですか。その体感、僕らのほうからはあまり見えない部分だったりするので、実感いただけて嬉しいです。
品質保証に関して、今後取り組みたいことがあればお聞かせください。
北村さん: 基本はCI/CD系で、頻度を高めていくこと。あとは、基本ラインで障害があったとき、なるべく早く気付きたいというのもあります。ほかにもいろんな使い道があるんだろうな、と思っているので、活用できたらと思っています。
スクリーンショットを撮って画像をダウンロードする機能など、まだ活用していませんが、例えばマニュアルとして展開するなどの用途としても便利そうなので使ってみたいです。
– これからテスト自動化に取り組む方へ、メッセージをお願いします。
真鍋さん: 先ほどもお伝えしたのですが、あまり複雑なテストを完璧にやろうとは思わずに、最初は基本動作がちゃんと動くことをベースに設計していくことをお勧めします。もし障害が起こったり、重要だと判断する項目があれば、後から間に継ぎ足していくことも可能です。Autifyは、私みたいにエンジニア魂がある人がいじっても楽しいし、非エンジニアで普段コードを書かないテスターの方が操作しても十分使えるツールです。ぜひ使ってみていただきたいと思います。
北村さん: 世の中の変化も速く、早くリリースしなければならないビジネス上の要求も高い中で、開発サイクルを早めることは、品質保持と相反するところがあります。それを解決する手段として大きなウエイトを占めるのが、テスト自動化だと思います。シナリオ作成が簡単で、その後のメンテナンスもラクに運用できるAutifyはかなり有効です。
全社的な導入となると、もしかしたらハードルが高いかもしれませんが、最初はスモールスタートで一部試してみてから、ほかの部署にも体感してもらうと、より導入しやすくなるのではないかと思います。
– ありがとうございます。最後に御社から何かお知らせがあればぜひ。
北村さん: クルマが好きで開発に興味のある人がいましたら、ぜひ、弊社の採用ページを覗いて見てください。よろしくお願いいたします。
(聞き手:オーティファイ株式会社 近澤 良)