はじめに
こんにちは、ラクマの@itinaoです。
E2Eテストについて、概要からお手軽に試す方法までを全5編で記載しています。
- E2Eテスト: 導入の必要性・何を導入するのか ← 今回はココ
- E2Eテスト: TestCafeを試す
- E2Eテスト: Github Actions上でTestCafeを試す(PCブラウザ編)
- E2Eテスト: Github Actions上でTestCafeを試す(モバイルブラウザ編)
- E2Eテスト: Selenium Gridを試す
真面目に導入すると、導入コストもかなり高く、複雑でハードルが高いです。
少しでも皆さんの参考になれば幸いです。
読書対象
- E2Eテストというワードは知っているが、どんなものか知らない方
- 技術刷新をしたいけど動作の確認コストが高い、、不安だ、、という方
- 初めてプロジェクトにE2Eテストを取り入れようと考えている方
- お手軽にE2Eテストを試してみたい方
E2Eテストとは
E2E(End to End)テストは、UI(User Interface)テストとも呼ばれ、システム全体を通してテストを行います。
Webサービスの場合は、ユーザと同じようにブラウザを操作し、挙動が期待通りになっているかを確認することができます。
特徴
下記のように、ユニットテストとは逆の特徴があります。
- 自動化したテストでコードの振る舞いをシステム全体を通して確認できるようになる
- 壊れやすく、メンテナンスが大変
- 導入・運用コストが高い
- 実行速度が遅い
よく語られるのが以下のようなピラミッドの図で、
上に行くほど、遅く・コストが高いと言われています。
メリット
- 自動化したテストでコードの振る舞いをシステム全体を通して確認できるようになる
- 機能改善やリファクタリングに対するハードルが下がる
デメリット
- 壊れやすく、メンテナンスが大変
- 細かいUIのテストを実装し、ちょっとした文言の変更等で落ちたりする
- 導入・運用コストが高い
- E2Eテストには様々な手法があり、どれを使うのか選定するのが大変
- テスト用の環境を用意する必要があり、実行コストがかかる
- ローカルでやる場合は別
- 上記で挙げた壊れやすさ故、メンテナンスコストがかかる
- 実行速度が遅い
- 実際にサーバーやブラウザを起動するため、単機能のテストとは比べ物にならない時間がかかる
- テストが通るのを長い時間待った後に、テストが落ちた場合はやる気が下がる…
E2Eテストのアンチパターン
Ice Cream Cones というアンチパターンで、
ユニットテストと比較して手動テストが大部分を占めると、コストが高くなります。
どこのチームが管理するのか
マイクロサービスだと、これらのテストの作成・保守は誰が担当するのか、という問題があります。
複数のサービスにまたがるので、E2Eテストを作成する責任を負う単一チームがいない状態です。
専属のテストチームがあるとベターです。
- QA Tests
- 手動テストを担当
- DIT(Developer in Test) Tests
- プロダクト・サービスの品質向上を目的としたエンジニアたち
- 会社によって呼ばれ方が違うらしい
- Google
- SET: Software Engineer in Test
- TE: Test Engineer
- DeNA
- SWET: Software Engineer in Test
- Googleでいう、SET + TE
- SWET: Software Engineer in Test
- Google
- Developer Tests
- 実装するエンジニアたち
E2Eテストを導入する
なぜ導入するのか
ラクマ(fril時代を含む)はリリースしてから8年以上経過しているプロダクトであり、いわゆるレガシーシステムです。
仕様や設計が複雑化しており、仕様を把握するのも、テストをするのも大変です。
現状はテストの自動化が行われていません。
個々のビジネスロジックに対するユニットテストはテストコード化されていますが、機能テストレベルのテストコードは存在していません。
そのような状況で、
大規模なリファクタリング・新しいアーキテクチャへの移行についても議論が常に行われています。
安心安全に移行していくのには、E2Eテストは必要なのでは。。
ということで導入に際して諸々調査を行いました。
E2Eツール選定
導入にあたってE2Eテストに詳しいメンバーもおらず、どのようなツールを使うかをまず検討しました。
選定する際に気にしたポイントは下記です。
- 導入コストを低くしたい
- 費用・セットアップ・学習コスト共に低くしたい
- 対応ブラウザの種類
- ブラウザのシェアを確認し、アクセス上位のブラウザは必須とする
- 並列実行の容易さ
- ラクマのページ数を考えると、並列実行ができないと後々破綻する
ブラウザのシェアを確認する
現在、アクセスが1%以上あるブラウザは下記でした。
これらを実行できるE2Eテストツールを選定したいです。
- iPhone
- Safari
- Android
- Chrome
- Windows
- Chrome
- Edge
- IE 11(サポート切りたい…)
- Mac
- Chrome
- Safari
ツールを比較する
下記の結果からTestCafeにフォーカスを当て、検証を進めていきます。
(TestCafeは上記に記載したブラウザ全てに対してテスト実行が可能でした。)
おわりに
ここまでで、なぜ導入するのか、なにを導入するのかを説明していきました。
次の記事では、ローカルの環境でTestCafeを試す方法をご紹介していきます。