スマホのアプリからタクシーを呼べる配車サービスを利用したことがある人も多いだろう。
タクシー配車関連アプリにおける日本国内ダウンロード数 No.1を 誇るタクシーアプリ「GO」を手がける株式会社Mobility Technologies(以下、MoT)は、配車サービスにとどまらず、AIを活用して交通事故削減を支援する「DRIVE CHART」を2019年に開始。主に物流会社やタクシー会社などで採用され、ニーズが高まっているサービスだ。
交通渋滞、交通事故、過疎化による交通空白地域など、モビリティにおけるさまざまな社会課題の解決を目指すMoTで、「DRIVE CHART」の品質管理に取り組む、澤田 雄一さん、二河 亮さんに話を聞いた。
インタビューのノーカット版をPodcastでもお聴きいただけます。 Apple Podcast, Google Podcasts, Spotifyから視聴可能です。
— まずは、お二人の自己紹介をお願いします。
澤田さん: MoTのクオリティマネジメント部で組織マネジメント全般を担当している澤田雄一です。
二河さん: 「DRIVE CHART」というAIを使った交通事故削減支援サービスのQAリーダーをしている二河亮です。昨年からAutifyを使ってテスト自動化に取り組んできました。
— 御社の事業内容を教えてください。
澤田さん: 弊社は社名のとおり、Mobility Technologiesという、モビリティに関するさまざまなサービスを展開しています。弊社のミッションは「移動で人を幸せに。」
タクシーアプリ「GO」をはじめとして、次世代AIドラレコを使った交通事故削減支援サービス「DRIVE CHART」や、アプリ上の簡単な操作で星付き有名店などの銘店のテイクアウトフードをタクシーでデリバリーする「GO Dine」などを手がけています。「移動の革命屋でありたい」という思いがあり、モビリティに関するさまざまな社会課題の解決を目指しています。
— Autifyをご活用いただいているのは主に『DRIVE CHART』とのことですが、これはどのようなサービスですか?
澤田さん: タクシーや営業車、長距離運転トラック向け等に弊社で開発した、ドライブレコーダーをベースとした専用車載器から得られる各種データより、交通事故に繋がる可能性の高い危険シーン(脇見運転・速度超過・一時不停止等)を自動検知、運転傾向を分析・レポートし交通事故を削減支援していくサービスです。、我々のサービスで交通事故を削減できるように、機能を充実させるなど、鋭意開発しております。
— Autifyを導入する前は、どのような課題があったのか教えてください。
二河さん: 品質面で大きな不具合はなかったものの、開発内部のリファクタ等により、他の箇所に影響がでてしまうといった細かいデグレが発生することが増えてきたこともあり、サービス全体に対してのリグレッションテストの必要性が高まっていました。ただ、そのための人的リソースを確保することが難しく、なかなか取り組めずにいたため、その部分を自動化によりカバーできないかというところから検討が始まりました。
— 品質面でも求められるレベルが変わってきたんでしょうか?
二河さん: 求められる品質はこれまでと変わらずですが、確認すべき対象がどんどん増えていっているので、そういった意味で担保するレベルが上がったと思います。
澤田さん: 内部ロジックなど、これまでの技術負債も溜まってきている状況で、今後はさらに開発スピードを上げて機能を拡充していかなければなりません。そんなとき、テストの作業にかかる時間がボトルネックになってしまう。
開発エンジニアが心理的安全性を持って、アグレッシブにコーディングできる環境にしていきたいと考え、テスト自動化に踏み切りました。テスト自動化によりテストによるカバー率を上げていくことが、あらゆる面でプロダクト品質を向上させるためにプラスになると考えました。
— そんな中でAutifyを導入いただく決め手になった要素は何かありますか?
二河さん: 自分にとってテスト自動化は初めての取り組みだったため、「心理的な壁」は高かったと思います。Autifyは使いやすさはもちろん、サポートの手厚さが、最初の一歩を踏み出す上でとても大きかったですね。
導入をお手伝いいただき、分からないことがあったらチャットで質問して、すぐに対応いただけたことで不安要素がひとつひとつ潰せていけました。
— 心理的な壁になっていたというのは、具体的にどんな点でしょうか?
二河さん: もともと専任者がおらず、何から始めたらいいのかわからない状態でした。「自動化=失敗しやすい」という話はよく聞きますし、漠然とした不安がありましたので、まずはネットに散らばっているアンチパターンを調べて、何が必要なのかを学習しました。
澤田さん: テスト自動化と聞くと、まずはスクリプトをたくさん書かなければならないイメージを持っている人は多いと思います。一方テストエンジニアでスクリプトを書ける人はそんなに多くはなく、結果的に技術的な不安が、心理的障壁になるんじゃないかと。
— その点、Autifyはノーコードで自動テストができるので、不安は和らぎましたか?
二河さん: そうですね。Autifyはスニペットがたくさん用意されていたので「思っていたより簡単じゃん!」と次のステップに進みやすかったです。スニペットを編集して、いろんなパターンを作っていけばいくほど、スクリプトそのものに慣れてくるので、いろいろと応用できるようになりました。
澤田さん: 無料お試し期間で、今回テスト自動化対象としたDRIVE CHARTの各画面・機能に対して実際にAutifyでの挙動を確認させて頂き、分からないところはチャットでサポートに連絡をして、すぐに回答が得られました。。フィージビリティ調査を充実させたことで結果的に全員が「自分たちでもできそう」と、テスト自動化に対する心理的ハードルを解消することに繋がったと思います。
— 導入後は、具体的にどのように自動化を進めて行ったのでしょうか?
二河さん: 「求められる品質とは何なのか?」を見直すところから始めました。そこで得られた観点で、テスト要件を分析して、Autifyで実現できるかをフィージビリティ調査で検討しました。おおむね行けそうな目処がたったので、テスト設計をして本導入に移りました。
元々のリグレッションテストの項目はありましたが、それは手動でやることが前提だったため、自動化に合わせて調整しました。せっかくなので車に例えると──。手動テストは手動用のエンジンで動く「車」なんですが、そこにAutifyという凄い自動用のエンジンを持ってきて乗せ換えたとしてもうまく動かない。だったらいっそのこと、「Autifyというエンジンに合わせた車をイチから作ってしまおう」という感じで、1からテスト設計をしました。
澤田さん: フィージビリティ調査では、改めて機能や画面を洗い出し、各機能・画面に対してAutifyで「できる / できない」をひとつずつ整理していき、独自の観点表を作り上げました。その観点表が完成した段階で「これなら5割ぐらいはAutifyでカバーできそう」といった目処が立ちました。
また、テスト自動化を導入する上で、もうひとつ重要な要素となる「予算を確保する」という点で「テスト自動化でどのぐらいカバーできるのか」「どのくらい効果が出せそうか」と聞かれることが多々あると思います。二河はそこの目安を大まかに洗い出して可視化してくれました。だから私も、予算を取る側の立場で「これだったら行けそう」、「本腰入れてやっていこう」と踏み切れたのは非常に大きかったです。
— 導入時に工夫したことはありますか?
二河さん: 第一に「属人化させない」ことを意識しました。テスト自動化は、Autifyによるテスト実行だけではなく、運用も含めたシステム全体から構築する必要があるので、その計画段階から属人化させない仕組みを考えていました。
具体的な例を挙げると、シナリオ作成と同時に、「どのステップで何を確認するのか」項目書のようなドキュメントを用意して、誰もがシナリオをメンテできるような仕組みを整えました。
澤田さん: 自動化を進める計画書の中には、教育の視点も入っていました。シナリオを作るマイルストーンと並行して、「人を教育する」、「ナレッジを貯めていく」というのも、常に並行して動いていました。
それから テスト自動化することが主目的ではなく、テスト自動化によって我々はどういう成果や効果を出していくべきかを何度も議論し、効果測定のための仕掛けや準備も入念にやっていきました。
二河さん: 導入する段階で、開発エンジニアに「こういう自動化システムを導入するから、開発側でもこのような用途に使えますよ」というのを共有しました。そのため実際に運用に入ったとき、「じゃあ使ってみよう」という感じですんなり入れたのかなと思います。
澤田さん: 最初から開発エンジニアを巻き込んでいたのは大きかったですね。どういうことができるのかという期待値やお互いの要求を擦り合わせた上で、シナリオを作り運用しました。結果的に「やっぱりこんなに効果がある、良かった良かった」という感じの反応が得られました。
— 確かに。導入前に立場の異なるロール間で期待値を擦り合わせしておくことはとても大事ですよね。効果測定については、どのようなお考えで進めたのですか?
二河さん: 効果は何かしらの数字で出す必要があります。計画段階から各シナリオを手動でした際にかかる工数を算出できる仕組みを構築し、自動化によってどれくらいの工数がカバーできるのかを見積もっていきました。 「〇〇項目を自動化」や「カバレッジ率」といった数値はQA関係者以外には説得力があまりない数値となるので、そこは気を付けました。、
澤田さん: ただ、今回Autifyを導入したところのスコープは、元々手動テストでもやれていなかった部分ですね。今までの手動テストのところを完全に置き換えたわけではなくて。手動テストでもできなかった領域をさらに広げカバーしていく取り組みと捉えていました。ですから、一概に工数削減ではなく「人数以上のことができている」というような考えです。
テストによるカバー率が広がれば、結果的に品質の信頼性が上がるわけです。バグを減らしたり、エンジニアのパフォーマンスが上がったりといった効果が、付加価値だと考えています。
— 運用していく上で工夫していることは何かありますか?
澤田さん: Autifyが提供しているAPIを活用して、テスト実行後のリザルト一覧を自動で集計するツールと、このリザルト一覧から詳細なテスト結果レポートを自動的に作成するツールの2つをQAチーム内で作成・構築しました。運用コストを少しでも下げるために、テストの実行だけではなく、関連する各作業もできるだけ自動化したいと考えました。
Slackに飛んでくるテスト結果通知は、キーワードで制御をしつつ、必要なデータだけを自動でスプレッドシートに溜め込んでいます。テスト結果を定点観測しデータを蓄積することによって、将来的にどういう状態のときにどういうバグが出るのかを分析しやすくなりますので、先を見据えて作りました。
— そのほかに、よく活用した機能はありますか?
二河さん: ステップグループ機能はよく使っています。スニペットが多いのも便利ですね。あとは、JSステップやURL置換も活用しています。
— 効果測定の話が先ほどありましたが、Autify導入後はどのような効果・変化がありましたか?
澤田さん: 結果的に現時点でリグレッションテストにおけるテスト自動化のカバー率は約7割くらい実現できたと思います。それによる一番の変化は、いつでも好きなタイミングに、瞬時にテストを実行できることです。開発側でリファクタしたい、言語のバージョンを上げたいなど、テストをしたい場面が様々あると思います。そのようなとき、今まではQAチームのリソース状況やリリースまでのテスト期間の制約等が原因でテストできないことも多かったのですが、Autifyを導入してからは、開発エンジニアより「全機能チェックをお願いします」と依頼があって、それに瞬時に対応できるようになりました。
実例としてリファクタをしたときに、不具合を複数検知できたので実際に効果が出ていると思います。早い段階で不具合に気付けるようになってきたのは、まさに願いどおりな部分で、それが本当に実現しているところを体感すると、自動化の恩恵をすごく味わえているなと感じます。また自動化した部分に対して、不具合が無いこと(期待通り動作していること)を開発フェーズの様々なタイミングで確認が出来ることも品質管理する立場の我々からしても非常に心強いと感じております。
開発エンジニアからは「素早く全画面を網羅的にテストできるのは安心感があっていい」、「本当に助かる」などの声があがっています。我々が思っていた以上に、エンジニアやプロダクト全体に与える影響は大きかったです。
二河さん: やはりリファクタしたとき「別に影響ないだろう」と思ってちょっとコードを変えただけで、思いもよらぬところで不具合が出たりすることはあります。自動化によってリリース前にテストの結果を見て、潰していけるのは大きいですね。
— テスト自動化による費用対効果の期待値に対してはいかがでしたか?
澤田さん: そこも期待以上ですね。但しそれなりに実行頻度がないと、運用コスト(※1)より効果が下回るところがあります。弊社の場合、全シナリオテストを月に4回くらい回せば、非常に効果が高いと考えています。逆に開発期間が“谷の状態”で、実行頻度が低い期間などは、単月で見たら費用対効果が低いかもしれません。ですが、長いスパンで定量的に見れば、Autifyの費用対効果は高いと感じます。
※1 Autifyライセンス費, シナリオ作成・修正 , 検証結果纏め・分析・報告・その他(ナレッジ・教育・ルール策定・各種ツール作成等を示す)
— 自動化を4回以上回せばお釣りがくる、という感じなんですね。工数の部分を具体的に数字で表すことはできますでしょうか?
澤田さん: 工数感で言えば、弊社で全シナリオテストを手動テストで行うと約15〜16人日ぐらい掛かります。テスト項目数は1400〜1500と膨大な量があります。Autifyだと、それをボタンひとつで実行でき、単純に16人日分のテスト実行工数をAutifyに任せられるため、その間チーム内のQAエンジニアは他の業務に時間を割けるので非常に助かっています。
— 実際に今は、月に何回くらい全シナリオテストのリグレッションテストを回していますか?
澤田さん: 平均すると月に3〜4回ぐらいです。
二河さん: この数カ月、結果を洗い出して開発ともAutifyの効果があることは共有できています。そんな中「こういうのもやって欲しい」といった要望も出てきました。今後、要望に対応していけば、おのずと今よりも実行機会が増えていき、効果もより高くなるんじゃないかと思います。
— 今度はどんなことに取り組んでいきたいですか?展望を教えてください。
二河さん: 今後はより運用コストを下げて、費用対効果をさらに上げていくことが目標です。開発チームと協力しながら、複雑なケースの自動化にもチャレンジして自動テストのカバレッジを広げていきたい。また、開発中のCI/CDの仕組みの中にも、AutifyのE2Eテストを組み込んでいきたいです。他のプロダクトにも横展開していけたらいいですね。
澤田さん: まずは品質の状態を定期的に観測して、きちんと可視化する仕組みを整えたいです。その上で、機械に任せられる部分は機械に任せて、人がやることで価値が見出せる部分に注力できるような状態にしたいですね。Autifyの力を借りながら実現できればと思います。
— まさしく我々のミッションですので、お力添えできればうれしいです。これからテスト自動化に取り組む方へ、メッセージをお願いします。
二河さん: 最初の第一歩を踏み出すのが一番大変かと思いますが、自動化についての課題を一つ一つ明確にしていけば、あとはそこまで難しいことではないです。Autify社も導入時から運用にかけて色々とフォローしてくださいますので、まずは小さな一歩から踏み出していくのが大事かと思います。
澤田さん: まずは何故テスト自動化したいのか、どういう課題がありそれを自動化によって何を解決していきたいのか、「目的や目標」を明確にすることが重要だと思います。ここがしっかりしていないと「自動化することだけが目的」になってしまうので。あとは何事にもそうかもしれませんが目先の成果や効果にとらわれずに、ゴールに辿り着くためには何をやっていく必要があるのかを計画立てて一つずつ着実にやっていくことが大切だと感じています。
— 最後に御社からお知らせがあればどうぞ。
澤田さん: 弊社では幅広く人材を募集しています。品質管理を担うクオリティマネジメント部は、採用強化中です。課題や難しい局面を、共感しながらともに成長・チャレンジしてくれる人にジョインして頂きたいです。少しでもご興味があれば、カジュアル面談も受け付けていますので、お気軽にお声掛けください。
— ありがとうございました!
(聞き手:オーティファイ株式会社 CEO 近澤 良)