🌹

自動テストを体験したくて、Autifyに入門してみましたよ

2022/06/26に公開

最近のお仕事で、レガシー化したRailsプロジェクトを改善しているんですが、こういうリファクタリングなどをしていると、なるべく小さくリリースしてデグレードが起きていないか確認しながら進めたいなぁと思うことがあります。

リリースサイクルを早めるには、リリース前のQAの時間・LT短縮が王道だと思います。
ということで、QAテストを自動化しようと、Autifyを使ってみました。
開発目線だと、自動テストならリリース回数増やしてもテスト担当者の仕事が増えないので、申し訳ない気持ちが減らせるということも期待してます。

TL;DR

リリース前のQAテストを自動化するべく、Autifyを使ってみました。

費用は、見積もり次第なので不明ですが、こちらに目安があります。

無料トライアルで14日間お試しができて、テストを作成・実行してみました。
十分使えそうでした!

対象となる読者

  • 自動テストを導入してみたい人
  • Autify なにそれ、美味しいのって人
  • リリースサイクルを早めたい人

Autifyとは?

「ブラウザ操作を記録するだけでテストが ノーコード誰にでも簡単 に作れます」
という、WEBサービス。
https://autify.com/ja

作成環境もWEBで、実行環境もWEBで、テストシナリオの共有も簡単なのが、Seleniumなどのツールとの違いになります。

エンジニアがツールやインフラを構築しなくてもすぐに始められて、構築しないので運用も不要というのがメリットです。

Why Autify

  • 前述のとおり、自前構築よりも初期・運用工数が抑えられる。
    https://autify.com/ja/stories/layerx
  • 他Saasと比較して、情報が多く、安定してそう。他にmablというのものが見つかりましたが、他にはあんまりなさそう。

試してみた

以降、無料トライアルを申し込んで、ポイントになりそうなところをログ的に記述しておきます。

申し込み

こちらから申し込み。Gmailドメインでは申込みできず、独自ドメインのメールが必要でした。
https://autify.com/ja/trial

申し込み後、正式な申し込み方法がメールで送られてくるので、手順に従います。
半日で実際に使えるようになりました。

オンボーディング

トライアルが開始するとオンボーディングのステップメールが配信されるようになり、トライアルはこちらをみながら進めれば良いと思います。

今回は、ハッピーテストとして新規でアカウント登録するテストを作成することにしました。

テストシナリオ作成

テストシナリオページから作成します。Chromeの拡張機能をインストールすることで、操作を記録し、シナリオを自動生成します。
このあたりは特に説明不要ですが、特別気になったポイントを列挙します。

  • Form入力にクリックは不要
    • レコーディングすると、入力ボックスをクリックするステップが記録されますが、実際には入力ボックスに入力するステップだけあれば動作します。
  • 一度操作記録した後にレコーディングで操作を追加したい場合は、挿入ボタンでここにレコーディング
  • Random mail addressは、レコーディングウィンドウから挿入する。
    https://help.autify.com/v1/docs/ja/email-test
  • アサーションで最終結果を確認する
    https://help.autify.com/docs/ja/assertions

作成したら、保存ボタンを押すのお忘れなく!

ランダムな文字列の生成

アカウント名にユニーク制約があるため、日付とランダムな数字を入力したいのですが、標準機能では目的が果たせませんでした。

こういう場合は、JSステップ機能を使って対応するとのことです。(TwitterでつぶやいたらAutifyの方から返信を頂きました!ありがたい!)
https://autify.zendesk.com/hc/ja/articles/900002403603--JSステップ-とはなんですか

今回は、JSステップにて日付と乱数を付与したアカウント名を生成するステップを作成しました。
参考までにこんな感じです。

var to_timezone = 9; /* TODO: REPLACE THE NUMBER */
var from_timezone_offset = new Date().getTimezoneOffset() * 60 * 1000;
var to_timezone_offset = to_timezone * 60 * 60 * 1000;
var date = new Date(Date.now() + from_timezone_offset + to_timezone_offset);

var digit = 5; /* TODO: REPLACE NUMBER */
var random = Math.floor(Math.random() * (9 * Math.pow(10, digit - 1))) +  Math.pow(10, digit - 1)

return 'muranotest' + date.getFullYear().toString() + (date.getMonth()+1) + date.getDay() + random;

テスト実行

今すぐ実行を押すと、即時実行されます。
短いステップですが、1分程度で完了し結果が表示され、無事OKになりました。

所感

  • テスト作成は、レコーディング機能でいい感じにできました。簡単だし楽しいと思います。
  • テストシナリオが増えると管理が大変そうに感じました。
  • 複雑な操作になるとJSステップを使う必要があるので、JSが使える人が1人は必要だと思います。
  • コスパが合うかが微妙そう。
    • 見積もり次第ではありますが、見積もりする価値はあると思います。

プロジェクトの状況と予算次第ですが、関連する仕事では提案していければと思っています。
皆様も良かったら無料トライアルしてみてください〜。
https://autify.com/ja/trial

Discussion