エンジニアリングをサポートするマクアケの自動E2Eテスト
こんにちは。株式会社マクアケでエンジニアをしている鈴木です。
普段はPaymentチームにて、経理が使う社内システムの開発を主に行っています。
今回はマクアケにおけるE2Eテストの取り組みについて紹介します。
マクアケでは、2022年頃からWorking Group(以降WG)の活動として、自動テストの導入を進めています。WGの紹介については別の記事で詳しく書かれているのでぜひそちらも読んでいただけたらと思います。
まず導入することになった背景ですが、これまでも度々E2Eを導入しようとする話が出てくる事はあったものの、他の業務との優先度の兼ね合いで立ち消えになっていました。
しかし、システムが大きくなるに連れて、リリース時に品質を保証するQAの負荷や工数も大きくなり、必要性の高まりを感じ、WGの活動として始めることになりました。
ツールについて
E2Eのツールには、DatadogのContinuous Testingを使用しています。
最小限の機能で環境を整えられること、ノーコードで運用ができること、社内のシステムの監視でも使用している点などからDatadogを採用しています。
管理の方法
Continuous Testingの課題として、テストが簡単に書き換えられてしまう可能性があります。
変更のログも残らないので、変更後にテストが失敗した場合に変更箇所の特定が難しく、修正して戻すことが大変になります。
そこで、GitHub ActionsとTerraformを使ってバックアップファイルを自動コミットするようにしました。
具体的には、Countinous Testing上の作成済みのテストを参照してHCLを生成するTerraformコマンドを実行し、リポジトリにコミットとプッシュまで行うといったことをGitHub Actionsのワークフロー上で日次で実行しています。
テスト範囲をどうやって決めたか
自動テストの実施範囲ですが、全ての範囲をテストするのは作成の工数に合わないと考え、範囲を絞ることにしました。
またテストシナリオは、QAチームと連携して作成していました。もともとQAチームが手動で行っていたテストを参考にしています。
そのテストからMakuake内で重要な導線を洗い出し、そこにおけるテストシナリオを定義しました。
テストの詳細は、会員登録やログイン、検索、プロジェクトページ、購入導線などを確認しています。
これらは動かなくなるとサービスに大きなダメージを与える機能のため、ここを中心にテストしています。
どうやって運用しているか
運用については定期実行とリリース前の実行をしており、機能追加や修正によるバグが発生していないかを確認しています。
リリース前のテストを実行することで、既存の機能が新機能の追加による影響を受けていないかを確認しています。今まではリリース時に他機能への影響がないか様々なパターンを手動で試していましたが、自動テストを導入したことにより、手動で確認する量が少なくなり、QAの効率が上がりました。
自動テストが失敗したことで必ずリリースを止めるという運用ではなく、失敗した原因を確認し、それを元にリリースの可否を判定する運用にしています。
また、作成済みの自動テストのメンテナンスについてはQAチームに依頼をしています。
WGの活動のため、活動日以外は他の業務を担当しており、エラー発生時に随時対応することが難しい問題がありました。
そのため、日常的な自動テストのメンテナンスや修正は主にQAチームが担当し、E2E WGメンバーはその補助や自動化、効率化を活動日に行うという分担になりました。
その他の運用としては、テストデータの作成も自動化することができました。
Makuakeでプロジェクトを公開するには申込から審査まで多くの手続きが存在します。依存するデータも多く、データ構造も複雑なため、テストのためにプロジェクトデータを作成する際には全ての手続きを手動で行っていました。
日常的にデータ作成をする人であれば良いのですが、新しいメンバーや、たまにしか触らないメンバーにはなかなか苦労する作業になっていました。
この自動化によって、データ作成が行いやすくなったのでQAメンバーの時間だけでなく開発部全体の効率化に繋がりました。
自動テストを定着させるために
その他にも課題として、どうやって開発部全体に自動テストを定着させるかがありました。
現在はQAチームにも協力してもらい、リリース前の自動テストを実施してもらうようにしています。
CIへの組み込みも考えていますが、自動テスト自体の実行時間が長い問題があったりするため、導入に至っていません。ここはこれからの課題になっています。
まとめ
マクアケでの自動テストの取り組みについて紹介しました。
エンジニアの中でも使われるようになり、これからより効率化に向けてチームで改善を進めています。
自動テストにより、テストの工数を削減して、新機能などの開発に注力できるような環境を作っていきたいと思います!
▼マクアケのサービスや開発組織についてはこちらもご覧ください
一緒に働く仲間を大募集中です!
いかがですか?マクアケではエンジニアを募集中です!少しでも興味を持っていただいた方は、是非カジュアル面談でお話しませんか?お気軽にご連絡ください!
◉エントリーをご希望の方
◉カジュアル面談をご希望の方
◉マクアケの中の人を知りたい方
この記事がおもしろかった!と思っていただけたら、是非「スキ」&「シェア」をしていただけますと嬉しいです。