【E2Eテスト】人力はもうきついので、Autify導入してみた件
前提知識(E2Eテストとは)
E2Eテストでは、ユーザーがアプリケーションでアクションを実行しようとするときに遭遇し得る品質問題を想定し、アプリケーションのユーザ体験全体をテストします。
単体テストや統合テストに比べて、実行時間と実装コストがかかりますが、「ユーザーはアプリケーションに不備を感じないだろう」という確信が得られます。
参考: https://atmarkit.itmedia.co.jp/ait/articles/2205/09/news033.html
Autifyとは
Autifyはノーコードと簡単な操作でスムーズにテスト作成できるソフトウェアテスト自動化プラットフォームだ。
ユーザーが使うように操作をすれば一連の内容がそのままテストシナリオになり、非エンジニアや入社まもないメンバーもすぐにテストを作り始めることができるのでテスト自動化をスケールさせられるツール。
導入のきっかけ
上述した通り、ある程度システムが複雑化すると動作確認のコストが高くなりすぎる問題が発生。
現状、手作業でシステムのことを把握しているエンジニアがあらゆる観点で動作確認をしているが、アップデートの頻度が多いため、テストに費やす時間が増え、開発スピードが落ちてしまった。
解決案として、Seleniumなどを使用して、コードでテストを構築・自動化を検討したものの、成長中のサービスにおいてはアップデートが激しく、突然のデザイン変更などがあるため、結局コードのメンテナンスコストが異常に高くなってしまいROIが著しく低くなるということが懸念された。
そこで、ソフトウェアテスト自動化プラットフォーム「Autify」を導入してみた
実際に作成したテストシナリオ
私が実際に作成したテストシナリオの一例は以下の通り。(サービス内容は非公開のため曖昧な表現にて記載します)
- 遷移フローが正しいことを確かめるテスト(ex. aボタンクリック → A画面 → bボタンクリック → B画面 )
- 主要機能が正しく作動していること(ex. 条件入力から期待する値が表示されること)
- ある操作をした時に、関連して他の挙動が正常に行われていること
検証環境でも実行することを考えて、データ依存しないようなテストシナリオを心がけて作成。
ユーザが最初に触る入力に対しての全出力を書き出して、できるだけ多くの経路を通るようなテストを作成した。
▼ テストシナリオの割合
運用方法
- 本番環境にて毎日AM9:00に主要機能の正常な稼働をしているかのテストを実行
- 検証環境にて新機能を追加した資源をデプロイして、手動で実行
得られた効果
得られた効果は以下の通り
- テスト工数を30%程度削減
- いままで3hほどかかっていたものが2hくらいに短縮できた
- テスト精度の向上
- 確実にテスト精度が上がった(と思う。数字にできなかった....)。手作業でやっていたときより、明らかに不具合の発見スピードがあがり、不具合報告数が減った。
- 心理的ストレスの軽減
- 正直ここがでかい。心(と時間)に余裕が生まれることで、「ついでにこのへんも一応見ておくか」なんてことから不具合の発見につながったり。実はAutifyで不具合発見できるようになったというより、Autifyによって生まれた時間のおかげで他の観点でテストするようになって、不具合が減ったという側面が一番大きいかも。
(補足)デメリット
一応補足で、、、、決していいところばっかりではない。
テストシナリオのメンテナンスはコードで書いた時同様に必要だったり、テスト環境をしっかり準備しておかないとテスト失敗する。この辺はちゃんと計画的に構築する必要があるので、少し面倒。
あと意外とAutifyを使うにあたっての学習コストはある気がする。。(エンジニアなら余裕だが)
まとめ
Autifyの威力すごい、、て感じですが、一方であまりにも頼りすぎると見落とすようなものも出てくるのであくまで補助的な役割として使うのがいいのかなあって感じですね
Discussion