テストの中でも時間を要するE2Eテストは自動化のコストが大きいし、作っても保守しづらくて大変である。これまでどれだけの開発チームがSeleniumで自動化しようとして心が折れたか想像に難くない。
この難題を解決するために、E2Eテスト自動化サービスのAutifyを導入して自動化への道を歩み始めたので感想を話す。
Autifyとは
Autifyは、Autiy, Inc.が提供するノーコードE2Eテストである。ブラウザを操作することでその操作を記録し、その操作記録をそのまま自動テストとして使うことができる。
Autifyの強みは、何といってもAIによるテスト自動メンテナンスだ。E2Eテスト自動化の難しいところとして、GUIに変更が入るとこれまで作成した自動テストが全てパーになる点である。Autifyは、GUIに変更が入ってもAIが勝手にそれっぽい部分を操作するようにテストシナリオを修正する。もし操作が間違っていても、AIに間違っていると教えることで次のテストから修正してくれる。
↑こんな感じで。
ここから、Autifyを使ってみて「良かった点」と「うーんな点」を紹介する。
良かった点1: テストが作りやすい・保守しやすい
Seleniumを使っていた身からすると、この容易性と保守性は非常にありがたい。E2Eテスト自動化で苦労する点としては、コードから操作を想像しにくい点だ。
Seleniumでテストを作る際は、
- Chromeで検証タブを開く
- 操作したい要素のXpathをコピー
- Xpathを操作メソッドに食わせる
と非常に手間であった。テストシナリオを一つ作るのに1時間かかることが普通であった。
しかし、Autifyは画面を操作するだけでテストを記録できるので、1時間あれば3つのテストシナリオを作ることも可能である。しかも、操作だけでなくアサーションやURL遷移、別ウィンドウへの切り替えも記録してくれるためブラウザ一つで完結する。 以下は、アサーション追加のイメージ。対象のテキストが一致しているか、そもそも表示されているかなどもチェックが可能。
また、テストシナリオの編集画面も何をしている試験なのかが直観的で非常にわかりやすい。レコーディングした時の画面キャプチャがサムネイルに使われるため、どの画面で何を操作しているかが一目で判別できる。また、操作と操作の間に別の操作をレコーディングして挿入することも可能なので、テスト漏れがあっても簡単に修正できる。
良かった点2: テスト結果がわかりやすい
イメージに関しては、最初の画像を参照。前回のテストと今回のテストの操作画面を並べておいてくれるため、失敗したときに何故失敗したかが非常にわかりやすい。また、操作画面の差異を出力する機能が追加されたことでUI崩れの検知もできるようになった。以下の画像のように差異部分を色付けで示してくれる。
良かった点3: メールテストが可能
どうしても手動になりがちなメールのテストまで自動化可能。ランダムでも固定でもメールアドレスを作成し、受信したメールをブラウザに表示するため、メール文面チェックも自動でできる。
また、JSステップというJavaScriptを実行する操作を使うことで、メール内から文字列を抽出して別の操作に使用することもできる。これによりパスワードリセットなどでメールで届くパスワードを抽出して、ログインできるかを試験可能である。
うーんな点: GUIのデザイン次第では想定と異なる動作をしがち
AI君は優秀だが、張り切りすぎて異なる操作をすることがある。特に苦手なのは、表形式で表示されたデータである。
以下の画像の赤線で囲んだ部分に注目してほしい。AutifyのAI君はこの4つのアイコンの区別が付かないのである。厳密に言うと上から2番目のアイコンを押したと記録した時は、絶対に上から2番目のアイコンを押してしまう。その横に表示されるデータが異なっていてもお構いなしに押してしまう。
これにより、想定と違うデータを編集したり削除したりするため、一度成功したのに次は失敗するということが発生し、過去のテストを遡って原因を探す羽目になる。そのため、検索機能などを実装して表形式で表示するデータを絞る、いっそ自動化しないなど対策が必要となる。
まとめ
いかがだろうか。最後の欠点はともかく、E2Eテスト自動化ツールの中ではとても優秀なサービスである。ノーコードなので学習コストも高くないし、使いこなすことができればどんなITサービスでもある程度自動化できるだろう。Seleniumでもう苦しみたくないという方には、検討を手放しでお勧めする。