はじめに
初めまして、doda Xエンジニアグループの奥谷です。
みなさんは、doda Xって何かご存知でしょうか?はい、最近伸び盛りのハイクラス転職サービスのことです!!
doda Xではさらなるビジネス成果拡大という目的のためにソフトウェアデリバリパフォーマンスを向上させることを目標としています。
なぜビジネス成果の拡大にソフトウェアデリバリパフォーマンスが必要なの?と思われるかもしれません。これは、DevOps Research and Assessment(DORA)チームの研究で、高いソフトウェアデリバリパフォーマンスを持つ組織はビジネス成果を大幅に向上させることができているという研究成果に基づいた目標となっています。
ソフトウェアデリバリパフォーマンスを測定するため指標は次の4つ(Four Keys)です。
- デプロイ頻度:正常な本番環境へのリリース頻度
- 変更のリードタイム:コミットから本番環境稼働までの所要時間
- 変更失敗率:デプロイが原因で本番環境で障害が発生する割合
- サービス復旧時間:本番環境での障害から回復する時間
さらに、運用パフォーマンスを表す信頼性とのバランスを取ることが重要と報告されており、doda Xでは4指標+信頼性の5指標を設定しています。
この記事では、特に変更のリードタイム改善の1つとして取り組んだAutifyによるE2E試験の自動化について紹介したいと思います!
TL;DR
- doda Xではリリース前試験にAutifyを採用している
- リリース前試験を自動化しテスト実行の効率性が向上した
- Autifyはノーコードで作成できプログラミングスキルのない人でもテストを作成できる
- AIがUIの変更を監視しテストシナリオを自動的にアップデートするためメンテナンス性が良い
- メール受信ができメールの中身確認も可能
- Autifyをより効率的に運用するには、メンテナンス面やテスト実行方法で検討すべきポイントがある
この記事のターゲット
- Autifyに興味のある人
- WebのUI試験で困っている人
変更のリードタイムに対する取り組み
私たちは2週間のスプリントで開発・リリースを行なっており、ユーザーにとって価値のある機能を素早くリリースするためにリードタイム改善に課題意識を持っています。
一方、doda Xでは転職希望者の方に対しさまざまなサービスを提供しており、転職希望者の方の名前、住所、電話番号、職務経歴や企業の求人情報などさまざまな情報を取り扱っています。そのため、画面やメールにおける個人情報や求人情報などの開示ルールは厳密に決められており、このルールを常に担保できているかを保証することが求められます。
この開示ルールが守れているかを担保するために、リリース前試験を設けており、1つ1つの機能を実際にQAチームで手動実施し、決められた確認項目を目視確認しています。
しかし、テストシナリオ数は100以上と膨大かついずれもWebサイトを操作して実施する必要があることや、2週間のスプリントで開発を行っているためQAチームのリソースやテストスケジュールが逼迫するといった問題がありました。
そこでリリース前試験の自動化を実現するためにAutifyという自動化テストプラットフォームの導入を試みました。
Autifyとは
Autifyは、ウェブサイトやソフトウェアアプリケーションの品質保証と効率化を目的とした自動化テストプラットフォームで次の機能/特徴があります。
- ビジュアルテスト:Autifyはビジュアルテストをサポートし、ウェブページやアプリケーションの外観と動作検証やメールを受信しメール内容の確認も可能です。
- ノーコード/ローコードアプローチ:プログラミングスキルがないユーザーでも容易にテストケースを作成できます。視覚的なユーザーインターフェースを通じて、テストスクリプトを直感的に作成できます。
- 自動テストのメンテナンスをAIがサポート:テスト対象アプリケーションに変更が入った際、作成済みの自動テストにはメンテナンスが必要です。AutifyではAIがアプリケーションの変更を検知し、自動テストの一部を自動で修復。人手によるメンテナンスの負荷を軽減できます。
- 複数の環境で自動テストを並列実行:作成した自動テストは複数のブラウザやモバイル端末で並列実行が可能。複数環境の用意や環境ごとの自動テスト作成を行うことなく、テストの頻度とカバレッジを最大化できます。
これらの機能により、継続開発しながらでもテスト内容の変更などに柔軟に対応していくことができます。とても便利ですね!
Autifyの導入とその成果
Autifyのシナリオ作成の簡単な紹介とシナリオ修正のメンテナンス性やシナリオ実行の並列性を高めるためにどんな工夫をしているかを紹介させていただきます!
Autifyシナリオ作成
Autifyのシナリオはステップを作成して作っていきます。ステップはレコーディングして作るものやJavaScriptを実行するものなどさまざまあります。
レコーディングする時は「+」をクリックし
「ここにレコーディング」を選択すると、シークレットブラウザが起動し+ボタンまでのステップ(今回だとステップ1)操作が自動で進んで、レコーディングが完了した画面からさらに手動でレコーディングを追加していくことができます。
手動でレコーディングしている際に、画面表示要素のチェック追加やメール開封などをしたい場合は右下に表示される操作パネルから行うことができます。
①レコーディング:赤丸の状態だとレコーディング中です。赤丸をクリックするとレコーディングの一時停止ができます。
②メール機能:テストで使用するランダムアドレスや事前に設定した固定メールアドレスに届いたメールの開封ができます。
③チェックリスト:チェックリストを押すと画面要素を選択でき、選択した要素の表示確認ステップを追加できます。「対象のテキストが一致することを確認する」完全一致や他にも部分一致などいろいろな確認バリエーションが用意されています。
④ページ遷移:ページ遷移を追加できます。
⑤キャンセル:記録を停止し作成中のシナリオ編集画面に戻ります。
⑥保存:レコーディングした内容を保存してシナリオ編集画面に戻ります。
さらに、作成したステップを「ステップグループ」にまとめて他のシナリオでも使用することができます。(Googleの検索画面で今日の天気を検索するステップをステップグループにしています。)
シナリオのメンテナンス性を高める
自動化しようとしているリリース前試験では、転職希望者の方が求人情報を検索する操作など利用頻度の高い操作が多かったため、他シナリオでも必要になるものは積極的にステップグループにまとめていきました。また、求人情報を検索する部分でも
- 求人検索画面に移動する
- 求人検索条件を設定する
- 求人検索ボタンを押下する
というようにステップグループも細かく作っていき汎用性を高められるようにしました。また、ステップグループ作成時の命名にも一定のルールを定め、作成者がすぐに探して使用できるようにしました。
ステップグループを活用するとメンテナンス性や作業性の向上につながるので、導入時の初期段階で上記のような検討をすることをお勧めします。私たちは初期段階でこのような検討ができたため手間なく検討&導入できましたが、ある程度の数のシナリオを作った後だと既存シナリオの修正などの作業が発生し効率が悪くなる恐れがあります。
シナリオ実行の並列性を高める
Autifyのテスト実行には直列実行と並列実行があります。直列実行は登録されたシナリオを1つずつ順番に実行できます。並列実行は、複数のシナリオを同時に実行することができ、契約プランにより同時実行数が決まっています。
私たちは、シナリオ数が多く直列だと実行時間が長くなりすぎるため、なるべくシナリオを並列化する必要がありました。
シナリオを並列実行した際に起きていた問題は、
- バッチでメール送信した際に同時に実行している他シナリオのアカウントにメールが送信されてしまい、誤ったメールを開封してメールの中身確認がされてしまう。
- シナリオ間の疎結合性を高めるために、シナリオ実行のたびにアカウントを作成していたが、一部のアカウント作成に必要な承認処理を行う画面では検索機能がなかった。そのため並列実行すると複数のアカウント承認申請リストから適切な選択を行うことができずにテストが失敗してしまった。
などがありました。
この問題を解決するためにバッチや承認画面などにシナリオを並列実行できるようにするための機能を追加して対処しました。
- バッチ起動パラメータによるメール送信対象の限定
- アカウント承認画面にアカウント検索機能の追加
これらの取り組みにより
- シナリオ作成時に既存のステップグループを組み合わせるだけで大部分の操作を作成できシナリオ作成工数を小さく抑えることができた。
- 100シナリオ以上あった試験の9割以上を自動化できた。
- サイトの仕様変更があったときに特定のステップグループのみ変更すれば対応可能となり、影響範囲を最小化できた。
- シナリオの並列化を進めることで1日程度で全てのシナリオを実行できた。
というような効果を実感することができました。
導入後の感想
- ステップグループを積極的に活用したことで、サイト変更に伴うAutifyシナリオの修正をステップグループに集約することができメンテナンスが楽
- キャッチアップが容易で、作業を分散しやすく自動化がスムーズに実施できた
- 並列で自動テストを実行できるためテスト実施期間を大幅に短縮できる目処がたった
- 機能開発の時点でAutifyで自動試験をすることを念頭において、並列化の考慮をすることも場合によっては必要だと感じた
- 自動化によりQAリソースを他に回せるようになった
- 自動化を維持するためには、機能修正に伴うAutifyシナリオへの影響を開発段階から検知してシナリオ修正に取り組む必要があるため運用面の整備が今後必要
最後に
今回はAutify導入により5日ほどかかっていたリリース前試験が、少ないQAチームリソースで1日程度で完了できる見込みとなり、変更のリードタイム短縮やデプロイ頻度向上にもつながる効果をあげられたと感じています。
Autifyは、他にもリグレッションテストやモバイルテストにも活用ができるのでそちらにも今後使ってみたいです。
doda Xでは今後もソフトウェアデリバリパフォーマンス向上につながる活動を続けていき、より使いやすい機能を高品質で素早くリリースできるよう精進していきたいと思います。
奥谷 明大 Akihiro Okuya
doda_Xプロダクト統括 doda_Xエンジニアリンググループ エンジニア
2023年5月にパーソルキャリアに中途入社。dodaXの開発リードとして、プロダクトの改善に取り組んでいる。
※2024年2月現在の情報です。