こんにちは。MNTSQ(モンテスキュー)株式会社でQAエンジニアをしている坂本です。
今回はソフトウェアテスト Advent Calendar 2024の場をお借りして、 弊社の自動テスト構築過程をご紹介します。
QAメンバー4名だけでなく、PdMやSREにもご協力頂きながら進めており、 2025年1月からの稼働に向けた準備が大詰めの段階です。 品質と開発スピードの両立を目指したコラボレーションの様子が少しでも伝わればうれしいです。
テスト自動化の目的
MNTSQ社ではアジャイル開発を行っており、製品のリリースサイクルごとに新規開発機能のテストと、既存機能全体のリグレッションテストを実施しています。
リグレッションテストはテスト項目数が多いため、すこし早めにテスト実施担当者とスケジュール調整する必要があります。
そこで、テストスケジュールの自由度を高めることを目的として、リグレッションテストの約9割を自動化することにしました。
テスト自動化ツールAutify
今回は、Autify(オーティファイ)という自動テスト作成ツールを用いています。 主な機能は以下の通りです。
- ノーコードのテストシナリオ作成
- テストの定期実行
- テストレポートの自動作成
テストの作成・管理・自動作成されたテストレポートの保管がWeb上で完結するため、URL一つで情報共有できるところがありがたいです。
テスト設計
手動リグレッションテストをそのままAutifyシナリオにすることは、以下の理由で避けました。
- 製品の成長とともにテスト項目が膨大になっていた
- 徐々に継ぎ足されてきたため、テストの体系が見えにくくなってきていた
その代わり、製品の性質を踏まえ、以下のテストを作成することにしました。
リグレッションテスト全体の1割についてはAutifyで実装しづらい動作であったため、手動テストとして継続することにしました。
テスト設計のレビュー
テスト設計をQA内でピアレビューした後、特に重要な権限ごとの期待動作について各製品のPdMにもレビューを依頼しました。
レビューの過程で細かい仕様の認識違いも明らかになりましたので、色々な方にレビューをして頂けて大変助かりました。
テスト用データの準備
SREへ相談し、テスト用環境を特定のテスト用データで初期化できる仕組みを作って頂きました。 この仕組みはテスト実行の安定化に対して強力です。SREチームに大変感謝しています。
自動テストが途中で落ちた際にテスト過程で作成したデータが残ることがあるのですが、この仕組みがあれば毎回同じ条件でテストをスタートできます。
- アカウント
- テストしたい権限を持つユーザーアカウントを作成します。
- ファイル
- 処理結果をテストで確認したいファイルを用意します。
- テスト用環境の設定値の調整
- 製品の実環境と同じ条件で作成されたテスト用環境に、一般的な利用場面を想定したユーザー設定値を追加していきます。
Autifyテストシナリオの実装
いよいよ、Autifyのシナリオを実装します。
Autifyレコーダーを起動させた状態で製品のUIを操作すると、その様子が記録され、Autifyの中にあるAIがステップに切り分け、テストシナリオ起こしてくれます。 このおかげで、テスト実装はコードを書かずに進めることができました。
頻度として多くはないのですが、HTMLとCSSの構成が特に複雑な画面では、 クリックしたい要素の特定方法をAutifyの中のAIがうまく割り出せないことがあります。 その場合は、人間がCSSセレクターやXPathで特定し直します。
大抵はブラウザの検証ツールからコピー&ペーストしたCSSセレクタで動くのですが、 もし画面の構成が複雑過ぎて、CSSセレクターをいい感じに簡略化できないときには、 Autifyのサポート窓口に相談すると、専門の方に手厚くフォローして頂けます。
リグレッションテストの9割を自動化する目標の元、 やることが多くて社内では細かい分析まで手が回らないことがありますので、 サポート頂けて本当に助かっています。
ひととおり実装を終えた感想
自動リグレッションテストを設計する際に一番重視したのは、いかに安全にパターンを絞るかでした。 そのためには自社が提供するウェブアプリの特徴を捉え、必ず押さえなければいけないポイントを見極めることが重要でした。
このポイントの整理に一番力を注ぎました。
ポイントを整理してからテスト項目の骨格を組み立てることで、既存の手動リグレッションテスト項目との比較もしやすくなり、 本当に移行して大丈夫か、既存のテスト項目から漏れているものはないか、追加すべきものはないかを検討する際の道筋を得られたと思います。
自動化したい内容の全体像を予め設計できたことで、目標の「9割」を実装したと表現しやすくなり、 チーム外とのコミュニケーションも取りやすくなりました。
実装後、自動テストの内容を、QAチームで日頃仕様している手動テスト項目書のフォーマットに書き起こし、 ドキュメントとして利用できるようにしています。ドキュメントを作成するとテストシナリオの粗が見えてくるので、 リファクタリングも同時に行っているのですが、最初にポイントを整理していたために迷わず作業できているように思います。
運用体制構築に向けて
来月から自動テストの運用フェーズに入ります。 ここまでは効率重視で、テスト自動化のための役割を分担して進めてきました。
- プロジェクト管理
- データ整備
- テスト設計&実装
QAチームは比較的新しい組織で、4名のQA歴は長い方から1年3ヶ月、1年1ヶ月、5ヶ月、2ヶ月ですから、 よく協力して頑張っているのではないかと思います。
ここからは、QAチームの誰もが自動テストのメンテナンスが出来るようになろう! という目標に変わりますので、以下のような活動が始まります。
- Autify勉強会
- リグレッションテスト追加・削除基準のすり合わせ
- テストレポート作成方針のすり合わせ
年明けからの運用フェーズ立ち上げも頑張ろうという意気込みで、年末の振り返りとして自動テスト構築のまとめ記事を発信させていただきました。 ここまでお読み頂きありがとうございました!