将来の資産形成のために投資をはじめたいけれど、知識もなければ時間もない。そんな忙しい人たちをサポートするのが資産運用のロボアドバイザー「WealthNavi」だ。スマホやパソコンを使って、世界中の銘柄への分散投資が自動でおこなえるとあって、働く世代のユーザーが増えているという。
預かり資産も増え続けるなかで、ユーザーの大切な資産を守るためにも、高い品質のサービスが求められる。
ウェルスナビ株式会社で、同サービスの品質保証に取り組む吉田 政幸さん、木下 智弘さん、浦野 勝由さんに話を聞いた。
— まず御社の事業について教えてください。
吉田さん: 当社は「働く世代に豊かさを」をミッションに、働く世代の豊かな老後に向けた資産運用をサポートする自動の資産運用サービス「WealthNavi」を提供しています。WealthNaviは運用プランに沿って、世界約50か国、1万2000以上の銘柄に分散投資しています。
忙しく働く世代を中心に、現在約35.6万人(2022年12月31日時点)にご利用いただき、預かり資産額は7,197億円(2022年12月31日時点)となっています。
— みなさんのご担当についても教えてください。
吉田さん: 私はQAチームに所属しており、WealthNaviが手がけるウェブサイトとアプリのテストを担当しています。
木下さん: 吉田と同じくQAチームで、ウェブサイトとアプリのテストを担当しています。
浦野さん: 以前QAチームの責任者をしておりました。現在は別のチームの責任者ですが、Autify導入時にQAチームのメンバーと導入を推進しておりました。
— Autify導入前は、どのような課題があったのでしょう?
吉田さん: QAメンバーが少人数なこともあり、ウェブサイトのリグレッションテストは外部に委託して、手動でおこなってきました。
WealthNaviは金融機関や事業会社などの多数のお客様のニーズに合わせたサービスを提供していて、提携パートナーごとに専用のウェブサイトを用意しています。基本的には、その全てにリグレッションテストをする必要がありますが、とにかく工数が膨大です。
そのため一部のサイトの開発内容を鑑みて、流動的に選定したリグレッションテストをしてきました。しかし選定外のサイトでデグレードが発生し、やはり全チャネルを網羅したリグレッションテストをする必要があると判断しました。そこで自動テスト導入の本格的な検討が始まったという経緯です。
— ウェブサイトはどのくらいの数があって、工数はどのくらいでしょうか?
吉田さん: サイトは数十あります。それぞれ基本動作を各ブラウザのバリエーションで確認しています。1サイトのリグレッションテストをやるだけでも、半日〜1日掛かってしまうため、全てやるにはかなりの工数が掛かります。
— どのくらいの頻度でリグレッションテストをされていたんですか?
吉田さん: 2週間に1回ぐらいのペースでやっていました。手動でやるとすると、1週間以上QAに掛かります。あまり現実的ではない工数の掛かり方です。
— そこをなんとかするために自動テストを導入されたということですが、Autify以外の選択肢もあったのでしょうか?
吉田さん: 一度Seleniumを使ったやり方も検討しましたが、自分たちでコードを書いて実装を作り込む必要がありますし、どうしても動作が安定しないため、本格導入というレベルには達しませんでした。
浦野さん: 従来ウェブサイトはTampermonkeyを使ったお手製の入力自動化支援ツールがあって、それを使ってある程度テストの自動化は進めていました。ただ、入力補助的なもので、テスト自体を自動化するというところまではたどり着きませんでした。
モバイルアプリに関しても、E2Eのテストスクリプトを実装して挑戦したことはあります。ですが仕様変更や機能追加を取り込むとき、実際に運用してみると課題が多く、継続的な運用が難しいと感じました。仕様変更があったらE2Eのスクリプトが動かなくなるといったこともありました。
— 入力自動化支援ツールはどのようなツールなんでしょうか?
吉田さん: これは、テストをする上で入力ボックスに住所や氏名を入れるとき、毎回手入力をするのが面倒なところを、JavaScriptでページを開くと同時にテキストボックスに入力されるサービスです。作り込んでいけば、ボタンを押したタイミングで、裏でステータスを動かして更新してくれるので、画面が期待どおりに遷移します。
— なるほど。これはChromeプラグインで、RPA(Robotic process automation)のような動きができるものなんですね。
吉田さん: そうです。ただ、Seleniumで作り込もうとしたときに、うまく実装できない機能もありました。ノーコードのSaaSに絞って検討を始め、Autifyは真っ先に候補に挙がったサービスでした。
— Autifyを採用いただく決め手になったポイントはどんなところでしょうか?
木下さん: テストを作る工数はもちろんのこと、改修したときのメンテナンスの工数が少ないほうがいいと思っていました。開発した内容がテストにも反映されるようなツールであることが採用基準の1つでした。
浦野さん: 預かり資産や運用者数が増加していても、品質向上チームのメンバーを増やすことなくテスト業務だけをスケールさせていく環境が必要でした。自前でSeleniumとかスクリプトを書いてE2Eテストするのではなくて、プラットフォームに乗せて、クラウド上で管理したほうが事業にマッチしています。
プラットフォームの選定にあたっては、「継続性」を重要視していました。そんな中で継続的に工数を掛けずに対応できるプラットフォームAutifyに出会いました。
吉田さん: AutifyのJSステップ機能、こちらがJavaScriptでカスタマイズができる点は、導入する決め手の1つになったと思います。
木下さん: 処理と処理の間に、JSを書いてリクエストを飛ばして変えるところが自由にできるのは、非常に強みだと思います。試験導入のとき、スムーズにテストケースを作れたのは、その側面が大きいのかなと思っています。
— 自動化に向けてチームの体制はどのように整えたんですか?
吉田さん: テストを自動化するというテーマがあっても、結局は通常業務に追われてしまいますよね。だから期の初めに、「テスト自動化専任」を置きました。その担当が自分だったのですが、専任であることを承認してもらえたことが、まずはすごくやりやすかったです。
— 自動テストの整備に集中できたんですね。
吉田さん: はい。承認があるのとないのとでは、だいぶ違ったと思います。
浦野さん: 3名体制でしたので、既存の業務でも手一杯でした。昨年の下期は、自動テスト導入をトッププライオリティにして動こうと決めました。吉田に自動テストのリーダーとして動いてもらって、吉田が既存で担当していた業務の多くは木下に負担してもらいました。
Autifyの導入サポートが非常に手厚かったこともあって、2週に1回ぐらいの頻度でチーム全員でAutifyさんとの定例ミーティングに参加しました。それによって「プライオリティが高い業務なんですよ」ということを、チーム全員が一致した認識で取り組めたというのが1つ良かったかなと思います。
— 通常業務に追われてなかなか進まないというケースはよく聞くので、そこがトップダウンで決められたのは、導入促進という意味では大きそうですね。
— 導入する際、まずはどの辺から始めていったのでしょうか?
吉田さん: 弊社は直接お客様にサービスを提供するチャネルと、パートナーと連携してサービスを提供するチャネルがあります。
まずは直接お客様にサービスを提供しているサイトのリグレッションテストからシナリオを作り始めました。期待どおりの動作確認ができたので、横展開して、全パートナーチャネルに対応していきました。
サイトの作りも、流用して展開しているので、テストも同じように流用しながら作っていきました。サイトごとに動作が異なる部分もあるので、その部分は専用のテストシナリオを作りました。
— 共通して使っているシナリオもあるのでしょうか?
吉田さん: 当初はマスターのシナリオを例えば20個作ったら、そのシナリオ20個を各パートナーチャネル分作ろうと考えていたんですが、「データ機能を使って、パラメーターでチャネル情報を渡してあげればいい」ということをプロフェッショナルサービスのほうで教えていただきました。
マスターのシナリオにパートナーチャネル分の情報を渡して、なるべくマスターシナリオだけで回して、パラメータで工夫する作りにしました。これをやらなければ、テストシナリオ数が何十倍にも増えていたと思います。おかげさまで、かなり効率的な運用になっています。アドバイスいただいて助かりました。
— それから、もともとあったTampermonkeyのJavaScriptコードを移植して進めることもされた?
吉田さん: はい。まずはテストするにあたって、口座開設をする必要があります。口座開設にはメールから認証コードを取るので、入口の段階でJavaScriptが必要です。そこはTampermonkeyから流用して、AutifyのJSステップ機能で実装していきました。
そのコードはそのまま使えましたし、メール連携もすでにAutifyに機能が用意されていたので、スムーズにテストシナリオ作成ができました。
— 導入を進める中でつまづいた点や工夫したことなどはありましたか?
吉田さん: JSステップを使うとラクになる反面、あまりやり過ぎると「単体テスト」のようになってしまうところですかね。基本的には1画面と、操作の単位でJSステップを区切って、ちゃんと手入力を再現するイメージでコードを組むように意識しました。
工夫した点でいえば、テストデータです。テストデータを使い回していると、テストシナリオが失敗したときに、他のテストまで動かなくなってしまうということがあったので、なるべく干渉し合わないようにする方法を探しました。
基本的には、テストシナリオ内でテストデータも作るというような方向で進めるようにしました。それによって、並列実行ができて、実行時間が短縮できました。テストデータを作る際は、同じコードが使いまわせるステップグループ機能を活用しました。
あとは、テストシナリオを管理しやすくするために、テストシナリオ名に機能名や画面名を含めています。テストプランのことも考慮して、「並列」とか「直列」というキーワードも含める命名規則を設けました。
— この辺は「ラベル機能」もおすすめです。並列・直列をラベルで管理できて、フィルターして「並列だけ」や「直列だけ」ができます。もしかしたらご活用いただけるんじゃないかなと。
吉田さん: なるほど。これから活用してみます。
— プロフェッショナルサービスもご活用いただいたということですが、どのようにお力添えできましたか?
吉田さん: 先ほどお伝えしましたが、チャネル数が多いのでデータ機能のアドバイスをいただけたことが、すごく助かりました。「このステップはエラーとして続行という機能がある」など、なにか相談すると「回避できる小技」を教えていただけるのでありがたいです。質問票に起票すると、1〜2日ですぐに回答があって、対応の速さもスムーズな実装のために大変役立ちました。
— Autify導入前の課題は、実際に導入していただいてからどう変わりましたか?
吉田さん: まず全チャネルを網羅したリグレッションテストが可能になったことです。外部委託による手動テストだと、実行タイミングや追加費用などを気にしていましたが、気にせず最適なタイミングで、しかも全チャネルでリグレッションテストができるようになりました。
いきなり全てを自動テストに移行するのではなく、2カ月ほど「手動のリグレッションテスト」と「自動のリグレッションテスト」を並走させました。その結果、「差分がない」という確認が取れたので、外部委託していた手動のリグレッションテストを廃止することができました。念願だった「全チャネルを網羅する」が実現した瞬間です(笑)。
浦野さん: 心理的な安心感が得られたというところと、手動でやることによる見落としを防げるようになったと思います。
今までは手動のリグレッションテストは月1で、そこに合わせて機能開発をぶつけていました。この機能、リグレッションテストに間に合うか?と開発を急いだり、間に合わなかったから来月リリースしようと諦めたりしていました。
Autifyを導入してからは、いつでも好きなタイミングでリグレッションテストが実行できるので、エンジニアとしてはかなりやりやすく、安心感の1つに繋がっています。
— リリースにも何か変化は生まれましたか?
浦野さん: 現状はリリースサイクルを早めるといった変化は、まだあまりありません。2週間に1度というサイクルをお伝えしましたが、実際には細かいバグフィックス(bugfix)やホットフィックス(hotfix)を含めると、ほぼ毎週リリースしている状態です。2週に1度は大きめの機能追加やフィーチャーが含まれます。
ただ、細かいリリースも、エンジニアにとってはE2Eテストが通っていることが確認できることが非常にありがたいですし、開発するときの安心感にも繋がります。「目に見えて形が変わった」ということはまだないんですが、今後その形が変わっていくことが十分に効果として期待できると思っています。
これまでリグレッションテストはステージング環境を使っていたんですけれども、2022年上半期に専用環境を構築しました。Autifyのテストだけに使うステージングのコピー環境があるので、開発のサイクルを気にせずにリグレッションテストを実行できています。
手動だとどうしても先入観があって見落としている部分もあったようで、既存バグを見つけることもできました。自動テストの強みを実感できています。
— テスト自動化にとどまらず、今後の展望について教えてください。
吉田さん: ウェブサイトのリグレッションテストの自動化がうまくいったので、次はアプリのほうのリグレッションテストを進めていきたいです。資産運用はお金に関わるシステムなので、手動テストと自動テストを組み合わせてよりQAを強化し、お客様に安心してご利用いただけるシステムを提供していきたいと思います。
浦野さん: 多くのお客様がアプリ経由でご利用いただいています。アプリのCI環境をさらに強化して、リリースサイクルをもっと早めたいと思います。
今回、全チャネルを網羅したリグレッションテストが可能になったことを開発チームからとても感謝されました。お客様だけでなく開発チームの精神的な負担を軽減することも重要な役割だと思っているので、自動テストを安定運用することを心がけるとともに、自動テストの適応範囲も広げていきたいです。
— これから自動化に取り組む人にメッセージをお願いします。
吉田さん: 手動テストだと、スケールしていくシステムにいずれ対応できなくなると思います。導入コストや技術的な障壁も多いとは思いますが、運用フェーズになると自動テストの効果をすごく実感できます。
手動のリグレッションテストは、毎週のように同じことをやり続けるので「時間がもったいない」と感じてしまうことも多いと思います。自動テストに置き換えていけば解決できます。
手動では見逃してしまうような、人間ならではの「コンディションによるミス」はどうしてもあると思います。一方、自動テストは一定の品質が保てるので、リグレッションテストは自動テストとの相性がいいと思っています。
木下さん: これから導入される方には、Autifyの「プロフェッショナルサービス」はおすすめです。導入時はサービス特有の複雑さや、難しい部分でつまづくこともあると思います。それらを直接Zoomで相談できるので、コミュニケーションコストが緩和されると思います。実際、導入に掛かる負荷が大きく軽減されました。
浦野さん: 機械的にできることは機械に任せて、人間ができること/人間にしかできないことにさらに注力していく。そういった時間を生み出す方法の1つがテスト自動化プラットフォーム導入だと思います。そういう時間を作って、より高度なエンジニアリングに挑戦することをぜひ楽しんでいきましょう。我々も含めて、みんなが幸せになっていくんじゃないかと思います。自動化、いいですよ(笑)。
— 最後に御社からお知らせがあればどうぞ。
吉田さん: WealthNaviは順調に預かり資産が増加しており、今後はさらに多くの資産をお預かりできる金融プラットフォームに成長していきます。新機能開発にとどまらず、急成長を支えるための既存サービス基盤の性能改善にも注力しています。
こうした展開にともない、ソフトウェアの品質向上を担うQA体制の強化の必要性も高まっています。今後は、事業のスケールアップに対応すべく体制を築いていくとともに、全社的なテスト工程の拡充に取り組んで、リリース段階の品質保証業務全体をマネージメントできる状態を目指しています。
特にテスト自動化を推進して、マンパワーによらない効率的な品質向上チームのケイパビリティ向上が直近のテーマとなっています。
日本の金融業界に画期的なイノベーションを起こすプロダクト創造を担っていただけるエンジニアやビジネスプロフェッショナルを募集しています。ご興味のある方は、ぜひご応募ください。よろしくお願いします。
— ありがとうございました!
(聞き手:オーティファイ株式会社 CEO 近澤 良)