みなさんこんにちは!人事労務領域(HR)のQAエンジニア(テスト自動化担当)をしています!honamin @hona_sukeです。
今回は2021年7月から携わってきたクラウド人事管理のE2Eテスト自動化を通して見えてきたことをご紹介できればと思います。と、その前に、クラウド人事管理がどんなサービスなのかを紹介させてください😋
クラウド人事管理について
マネーフォワード クラウド人事管理では、従業員や組織の情報を一元管理することができます。入退社や人事異動の手続きに対応、また、従業員はPCやスマホを介して情報を送信することができるので、ペーパーレスなやり取りを実現することができます。
さらに、クラウド給与やクラウド勤怠などのサービスと併用することにより、クラウド人事管理の従業員情報をワンクリックで連携することも可能です。
このように、クラウド人事管理はさまざまなサービスの入り口にもなるプロダクトなので、従業員データの部分に関しては特に柔軟性や品質が求められます。
目次
- E2E自動テストとの出会い
- クラウド人事管理のE2Eテスト自動化
- ツール選定
- E2E自動テストの目的
- 課題の洗い出し
- テストレビュー
- 一連の活動を通して見えてきたこと
- これからやっていきたいこと
E2E自動テストとの出会い
本筋に戻ってE2E自動テストの話をしたいと思います。
わたしがE2E自動テストに出会ったのは2014年、某第三者検証会社でテスト設計者として働いていた時のことです。先輩がSelenium IDE を利用してE2E自動テストを実装しているところを通りかかり、自動でテストしてくれるとはすごい!と思った記憶があります。
ただ、作りたいテストが全てノーコードで作れるわけではない、また、当時のSelenium IDEはFirefoxのアドオンとして提供されていたので、なんだか触りづらく、コーディング知識のないわたしにとって、E2E自動テストは自分でできることではなさそうだ領域に置かれ、そのまま時が過ぎていったのでした……。
それから時は流れ、2020年、何かの勉強会で 「テストがノーコードで誰にでも簡単に作れます」 というキャッチコピーを掲げたAutifyというサービスを知りました。
これならわたしにもできるかもしれない!と思いましたし、当時在籍していた会社でもSeleniumを使ってテストを自動化しよう、という話はあったのですが、会社のQAエンジニア枠が実質1人ということもあり、Seleniumのスキルを持っていて保守運用できる人を会社は採用しつづけられるのか……? という点がネックでなかなか踏み出せないところへの朗報でした。
結局Autifyの導入はしなかったのですが、E2E自動テストをやってみたい! と思ったのもこの時だったのをはっきり覚えています。人類はテストから解放される!と本気で思っていました(笑)。
クラウド人事管理のE2Eテスト自動化
ツール選定
わたしがマネーフォワードにジョインした2021年7月、クラウド人事管理の開発チームではまさにE2E自動テストツールをどう選ぼうか、頭をひねる毎日でした。
ツール選定の軸となったのは以下の点です。
- 非エンジニアでもテストを作成でき、人材の投入がしやすいこと
- エンジニアのローカル環境で実装中の機能に対してもテストが実行できること
- 開発環境に対して毎日自動でテストが実行できること
- サービス側から送信したメールの内容についてテストができること
ここ最近の自動テストのツール選定においては、自動テスト実行環境も含めて自前実装(Selenium、Cypressなど)にするのか、クラウド一体型SaaS(MagicPod、Autify、mablなど)にするのかも大きな分かれ目になると思います。
自前実装とクラウド一体型SaaSのメリットデメリットについては以下の点が挙げられます。
上記のメリデメは一例ではありますが、加えて自前実装の場合 「メンテナンスが大変」 という声をよく聞きます。この点については実装されているテストの保守性(機器やシステムの整備・維持・管理のしやすさ)によるのかなと思っています。
自前実装でも保守性の高いテストであれば、メンテナンスの課題はある程度解消されるとおもいますが、テストのためのコードに対して保守性を求められるまでの体制にするのはなかなか骨が折れるのではないかと想像します……。
クラウド一体型SaaSでも運用の方針がチームで整っていなければ保守性は同じように下がります。しかし、推奨しているテストの作り方がそれぞれのツールに機能として盛り込まれている場合が多いので、実装方法について何の方針もなくテストを作って行ったとしても体裁は整っている場合が多いです。(どんな粒度のテストを作るかは置いておきます)
ツール選定の軸と、上記のようなメリデメも踏まえつつ、クラウド人事管理では最終的にmablを採択しました。
なぜmablか、という話はまた別の機会に😀(カジュアル面談などでもお話しできます!)
E2E自動テストの目的
同業他社様との相見積もりも経て、ツール導入自体はトントン拍子に進んでいったものの「なぜE2E自動テストを導入するのか。導入することでどんな未来を目指したいのか」の WHY の認識合わせを後回しにしていました。
ツール導入から約半年たった頃、クラウド人事管理チームのみなさんとE2E自動テストの目的について話し合う機会を設けました。目的、といってもその場で0から討論してみんなで決めるのには時間的なコストがかかりそうだったので、自動テストのよくある目的を準備して、認識を合わせることにしました。もちろん、ここにあるもの以外が出てくることも大歓迎です。チームなりの目的があればいい、とわたしは思います。
ここでいう「コスト感」の部分は当時実装されていたテストと目的を達成するためのテストを比較してどの程度手を加えなければいけないか、の指標です。また、下に行けばいくほどリッチな目的になっています。
最終的には 「せっかくなら一番🐼を目指したいよね」 と認識合わせをすることができました。
課題の洗い出し
目的策定の時点である程度の課題は見えていましたが、目的が定まった今、そこに到達するために何が足りないのかをあらためて洗い出しました。(理想と現実のギャップ)
洗い出した結果、テスト実装についての課題が特に多いことがわかりました。具体的には以下のような課題です。
- 各テストの目的が不明瞭(どの機能の何を確認するためのテストなのか)
- テストのためのデータ準備がテストに混ざっている
- アサーションの粒度がまちまち
- 適切なwait
- テスト用アカウントの整備
- テストが途中でFailした際に残ってしまうデータの掃除
このような細かい課題は放っておかれがちですが、わたしたちはまずこのテスト実装について見直すことにしました。E2Eテスト自動化がスタートして間もない今だからこそ、意識して整備しておくことで、将来的なメンテコスト削減に確実につながると考えたためです。
テストレビュー
「テストのレビューってどうしてる?」 「やってない」 という話はあるあるだとおもいます😇
課題として挙がっていたテスト実装の細かい部分については、mablのカスタマーサクセスの方にもテストレビューをしていただきました。
ツールの得手不得手やE2E自動テストにも知見のある方にテストレビューしていただけたことで、修正の方向性を改めて確認でき、とても良い機会だったなと思っています。
一連の活動を通して見えてきたこと
細かいものから大きなものまで、さまざまな試行錯誤をしてきた中で見えてきたことは 「人類はテストから解放されない」 ということです(笑)。自動であれ手動であれ、テストを新たに作成したり、適切に実施されるようメンテナンスをしたりといった労力は「システムを使う人(それが自分であっても)」がいる限り永遠になくなりません。
テストも開発工程の一部であるのにも関わらず、なぜかコーディング・実装とテストの間には壁ができがちな気がします。このような意識はおそらくウォーターフォールからテストの分業が進んだことに一因があるのではないかと憶測します。
分業自体は悪いことではありませんが、アジャイル開発が主流となっていくであろうこれからの時代には、チームの誰でもがテストを設計・実装できるような体制構築を進めていくことが必要だと思います。
これからやっていきたいこと
E2E自動テストにフォーカスしてお話ししてきましたが、E2E自動テストもソフトウェアテストという大きなくくりから見るとほんの一部です。
今後は手動テストも含めたテスト工程全体(たとえば、探索的テスト、UXテストなど)をもっとブラッシュアップし、その一連の活動を体系化して再現性をもたせるにはどうしたらいいかを考えていきたいです。
アジャイル開発において、テスト自動化や継続的インテグレーション/継続的デリバリー(CI/CD)は切っても切り離せません。改善できることもまだまだたくさんありますし、その改善一つひとつが、ユーザーに良いものをいち早く提供することに必ずつながると信じています。
マネーフォワードのHRソリューション本部では一緒にテスト自動化を推進していただけるQAエンジニア、SET(Software Engineer in Test)を大募集中です!また、Meetyでカジュアル面談も行っていますので、ちょっとでも楽しそう、興味ある、と思っていただけた方はぜひお話しさせてください!
もちろん、採用ページからのご応募もお待ちしております😀
マネーフォワードでは、エンジニアを募集しています。 ご応募お待ちしています。
【会社情報】 ■Wantedly ■株式会社マネーフォワード ■福岡開発拠点 ■関西開発拠点(大阪/京都)
【SNS】 ■マネーフォワード公式note ■Twitter - 【公式】マネーフォワード ■Twitter - Money Forward Developers ■connpass - マネーフォワード ■YouTube - Money Forward Developers