Autifyを導入して3ヶ月経ったので振り返ってみる

はじめに

はじめまして。QAエンジニアの佐藤です。
最近、Slackのアイコンを "ピカチュウ" から "ミミッキュ" に変更したのですが、複数人から「闇落ちしたの?」と心配されてしまったため、ミミッキュの認知度をあげていかないとなぁと思っています。笑
www.pokemon.co.jp


さて、今回はコードを書かずにテスト自動化できるプラットフォーム、Autifyを導入して3ヶ月経ったため振り返ってみたいと思います。
Autifyとは、ブラウザ上での操作を録画し、それをシナリオとして作成してくれるテスト自動化プラットフォームです。
autify.com

導入した背景

ANDPADの定期リリース後、開発者が主要動線テストを行っているのですが、フロントエンジニアの方々から

  • リリースのたびに開発者の工数を使っている
  • 毎回同じテストなので自動化したい

という声があがったのがきっかけでした。
f:id:Mimikkyu-oct:20200916214742p:plain

Autifyの

  • 一ヶ月間トライアルのキャンペーン中だった
  • テストコードを書かなくてもテスト自動化できる

という点から、まずは試してみようということで、Demo Webinarを開催していただくことになりました。
Webinarには、興味のあるエンジニアが任意で複数人参加し、質疑応答なども活発に行われました。
活用イメージが湧いたためトライアル契約することが決まりました。

トライアル期間から本運用まで

Autifyをトライアル導入するぞ! となってからはざっくり以下のスケジュールで進めました。

  • 6月 - トライアル
    • 簡単なシナリオテストを作成し、Autifyに慣れる
    • シナリオ作成時のルール決め
    • 毎時定期実行で安定性確認
  • 7月 - 契約
    • シナリオの拡充
    • 本番運用に乗せるシナリオの選定
    • 毎日定期実行で複数ブラウザの安定性確認
  • 8月
    • 一部のシナリオを本番運用開始

f:id:Mimikkyu-oct:20200916213236p:plain

E2Eテスト自動化に関わるメンバー全員がテスト自動化未経験だったため、ANDPAD技術顧問の @tarappo さんの助言をいただき、主に以下のことを意識、実行しました。

  • トライアル期間中は、スモールなテストを作って毎日実行する
  • 安定性を確認してから運用に乗せる
  • 入力値はユニーク値とする
  • E2Eは運用コストが高くなるので、代表値を確認するに留める
  • テストケースが増えがちなことを念頭においておき、運用コストが上がらないことを重要視する
  • どこの機能に対して、どのテストが有効かを確認した上で設計する

メリット・デメリット

Autifyを導入して3ヶ月間で感じた、よかったこと・よくなかったことをまとめてみました。

メリット

  • 作成・実行したシナリオテストに対してキャプチャがあるので、何をテストしているかがイメージしやすい
  • エンジニアだけではなく、QAや他のチームも巻き込んで運用できる(ソースコードを読む必要なし)
  • テスト実行がうまくいかないときに気軽にサポートに問い合わせできる

デメリット

  • Linux/chrome以外の並列実行がデフォルトでサポートされていないため実行に時間がかかる *1 *2
  • 実行環境依存の不安定さがある
  • シナリオの並び替え・フォルダ分けができない(運用に対しての手間がかかる)

メリットもデメリットもどちらもあるので、日々どうやったらコストをかけずに最大限の価値を発揮できるかを考えています!

メリットにあげたシナリオの作成画面ですが、このようになっています。
f:id:Mimikkyu-oct:20200916233952p:plain
パスワードはマスクして表示されます。
ステップをクリックすることで、入力値の変更も可能です。
画面操作の録画を行うと、このようにキャプチャと操作をシナリオとして作成してくれるので、とっても便利です。
このシナリオを実行した結果がこちらです。
f:id:Mimikkyu-oct:20200916233806p:plain
実行結果もキャプチャ付きで表示されます。
失敗があるときは失敗理由も表示されるためキャプチャをみて、どこが失敗しているのかを一目で確認することが可能です。

テストを実行した後は、実行結果がSlackに通知されるように設定しています。
f:id:Mimikkyu-oct:20200917134720p:plain
Slack通知が来ることで、テスト終わったかな?とAutifyの管理画面へ実行結果を見に行く手間が省けるため役立っています。
失敗した件数も表示されるため、失敗がある場合はすぐに確認するようにしています。


デメリットであげたシナリオの管理についてですが、並び替えやフォルダ分けが現状はできません。作成順に並んでいます。
f:id:Mimikkyu-oct:20200916232817p:plain
そのため、先頭に「画面名をつける」というルールとし、検索ボックスで検索できるような運用にしています。
また、テストプランとして画面ごとにシナリオを作成するなど工夫しています。
こちらはAutifyのロードマップに掲載されていたため今後改善されると思いますので、楽しみに待ちたいと思います(`・ω・´)

テストを実行した後、chromeでは成功していたけど、Edgeでは失敗している、というケースが稀にあります。
現状シナリオの不備や、本番環境でも失敗しているような事象ではなく、Autify環境での失敗であることが多いです。
f:id:Mimikkyu-oct:20200917140709p:plain
"不明なエラー" として失敗してしまったり、"Javascriptでエラーが発生" して失敗してしまったりします。*3
この場合は、再度実行をしてみます。
それでも解消しない場合は、「サポートを受ける」ボタンから問い合わせを行っています。
問い合わせを行った結果、改善していただき、少しずつ安定してきている状態です。(ご対応感謝しております🙇‍♀️)

さいごに

現状は、当初目標としていた主要動線テストの1/3を自動化できましたが、今年中には1/2以上は自動化していきたいと思っています。
エンジニアの方々も、私QAも、E2Eテストだけを対応しているわけではないので、まだまだやりたいのにできていないことはたくさんあります。
限られた工数の中での対応になってしまうので、運用コストをどれだけ下げられるかをAutifyに期待しています(^^♪
この3ヶ月でひとまずAutifyの知見は深まっていますので、これからもどんどん活用していきたいと思います!

ANDPADでは、一緒に働く仲間を募集中です!テスト自動化にも興味がありましたらぜひ採用サイトをご覧ください。
engineer.andpad.co.jp

*1:WindowsServerも並列実行をサポートしているが、まだ本運用にのせていないためLinux/chromeのみにフォーカスをあてています

*2:有料で並列数を増やすことが可能

*3:"Javascriptでエラー"は、シナリオ内にJSステップを追加している際に発生しています