テストツールmablを使ってリグレッションテストを自動化してみて感じたこと
これはiCAREのアドベントカレンダーのエントリー記事です。
1、はじめに
株式会社iCAREの開発チームでは、毎週のリリース前にQAEチームでリグレッションテストを実施しているのですが、そのテストケースや範囲が膨大で、かつ人数を考慮するととても毎週多くのテストをカバーできないよね、という点が課題でした。
そこで約3ヶ月くらいかけてチームで分担し、自動化ツールmablを使ってリグレッションテストを自動化する取り組みをしました🎉
無事に毎週のリリース時に現在自動テストを回すことができるようになったので、その苦労や実際やってみてどうだったか?という点をまとめます。
2、自動化にあたって何をしたか
毎週のリグレッションテストにおいてE2Eテストを実施しているのですが、それを自動化した動機や考慮したポイントは
【初心者向け】JaSST Tokyo(ソフトウェアテストシンポジウム)で学んだ、QAチームで行うテスト運用と自動化のエッセンス3選 - Carolのブログ
を読んでもらえるとなんとなく伝わるはず・・・
実際に自動化した際のフローは、
1)
現在あるE2Eテストのテストケースのうち、重要度が高いもの・チームのレベル感的に自動化しやすそうなものを抽出
↓
2)
チームメンバーで分担して、mabl上で作成
です。
また、第一段階として、現時点で全体のテストケースのうち20%を自動化することができています😀🎉
3、チームでの振り返り
残念ながら、正式な効果測定はまだできておりません・・・🙀😱。
が、googleのJamボードを使って、KEPT形式でチームでの振り返りをしてみました。
チーム内ではこんな意見が出ました!
Keep
・計画を立てて自動テストを導入するという取り組み自体が良かった
・手動でのテストが減ったことで、心理的にも時間的にも負担が減った気がする
・各人が自動テストの作り方を調査してチーム共有できたことが良かった
Problem
・自動化を進める際の進捗のパーセンテージを可視化できたら良かった
・作ったテストの管理方法をシステム化できれば良かった
・メンテナンスコストを考えるのが難しかった
・テスト作成時のルールを統一しておけば、分担して作成したテストの精度がもっと統一された
・機能の理解が足りなくて作成に苦労した
Try
・追加されたテスト項目や自動化したテストを数値で自動で計算できるようにしたい
・自動化してみてどれだけ便利になったのか測定してみる
・テストのメンテナンスを意識したい
・不具合が出たテストをすぐ後追いしたり評価できるようにしたい
勝手に雑〜にまとめると、
「やってみたのは良かったが、進捗管理がうまくできたら評価しやすくて良かったナァ」という雰囲気かと思っています。
4、自動化してみた個人的な感想
良かったこと
・コードを知らなくてもUIから作成できるので、普段テストする手順と似たような感覚で自動テストを作成できたため、学習コストと作成のハードルが低かった
・体感的にはテストにかかる時間と手間が1/3は縮少できた気がする
補足:毎週のリグレッションテストを実施する箇所に対して、自動テストを作成した箇所が必ずしも一致しないので正確ではない
悪かったこと
・特にない
難しかったこと
・チーム内で作る場合の作成ルールの統一をとっていなかったため、作成の話し合いに時間がかかってしまったり、完成したテストの手順に多少のばらつきが生じた。
補足:今回自動化に選定したテストは複雑なテストではなかったため、多少のばらつきが生じてもメンテナンスのコストや、自動テスト作成者以外が修正する場合にも大きな影響はなかった
今後の課題
・テストの管理方法を考えずに進めてしまったので、進捗が分かりづらく、作成後の効果測定がしづらくなってしまった
・結果を数値化するなど可視化したり、どれくらいの頻度で何を見直すかなどの、継続的なテストの見直しや評価をする仕組みを整えていなかったので、作って終わりになってしまった(参考資料:https://developers.freee.co.jp/entry/automated-test-structure-2022)
今後やってみたいこと
・今やっているテストが、どの部分・機能の、なんのテスト(障害テスト、パフォーマンステスト、負荷テスト、セキュリティテスト、構成テスト)なのかを明確に整理して管理する
・レスポンスの速さをモニタリングする
・デバイスの考慮
・テストツール(負荷テストツール・単体テストツール・メモリ監視ツール・静的解析ツール・バグ管理ツール)の使用
補足:物によってはコストかかるため難しいかも
6、まとめ
先日、テストプロセスという概念を学びました。
テスト分析・テスト設計・テスト実装・テスト実行、といった流れを指すのですが、これら各工程において、その後どう繋がっていくかを意識すると良いらしいです。
どういうことかというと、まず定義を整理したりテスト観点をまとめることも、最終的に効果的で効率の良いテストケースを作成することに繋がります。その工程や作業が何を明確にしてなんのためにやっているかを、作業の過程で意識することで次のステップに生かし、より洗練されたテストを作ることができる、ということです。(自分なりの解釈w)
振り返ると、自動化することもテストプロセスを辿ることと似ているのかな〜と思ったりもしました。自動テストを作ろう!となっても、どこから手をつけたらいいか、どこが重要なのかを抽出し、何をテストするためにどのような手順で自動テストを作成する必要があるのか、分析や設計をしなければいけなかったかもしれません。
今回は、とりあえず今あるものを手早く、楽にE2Eテストをできるようにしよう!という意図もあったので、そこまで綿密に計画を立てて自動化はできませんでしたが・・・。
ですが、自動テストを作成することを通して、改めてテスト作成のプロセスや評価の大切さを学ぶことができました!
改めて、次に自動テスト化計画第二弾があった際には、計画立てた方がいいところを整理して生かしたいと思います。
では👋