テスト自動化でフルテスト期間を3カ月から2週間へ!MagicPod×オフショアで回し続ける品質担保の仕組みとは

ポーターズ株式会社

ブラウザテスト

ポーターズ株式会社様に、MagicPod選定の決め手や導入時から現在までの活用状況について、MagicPod代表の伊藤がお話を伺いました。


ポーターズ株式会社

「テクノロジーで世界の雇用にもっとも貢献する」をビジョンに掲げ、人材ビジネス向けクラウドサービス「PORTERS」を国内外に展開。海外12カ国を含む人材紹介・派遣会社を中心に、導入実績は2,200社超。人材戦略支援マガジン『PORTERS MAGAZINE』を発行・運営。


POINT

  • フルテストに3カ月を要し、開発やアップデートの停滞が課題に
  • 実行回数無制限と運用のしやすさが決め手となりMagicPodを選定
  • 導入初期のつまずきを、外部パートナーとのテスト設計見直しで克服
  • フルテストを約2週間に短縮し、1回あたり約500万円のコスト削減
  • オフショアチームでの自走体制を築き、常に回し続けるQAを実現

左から ・山内 崇泰さん Product & Service Unit ・大石 光洋さん Product & Service Unit ゼネラルマネージャー ・伊藤 望 MagicPod CEO

左から
・山内 崇泰さん Product & Service Unit
・大石 光洋さん Product & Service Unit ゼネラルマネージャー
・伊藤 望 MagicPod CEO


大石さん(以下、大石):私は2008年に入社しまして、当時は開発エンジニアが10人くらいの組織でした。2012年に人材紹介・派遣特化型のマッチングシステム「PORTERS」をリリースし、以降アップデートを続けてきています。

PORTERSは求人管理から候補者管理、選考進捗、売上管理まで、人材ビジネスの中核業務を一元的に支援するSaaSです。業界特有の複雑な業務フローを踏まえた機能を継続的に拡充しているため 、いかに開発スピードと品質を両立できる組織を作るかが私の大きなテーマになっています。

テストはもともと開発エンジニアが自分たちで行っていましたが、2011年頃に当時のCTOがジョインしてQAチームが立ち上がり、サービスが大きくなっていく中で少しずつ体制が整っていきました。テスト自動化については、山内にお任せしています。

山内さん(以下、山内):私は2年ほど前に業務委託でポーターズに参画しました。20年ほどテストエンジニアとしてQAチーフやリーダー、時にはテスターとしてテストに携わってきまして、ポーターズに参画する以前の会社でも自動化を推進していました。ただ、そこで導入したツールはシナリオを作っても動かないことがあり、他のメンバーも同じように苦戦していましたので、「自動テスト=うまく動かないもの」というイメージを持っていました。


MagicPod導入前の課題

山内:実は私、ポーターズに参画する前に、外部の会社のメンバーとしてポーターズのテストに関わっていた時期がありました。直接、PORTERSのサービス自体をテストしたわけではないのですが、当時から膨大な機能量を見て、「これをテストしている人たちは大変だろうな」と感じていました。実際に業務委託として中に入ってみて、想像通りでした(笑)。

大石:現在、QAの実務はVNEXTというベトナムのオフショア企業にお願いしています。テストケースの作成からマニュアルテストの実行まで担っていただいているのですが、PORTERSは機能が増え続けていますので、ある時期からテストにかかる時間が大きな課題になってきました。

最も限界を感じたのは、ミドルウェアのバージョンアップ時です。セキュリティを常に良い状態に保つためにはバージョンアップが不可欠ですが、全体テストに3カ月かかるとなると、その間は新しいリリースが何も出せなくなります。ユーザーにもっと価値を届けたい中で開発が止まってしまうのが一番の懸念であり、「もうマニュアルでは無理だ」という状態でした。

加えて、メール送信や外部へのデータ連携など、もしプログラムにミスがあると情報漏洩につながりかねない領域については、自動的にテストしてデグレを限りなくゼロにしたいという切実な思いもありました。

実は3〜4年前に、エンジニアがSeleniumを使って自動テストを作っていたこともありました。サービスの成長に伴い機能が拡大し、マニュアルテストが終わらないという状況で、みんなでコードを書いてその場はクリアできました。しかし、エンジニアが開発に戻ってしまうとメンテナンスまで手が回らず、結局運用に乗せられませんでした。




MagicPod選定の理由・経緯

伊藤:そうした課題を抱える中で、ツールの選定はどのように進められましたか?

大石:3つほど比較しまして、決め手になったのはテストの実行回数と導入・運用のしやすさです。

まず機能面ですが、MagicPodは実行回数に制限がありません。お客さまのニーズに応えていち早く価値を届けるため弊社はリリースの頻度も高いですし、セキュリティアップデートのたびにテストを回す必要がありますので、そこに制限があると回しきれないだろうと判断しました。

また運用面では、Seleniumで挫折した経験からも、ツールが複雑で一部の担当者しか使えなくなることは避けたかったんです。MagicPodは現場に定着し、継続的にメンテナンスして使えるイメージが持てたことも大きな選択の理由でした。

1カ月ほどで選定し、2023年11月から利用しています。まずはVNEXTのメンバーにMagicPodを勉強してもらいながらメール周りなど一部の機能からテストを作り始めたのですが、正直なところ最初の段階ではうまく回しきれていませんでした。そこで自動テストの運用を本格化させるために外部のパートナーを探し、3社ほどお声がけした中からベリサーブに入っていただくことになりました。

ベリサーブはMagicPodについて非常に詳しいですし、「ノウハウをVNEXTさんにもしっかり共有していきます」と言っていただけたのが大きかったです。

山内:ベリサーブが入ってから、私も本格的にMagicPodに触れるようになりました。ノウハウの共有やメンテナンスのやり方を見ていると、私が以前使ったツールとはまったく印象が異なり、作りやすく見やすい、確認しやすいということで、「これはいいぞ」と感じました。



MagicPodの活用状況

大石:ベリサーブには約半年間ご協力いただき、重要な機能からテストケースを作っていきました。現在はその体制が軌道に乗って、VNEXTのメンバーで自走できる状態になっています。山内さんが日本側で管理し、VNEXTのマニュアルテストチーム13人と自動テストチーム4人で運用しているという状況です。

マニュアルと自動で同じVNEXT内にチームがありますので、自動テストで見つかったバグをマニュアル側のテストケースにフィードバックしたり、逆に新機能のマニュアルテストで出たバグを自動テストのシナリオに反映したりと、相互に連携できているのは大きいです。

山内:実行は主に夜間と土日の昼間、メンバーが稼働していない時間帯に2並列で回しています。テストケースがかなり増えてきていますので、並列で実行しても3日ほどかかる規模になっています。まずQAチームが実行結果を確認し、新しいエラーやシナリオの停止があれば私に連絡が来るようになっています。私のほうでも結果を見て、見落としがないかダブルチェックしています。

実行結果が格段に見やすいという点は、実務目線で特に助かっています。エラーになった箇所はスクリーンショットが残っているので、どこで何をして何が起きたのかパッと見て原因がわかります。また、テストがエラーになった場合にそこで「止める」か、そのまま「続行する」かを選べる機能も非常にありがたいです。

例えばテキストが少し違うといった軽微なエラーで止まってしまうと、その先のテストケースが大丈夫なのかどうかわからず困ってしまいます。エラーが起きてもそのままテストを続行して、その後の動きを一気に確認できる柔軟性があることは、運用上大きなメリットだと感じています。

大石:試算したところ、全体で約3万件のテストケースがあり、すべてマニュアルテストで実施すると人件費で1回あたり約600万円かかっていたのですが、自動テストを活用することで約100万円に抑えることができました。1回のフルテストあたり約500万円のコスト削減につながっています。

さらに、フルテストの期間が3カ月から約2週間に短縮されていますので、その間に開発が止まらないという効果も非常に大きいです。不具合もしっかり見つけてくれていて、デグレを何件も検出してくれているので本当に助かっています。

山内:私が参画してしばらくした頃、マニュアルテストチームに「今フルテストしたらどのくらいの時間がかかりますか?」と聞いたら、「半年」と言われたんです。それが今、管理画面など一部を除いて標準ユーザーが使う機能をほぼカバーできている状態です。

実行環境もベースURLを変えるだけで本番とステージングを切り替えられますので、お客さまの環境でデグレがないか見るのか、開発環境で新機能以外のデグレを確認するのか、柔軟に回せています。開発メンバーにも自動テストの存在が浸透していて、「今お願いしたらいつまでに一巡できますか」と問い合わせをいただけるようになりました。

大石:テストの属人化という点でも変化がありました。PORTERSは10数年積み上げてきた機能が膨大で、今開発しているメンバーでも「こんな機能あったのか」というものがたくさんあります。自動テストはそうした抜け漏れがちな領域もカバーしてくれますし、デグレが発生したら都度テストを追加して、テストケースが成長していきます。人が入れ替わっても「ここが漏れていました」ということが起きにくい仕組みになっているのは、すごくいいなと思っています。

伊藤:日々の運用を継続する上で、工夫されていることはありますか?

大石:実は、通知機能はあえて使っていないんです。毎日VNEXTのメンバーが直接結果を見に行ってエラーが起きていないか確認しています。自動テストは必ずうまくいかない部分が出てきますので、通知に頼るのではなく、日々の確認作業にしっかり人を貼り付けておくことが、運用を回し続ける上ですごく大事だと思っています。

山内:加えて、自動テスト特有のとの付き合い方にも工夫があります。例えばメール送信の文面を確認するテストで、MagicPodは目に見えない改行コードの違いまで厳密に判定するため、failになることがあります。ただ、実際のお客さまの画面には何も影響が出ないんですね。そういった自動テストでしか出ない不具合については、無理にシナリオへ手を加えるより、既知のfailとしてそのまま流す運用にしています。お客さまへの影響がないエラーに引っ張られすぎず、柔軟に判断することも大事だと考えています。



「とりあえず自動化」から持続可能なテスト運用へ

伊藤:MagicPod導入当初、うまく立ち上がらなかった時期があったと伺いましたが、具体的にはどのあたりに難しさがありましたか?

大石:最初はマニュアルテストをそのまま自動テストに置き換えようとしてしまったんです。「文字が変わった/変わっていない」といった細かいチェックまで全部組み込んでいました。でも自動テストで大事なのはそこではなくて、機能がきちんと動いているかどうかですよね。

文字が多少変わっても影響がない部分まで見てしまうと実行も大変ですし、failが頻発して使いものにならなくなる。その辺りをあまり整理せずにお任せしてしまったので、全体に広げるのは難しいなと感じていました。

加えて、山内さんが来る前の時期でしたから、そもそもテスト設計のノウハウがありませんでした。VNEXTもそこをリードできる状況ではなく、自分たちだけでは限界があると感じてベリサーブにお声がけしたという流れです。ベリサーブに入っていただいてからは、「どういう観点でテストケースを作るか」という設計の部分から見直しが入り、そのノウハウがVNEXTのメンバーにも蓄積されていきました。

山内:私たち自身もMagicPodについて深い知見があったわけではありませんので、ベリサーブからのアドバイスは本当に勉強になりました。例えばテスト手順を見直して複数のテストケースを並列化し実行期間を縮める方法や、テストケースの更新を抜け漏れなく確実に行う方法など、テスト業務をより効率的に行うためのノウハウを毎日のように教えていただきました。

少し前にVNEXTの自動テストメンバーを2名から4名に増員したのですが、ベリサーブから学んだ知見を最初の2名が新しいメンバーに伝達できていて、特に支障なく習熟が進みました。ノウハウがきちんと引き継がれる形になっているのは、立ち上げ期の苦労があったからこそだと思います。

伊藤:プロダクト側のつくりで、要素の特定が難しいといった問題はありませんでしたか?

大石:PORTERSはReactでつくっているためIDが自動生成されて変わることもありますし、ユーザーが画面の項目を自由に設計できるので何がどこにあるかも日々変わり得るのですが、MagicPodではうまく取れていて、問題なく動いています。開発側に特別な対応を求めるようなことは今のところ起きていません。

山内:たまに取得できない要素があって「これは座標指定でやります」と連絡が来ることはありますが、頻度としてはごくわずかです。



最後に

山内:どんなシステムでもリグレッションテストの工数は馬鹿にならないと思っています。それをどうにかする上で自動テストは非常に有力な手段です。0から1にするのが大変だというのは先ほどお話しした通りですが、1にさえできれば、そこからはすごく力になってくれます。特にMagicPodは使いやすくてメンテナンス性もいいので、自信を持ってオススメしたいです。我々も大いに助けられていますし、今後とも長く続けていけたらなと思っています。

大石:自動テストの運用に挫折したこともありましたが、今は山内さんに管理してもらい、VNEXTの専任メンバーが日々運用してくれている。この「常に回し続ける体制」を作れたことが本当に大きいです。自動テストは必ずエラーが起きますから、毎日確認して、常に動く状態を保つ。それができて初めてうまくいく。今これがないと考えるとぞっとしますね。

リリース前だけでなく日常的なプロセスの中でテストを実行できるようになったことで、「テストは特別な作業ではなく、開発の一部である」という位置づけで運用できるようになりました。SaaSは「動くのが前提」の世界ですから、不具合があるとお客さまに使ってもらえなくなってしまう。良いものを早く届けるためにも、テストで品質を担保して安心してリリースできるというのは、すごく大きいことだと思っています。

<参考>
ベリサーブ事例インタビュー
ポーターズ株式会社様の事例インタビューを公開しました


ポーターズ株式会社