E2Eテストの自動化、およびリグレッションテストの導入
ソーシャルデータバンク株式会社 / saimyon
チームリーダー / QAエンジニア / 従業員規模: 51名〜100名 / エンジニア組織: 11名〜50名
ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|
10名以下 | 2023年10月 | B to B B to C |
ツールの利用規模 | 10名以下 |
---|---|
ツールの利用開始時期 | 2023年10月 |
事業形態 | B to B B to C |
導入の背景・解決したかった問題
導入背景
ツール導入前の課題
- 体系化・自動化されたリグレッションテスト、およびE2Eテストの自動化基盤も存在しなかった
- そのため、市場に出てからボタンが押せない・保存ができないといったデグレに気づくこともあった
- また、ユニットテストでは気付けないデグレも発生していた
- 致命的なデグレではないものの「E2E自動テストがあれば…」と考え始めるにはいいきっかけになった。
どのような状態を目指していたか
- E2Eテストの自動化基盤ができていること
- 製品において、ユーザーにとってのコアとなる機能(CUJ: Critical User Journey)についての自動テストが定期的に実行されていること
比較した軸
- 動作速度
- 並行テスト
- マルチタブ
- 自動コード生成
- VRT
選定理由
- Githubでテストコードのバージョン管理をしたかったのでノーコード/ローコードE2Eテスト自動化ツールは除外
- 動作速度も速く、並行テストも可能なため、テスト時間を最短にできる点
- マルチタブ対応ということで、マルチタブでの操作で生じるエラーも再現・テストできる点
- 自動コード生成(Codegen)機能が便利で、コーディング経験が少ないメンバーでもベースとなるテストくらいは書けそうな点
- 公式ドキュメントが豊富で基本導入・操作に困ることが少なかった点
導入の成果
改善したかった課題はどれくらい解決されたか
- 対象リポジトリへのPRマージタイミングで、定期的にリグレッションテスト(CUJについてのE2Eテスト)が自動で実施されるようになった
どのような成果が得られたか
最低限の品質確保
- 新機能やリファクタが本番環境に入るまでに必ずCUJのテストは通るようになったため、最低限の品質は確保できるようになり、デグレが発生したとしてもクリティカルなビジネス影響が起きないようになった
テスト時間削減の実現
CUJのテストを手動で実施した場合: 7min50sec
CUJのテストをPlaywrightで自動化して実施した場合: 1min40sec
- 実行時間を80%程度削減+定期実行で品質を担保
導入時の苦労・悩み
- Playwright自体については特に苦労した点などはあまりなかった
- それよりは、PRマージのタイミングでCI(CircleCI)上でPlaywrightが実行されるようにする基盤を作るのに少し苦労した(Playwrightに問題があるということではなく個人スキルの問題)
導入に向けた社内への説明
上長・チームへの説明
- 現状の課題、PlaywrightとCypressの比較、導入イメージ・計画を伝えた
- 課題感については日々共有しており、費用についてもOSSということでかからないので、大きな障壁はなかった
活用方法
よく使う機能
- 基本的にはまずはCodegenを使って対象操作をコードに落とし込んでいる
- そのコードを元に修正、共通操作であれば関数化している
- 実際にどのように動いているのかが視覚的に見えるので、テストが落ちている場合にどこで落ちているのかがわかりやすい
- 対象ページの共通操作をまとめておくことができる
- 要素のセレクタを閉じ込められるので、POM上のメソッドを呼び出す際にはDOMを意識しなくてよくなる(=可読性が高まる)
ツールの良い点
- 公式ドキュメントが豊富
- 無料で使用できる
- 実行速度が速い
ツールの課題点
- たまにテストが落ちる原因が特定が困難な(100%再現するわけではない)場合がある
- ある程度コードが読める・書ける人ではないと導入やメンテナンスができない
ツールを検討されている方へ
Playwrightは、必ずしも高い開発力がなくても活用できます。たとえば、
1.手元のPCにPlaywrightをインストールして、対象プロダクトに対してお試しでテストをする
2.それを何かしらのツール(cronなど)で定期実行する
など、まずはやってみて、効果測定をして、CIに組み込みたいなと思ったら開発チームに協力を仰ぐ、のような流れで導入することもできます。
個人的には、E2Eテスト自動化のスキルはQAエンジニアにとって今後必須になってくるかと思います。 無料で使用できますので、まずはお試しでもいいので触ってみるのがいいのではないでしょうか。
今後の展望
現状メインリポジトリのCircleCI上でだけ動くようにしていましたが、別リポジトリとのやりとりがある操作のテストが必要になっています。 そのため、全リポジトリが本番環境相当で動くようなE2Eテスト専用環境を構築し、その環境内でPlaywrightがE2Eテストを定期(1時間に1回やPRマージタイミングで)実行するように整備中です。
また、将来的にはVRTの導入も考えています。
ソーシャルデータバンク株式会社 / saimyon
チームリーダー / QAエンジニア / 従業員規模: 51名〜100名 / エンジニア組織: 11名〜50名
よく見られているレビュー
ソーシャルデータバンク株式会社 / saimyon
チームリーダー / QAエンジニア / 従業員規模: 51名〜100名 / エンジニア組織: 11名〜50名