AutifyでSalesforceE2Eテストしてみた

こちらは[Salesforce Advent Calendar](https://qiita.com/advent-calendar/2022/salesforce)23日目の記事です。

## Autifyについて 
私は今年6月に18年と4ヶ月過ごしたセールスフォース・ジャパン社を離れ、E2Eテスト自動化ツールのAutifyに入社しました。AutifyはSalesforceとサービス領域は全く違えど「ITの民主化」というコンセプトでは方向性は同じと思っております。
UIに非常にこだわっており、ビジネスユーザであっても簡単に自動テストを作成、実行することが可能です。プロダクトが良いのはもちろんですが、Autifyは世界観がとても好きです。

Salesforceと同様、ファンが集まり、ユーザやパートナーコミュニティが拡大し、いずれは大きなエコシステムになり得るプロダクトと信じています。

私は今でもSalesforceが大好きで、現職でもヘビーユーザーとして利用しております。そんな大好きなプロダクト同士であるSalesforce×Autifyな感じでテストしてみました。

AutifyはSalesforce開発に利用されているShadow DOMをサポートしております。

https://prtimes.jp/main/html/rd/p/000000024.000049466.html

<以下記事抜粋>
>Shadow DOMは、Webアプリケーション開発の簡素化を目的にGoogle等によって推進されるWeb Componentsと呼ばれるコンセプトの仕様の一つです。Shadow DOMは様々なシーンで利用されるようになり、特にSalesforce Lightningアプリケーションでも利用が標準になっています。
Autifyのレコーダーを利用すれば、「Shadow DOM要素」も簡単にレコーディングし、テストシナリオを作成することができます。これにより、Salesforceアプリケーションにおいても開発からデリバリまでの一貫したプロセスを管理することができるようになります。

[チームスピリット様](https://autify.com/ja/stories/teamspirit)などAppExchangeアプリケーション開発や、最近はSalesforceのエンドユーザ企業様がE2Eテストツールとして利用されている事例も増えております。


## AutifyでSalesforceのテスト

AutifyはChromeの拡張機能レコーダーを利用し、レコーディングを開始して通常の操作を行うだけでテストシナリオを作ることができます。(とっても簡単!!

https://help.autify.com/docs/ja/recording-your-first-scenario-1

今回はAutifyで商談レコードを作成する、というシナリオのテストを行ってみたいと思います。Salesforceの画面を立ち上げ、新規商談作成の流れをレコーディングします。
レコーディングを保存すると、操作した内容がテストシナリオとして保存されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532308/1c2a1678-5a79-e408-74ed-31057f8a8bad.png)

作成したシナリオを、画面右上の「今すぐ実行」から早速実行してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532308/d3076f70-7931-2c19-b6a3-5144576f0d09.png)

今回は手動で実行ボタンを押しましたが、テストプランを作成し定期的な実行を行うことももちろん可能です。
こちらは実際にテスト実行した結果です。（成功）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532308/20681ce2-2d03-77a3-306d-56354f14fb27.png)


Autifyのテスト結果は、

- テストの結果（成功、失敗、警告など）
- 実行時間、環境
- それぞれのステップでの待機時間
- ビデオログ(New)

などテストの経緯、状況を振り返って確認することができます。

早速テスト結果の詳細を見てみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532308/1dad9389-d760-6f3d-1f4e-3795574d1e74.png)

最近リリースした[ビデオログ](https://help.autify.com/docs/ja/video-logs-for-test-results)はテストがどこでつまづいていたのか振り返ることができ、とても便利です。

## Salesforceの特性

基本的にAutifyのテスト実行の際、それぞれのステップを2~3秒でサクサク進めてくれるのですが、今回の商談作成シナリオで時間がかかっているテストステップが確認できます。(12秒~48秒)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532308/ed22ccdd-467b-3b6d-6d35-3c0bb8743b5f.png)

Salesforceの特性として、以下があげられます。

- Shadow DOMの構造内に要素が存在するケースがある
- 要素を特定するための特徴が非常に変動しやすい
- 動的に読み込みが行われるコンポーネントが多い

これはAutifyだけでなく多くのE2Eテストツールで共通する課題になる点と思いますが「商談名の項目どこ？」「フェーズどこ？」とテストツール側が迷い、テスト結果を得られるために時間がかかってしまうことがあります。Autifyにおいても前回と完全一致する要素が見つけづらく、かつ要素の探索に時間がかかりやすいといった課題が、他のWebアプリケーションよりも発生しやすくなります。

## AutifyでSalesforceをE2Eテストするコツ

これらの特性を踏まえ、以下がテストシナリオを作成する上でおすすめする内容と手順となります。

<B>なるべく1シナリオあたりのステップ数を少なく留める。
- テスト1回あたりの所要時間が減少する（途中で失敗した場合も軌道修正しやすい）
- 動的に読み込まれる箇所が少なくなることで、要素探索も安定しやすくなる

<B>テスト実行のたびに画面の表示内容が同じ状態になるようにしたシナリオを作る。リストやプルダウンなどの項目の選択状態を前回と同じにする。
- 前回テスト実行時と異なる類似要素が画面上に現れることを防ぐことで、誤った要素が選ばれやすくなることを防ぐ

大好きなプロダクト同士ですので、Salesforceさんともっと仲良くなれますように、と祈りつつ日々エンジニアチームともコミュニケーションしております。

AutifyはSalesforceテストに限らず、お客様のご要望を製品に反映できるよう日々開発を進めております。ご興味のある方はぜひ14日間無料トライアルでお試しください！

https://app.autify.com/trial?locale=ja&_gl=1*1jjz3iw*_gcl_aw*R0NMLjE2Njc0NzgyMzYuQ2p3S0NBand6WTJiQmhCNkVpd0FQcFVwWmlYMlVwRE10bTFXT3N2RElFajRjdlVJeWVRUDZ0Q3F3RnkwVUowcHVlaldIVEtkSWpIMEpSb0NXOWdRQXZEX0J3RQ..*_ga*NzE5MTY2MjU0LjE2NTQ1ODA0ODE.*_ga_8FRW7SDR9E*MTY3MTgzNjUwMC4yMjguMS4xNjcxODM5MTA3LjAuMC4w&_ga=2.77108368.401877393.1671760233-719166254.1654580481

※今回の記事作成において、上記のナレッジを提供してくださったAutifyの営業、ソリューションアーキテクト、カスタマーサクセス、サポート、エンジニアの皆さま、ありがとうございます。