E2EテストにAutifyを使っている理由、そしてE2Eテストで大事にしていること

QAチームのbanです。今回はKaizen Platformで実施しているE2Eテスト*1について紹介します。

テスト自動化ツール「Autify」

E2Eテストには2年ほど前からAutifyをメインで使用しています。
AutifyはノーコードでWebアプリケーションのテストを作成&自動化できるツールです。テストしたい一連の挙動をブラウザで操作して記憶させることで、簡単にテストを自動化できます。また、AI補正により作成したテストが壊れにくいのも特徴です。

autify.com

Autify導入前の課題

Autify導入前はE2Eテストに課題がありました。

変化の速い時代。新しいアプリケーションや新機能は、早く作って早く試すことが求められています。しかし、これはQAにとっては大変で、素早く正確なテストが要求されることとなります。
特に悩まされるのがデグレ*2です。機能を改修すると思いもよらぬところへの影響は避けられません。デグレを防ぐためにリグレッションテスト*3が非常に重要なのですが、既存機能を一通りテスト実施する訳なので、どうしても時間がかかります。さらに何か問題があった場合は、繰り返し何度もリグレッションテストを実施しなければいけません。
Kaizen Platformには昔から「3度同じ事を繰り返す時は自動化」というポリシーがあります。リグレッションテストを含むE2Eテストについてももちろん自動化を前提に進めていました。ただ、それでも簡単に自動化できないことも多く、特に開発初期のアプリケーションの場合、手動でテストを繰り返す毎日でした。軽微な改修でも毎回QAメンバーが手動でテストを行なっており、この工数がとても大きく、リリーススピードを遅らせてしまっていました。

自動化できなかったのは主に以下のような原因でした。

  • テストコードを書くエンジニア不足
  • UIがコロコロ変わる

同じような課題を抱えている現場もあるかと思います。

まずはテストコードを書くエンジニアの不足がありました。
昨今はどこの業界もエンジニアは不足気味かと思います。テストとコードの両方に精通した人員があまりいないというのもあります。 Kaizen Platformでも新しいものを作るのが優先で、テストや保守には特に人員が足りないという状況でした。人員不足を解決するのは時間がかかります。これは簡単には解消できません。

もう一つの問題が、特に開発初期のアプリケーションはUIの変更が大きいという点でした。
自動化テストはちょっとしたUIの変更でも壊れてしまうことが多いです。UIが変わる度に自動テストを毎回作り直す必要があり、これが非常に厄介です。さらに大幅なUI変更だと完全に作り直しになります。最初は頑張っていてもすぐにテストの変更が追いつかなくなることは目に見えています。我々のチームでもこれがなかなか自動化に踏み切れない原因の一つとなっていました。

何とか状況を打開するためにテストツールの導入を試すことにしました。

Autify導入後

過去にテスト自動化のツールはいくつか試したんですが、思うような使い方ができなくて本導入までは進まずでした。その中でAutifyも試してみることにしました。

Autifyを本導入することになったポイントは以下です。

  • 非エンジニアでも自動テストが作成できる
  • 簡単に作れるので、UI変更への対応も比較的楽

Autifyはブラウザ操作を記録して自動テストを作成するので、コードが書けなくても自動テストを作成することができます。非エンジニアでも作成・運用できるのはありがたいです。自動化に対するハードルが大きく下がりました。
コードが書けるメンバーも書けないメンバーも同じツールを使って管理できるので、チーム全体が同じ目線でテストのことを意識できるようになったのも良かったです。

また、ブラウザを操作してのテスト作成は簡単で、大きな課題だったUIの変更にも比較的楽に対応することができるという点もポイントでした。
ちょっとしたUI変更であればAIがテストを自動で補正してくれるというのも心強いですが、何よりも作成が簡単だというのが大きかったです。比較的大きなUI変更があってもテストの修正がリリースに追いつかないというようなこともなく、毎週のリリース前後の作業がとてもスムーズになりました。

現在、Kaizen AdとKaizen Salesの2つのサービスでE2EテストにAutifyを利用しています。

Autifyを実際に使って感じたこと

Autifyを使い始めて2年以上となりますが、実際に長期間使ってみて感じるのが、使う側のことを丁寧に考えて作られてる点です。特に後でテストを見直すときのことが考えられているのがポイント高いです。
自動化テストはテストが通るかが重要なので、その過程は放置してしまいがちですが、QAとしては通ったら終わりじゃなくて、定期的にテストの見直しが必要です。これを怠ると、"テストのためのテスト"になってしまい、本来の目的である"品質保証としてのテスト"からどんどん離れていってしまうためです。
Autifyは、テストを見返しやすいUI、修正しやすいUIが意識されていて使いやすいです。

テスト実施時にスクリーンショットが保存されるようになっており、実施されたテストを振り返ることができます。 結果画面では操作箇所が拡大した状態で表示されるようになっているので、何の操作をしているのかが分かりやすくなっています。

テスト結果画面

各ステップの画像をクリックするとステップ詳細モーダルが開き、スクリーンショットの全体が表示されます。方向キーを押すとスクリーンショットが切り替わり、まるで倍速で手動テストをしいてるかのような操作感でテストを見返すことができます。これがとても使いやすいです。
前回の成功時のスクリーンショットと見比べることもできます。
また、そのスクリーンショットの箇所のテストをすぐに修正できるように「このステップを編集する」リンクがあるのも細やかな気遣いを感じます。

ステップ詳細モーダル
方向キー左右でスクリーンショットがパッと切り替わる

気軽にテスト実施して品質への意識を上げる

E2Eテストについて、もう一つ我々が重視していることがあります。
それはテスト実施が気軽にできることです。
どんなに優れたツールでも使わないと意味がありません。

本番環境に近い開発環境を用意してAutify専用環境とし、好きなときにdeployして手軽にE2Eテストが使えるようにしました。
これにより、軽微な改修の際はエンジニアが自分でE2Eテストを実施してリリースまで進めることができるようになりました。気軽にテストを実施できる環境を用意することで、チーム全体のテストに対する意識も変わってきたように思います。

テストはslackでコマンドを入れると実施されるようにしています。

終了するとslackに通知してくれるので、スムーズにテストを行うことができます。

おわりに

今回はKaizen Platformで実施しているE2Eテストについて紹介しました。
E2EテストをAutifyにお任せできることで、QAは新しい機能のテストに集中でき、品質を上げるための活動をより意識できるようになりました。QA以外のテストへの意識も上がってきていると感じています。
今後も手動と自動のテストを使い分けつつ、チーム全体で品質を上げていきたいと思います。

*1:End-to-End Testing:エンドユーザーと同じように操作してテストすること

*2:デグレード:今まで動いていた機能が動かなくなること

*3:回帰テスト:既存機能のテスト