こんにちは、リモート勤務の日はパジャマのまま働いてしまいがちなOLTAのエンジニアの武内です。
今回は、私が所属しているINVOYカードの開発チームがE2EテストツールとしてAutifyを導入した際に感じたメリット・デメリット、そして活用のTipsをご紹介します。 Autify等のE2Eテストツールの導入を検討されている方の参考となれば幸いです!
※この記事の内容は2025年1月時点の情報です。最新情報は公式サイトをご確認ください。
Autifyとは
Autifyは、AIを活用したソフトウェアテスト自動化ツールです。UIを操作するだけでもテストシナリオの作成や実行が可能で、AIによる変更対応機能でテスト保守コストを削減できます。
OLTAでは2018年2月リリースのINVOYの開発において既に利用していましたが、2024年7月にリリースしたINVOYカードにおいても、ユーザー登録からカードの与信付与、カード決済までの一連の流れのリグレッションテストを自動化するために2024年8月からAutifyを導入しています。
Autifyを導入したことで、これまでリリースの度に行っていた30分ほどの手動でのリグレッションテストの工数を削減し、意図しない挙動の変更の検知ができるようになりました。
用語の整理
本題に入る前に、この記事で使用する用語を整理しておきます。
用語 | 説明 |
---|---|
シナリオ | テストの実行単位となる、一連の操作や確認処理のまとまり。 |
ステップ | シナリオ内の1つ1つの操作。値のアサーションやUI操作を行う。 |
ステップグループ | 複数シナリオ間で共通するステップをまとめたもの。例えばログイン処理をグループ化しておけば、同じ操作を再記録せずに使い回し可能。 |
デメリット
先にAutifyのデメリットを書いておきます。
1. コピペがデフォルトでサポートされていない
Autifyではクリップボードにコピーした値を検証したり、入力欄に貼り付けるような操作がデフォルトでは提供されていません。
固定値の検証であれば、基本機能でアサートを追加できますが、動的な値を扱う場合には困ります。 このような場合、後述のJSステップを作成して、画面上の値をシナリオ全体で参照できる変数に格納する処理を自分で書く必要があります。
動的な値のアサーションを行いたい場合、ノーコードでは対応しきれない場面が出てしまうのはちょっと厄介です。
2. シナリオの入れ子実行ができない
Autifyでは、シナリオ内に別のシナリオを組み込むことができません。
ステップグループを利用すれば複数のシナリオ間で共通の処理(例: ログイン)を使い回すことは可能ですが、いくつかの制約があります。
公式ドキュメントにも記載されていますが、例えば以下の場合にはグループ化できません:
- ステップグループを含んでいる
- 選択したステップがシナリオの他のステップに依存している場合。 具体的には、以下のようなステップが含まれる場合
- 他のJSステップからの戻り値を使用するステップ
- 他のステップから参照されている値を返すJSステップ
JSステップを活用できない場面があるため、柔軟なテスト設計が難しいことがあります。
3. シナリオ編集中のUndoができない
シナリオの作成中や編集中に誤ってステップを削除してしまっても、元に戻す機能がありません。
何度 Ctrl + Z を押しても操作前の状態に戻ることはないので、「こまめに保存」するしかないのが現状です。
4. リトライ処理がない
テストシナリオを作成する際、非同期処理の待機やユニークな値の払い出しが必要な場面では、リトライ処理を実装したくなることがあります。しかし、Autifyにはリトライ機能がありません。
私たちの場合は、決済のテストを行う際に取引ごとのユニークな識別子を払い出す必要がありましたが、手っ取り早くユニークな識別子を払うために、とりあえずランダムな文字列を生成したらその値をサブミットして、エラーが返ってきたら生成し直すという手順を取ろうとしました。
しかし、Autifyにはこのようなユースケースに対応するリトライ機能が存在しないため、JSでwindow.alert
の処理を書き換えて、エラーが返ってきたら再度処理を行うようにしました。
メリット
次はメリットを書いていきます。
1. UIがシンプルで使いやすい
クリック操作だけでアサーションを追加でき、直感的に利用できます。 前述の通り、動的な値を扱う場合はJSステップが必要ですが、それ以外の操作は基本的にノーコードで完結します。
また、AutifyのAIがDOM変更にある程度対応してくれるため、小さなデザイン変更であればテスト保守の手間を削減できます(ただし、大幅なデザイン変更には対応できません)。
2. Slack連携が便利
テスト実行結果をSlackに通知できるため、毎回テスト画面を確認しに行く必要がありません。
他にも、コードレビュープロセスとの連携など、外部ツールとの統合機能も豊富です。
INVOYカードの開発においては現状Slack通知以外の連携は導入していませんが、今後の開発体制の変化に合わせて連携を増やしていくことも検討しています。
3. 強力なチャットサポート機能
Autifyに限らず新しい技術を使うときは、ドキュメントが充実しているかどうかが重要です。 ただし、ドキュメントが充実していたとしても自分が欲しい情報にたどり着けないと意味がありません。
Autifyの場合は、すべてのプランにおいてオンラインチャットサポート機能が提供されています。 このチャットサポートでは問い合わせの一次対応をチャットボットが行ってくれるのですが、このチャットボットが優秀です。
例えば、Autifyのステップグループについて調べたい場合、公式ドキュメントを読む前にチャットボットに聞いてみると、ステップグループの使い方や制約について教えてくれる上に、参考となる公式ドキュメントへのリンクもいくつか教えてくれるので効率的に情報収集ができます。
仮にチャットボットが対応できない場合でも、上位のプランに申し込むことで実際の人間が対応してくれるので、安心して利用できます。
4. JavaScriptのスニペットが使える
ここまで何度かデメリットの方で主に触れてきましたが、Autifyではシナリオの中で実行するステップの一種として、JavaScriptのスニペットを実行することができます。
動的な値のやりとりやリトライ処理などのやりたいことがAutifyでサポートされていない場合でも、JSステップを活用すれば柔軟に対応可能です。 公式が公開しているスニペット集も役立ちます。
ただし、JSステップにおいてはDOM要素の取得におけるAIサポートが効かなくなるため、使用は最小限にとどめるのがベターだと考えています。
まとめ
約4ヶ月間Autifyを使用して感じたメリットとデメリットをまとめました。
Autifyは「AIを用いたノーコードテスト自動化ツール」とされていますが、現状ではJSを書く場面が少なからずあり、エンジニア以外にはややハードルが高い印象です。ただし、柔軟性が高く、リグレッションテストの自動化による工数削減という目的には十分応えるツールだと感じました。
最後に
OLTAでは、ユーザーに価値を提供し、事業を成長させるサービスを一緒に作る仲間を募集しています。 もし、この投稿にご興味を持っていただけたら、是非カジュアルにお話しさせてください。