SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【デブサミ2021】セッションレポート(AD)

今こそE2Eテスト自動化ジャーニーへ踏み出そう——「Autify」で実践するE2Eテスト自動化のリアル【デブサミ2021】

【19-A-5】ソフトウェアテスト自動化ジャーニー

  • このエントリーをはてなブックマークに追加

E2Eテスト自動化ジャーニー、成功への道筋

 エンジニアが十分に足りているのであれば、E2Eテストの自動化フレームワークを用いてコードを書く選択肢もあるだろう。しかし、その場合であっても、3つの落とし穴があると近澤氏は指摘する。

 1つ目は、コードを書かなければならないことだ。技術知識が必要なため、できる人が限定され、属人化するリスクがある。また、できる人であってもコードを書くこと自体に時間がかかるため、テストを構築するために時間を要する。

 2つ目は、よく落ちるのでメンテナンスの手間がかかることだ。要素が表示される前にクリックすると、なぜか1500msのwaitが差し込まれるということが頻発する。加えて、classやidを変更したがために落ちてしまうというのも、よくある話だ。このような本質的ではないところに多くの時間を取られてしまう。

 3つ目は、クロスブラウザ実行の闇だ。ブラウザごとにバージョンを合わせてWebDriverをインストールする必要があるところに闇があり、Basic認証をちゃんとしようと思うと意外に難しく、再び闇に落ちる。さらにその先には、各ブラウザで実装の違いがあり、同じテストシナリオがそのまま使えるとは限らないという闇も待ち受けている。ここでもまた、本質的ではないところに多くの時間を取られることになる。

 これらの落とし穴をきれいに解消したいという想いで作られているAutifyだが、「単にAutifyを入れるだけでE2Eジャーニーのすべてが終わるわけではない」と近澤氏は強調する。

 ここからはAutifyを用いたE2Eテスト自動化の成功パターンを事例とともに見ていこう。

1. 責任者とプロセスを明確にする

 Autifyを入れたとしても、テストの責任者を明確にしておかなければ、日々の業務に追われて、誰も手をつけない事態が発生してしまう。「いつ誰がどのシナリオの実装をするのか」「誰がシナリオのメンテナンスを行うのか」少なくとも、この2つは明確にした上で運用体制を築くことが大切だ。

 Autifyを導入している株式会社ROBOT PAYMENTでは、ノーコードで使えるAutifyの特性を生かし、PMとCS(カスタマーサクセス)が主幹となってE2Eテストの自動化を行っている。

2. 小さく始めて徐々に広げる

 すべてのテストが自動化できるわけではない。動画の音声と映像のズレがないかをテストする場合など、人間が対応したほうが明らかに精度も効率も高いこともあるからだ。すべてのテストを自動化しようと躍起になるのではなく、「人間がやるべきこと」と「機械に任せたほうがいいこと」をきちんと切り分ける必要がある。また、いきなり複雑なテストの構築から始めて挫折しないよう、最初は 「小さくてもインパクトのあるところ」から始めて、徐々に広げていく考え方が重要である。

 Autifyを導入している株式会社GA technologiesでは、Pingコマンドを実行して接続確認をする延長で、WebサイトのCSSが崩れていないかを確認するところから始め、徐々にフォームのテストなどへと広げていった。これにより、24時間、確実にWebサイトからの問い合わせを受けられる環境を構築できた。

3. ナレッジの共有と展開を大切にする

 Autifyのようなツールを使ったとしても、属人的なプロセスにしてしまうと、できる人が限られてボトルネックになってしまう。これを避けるためには、ナレッジの共有と展開を大切にしなければならない。どのようにテストを作っていくのか、その方針をチーム内で共有することで、各人がバラバラに動いて重複や抜け漏れが発生しないようにしたい。また、自動化がうまくいかないものはアプリケーションによって異なるため、そのトライ&エラーの過程で得た知見は、広く共有しておいたほうが良いだろう。さらに、うまくいったことは社内の他職種/他部署にも横展開することで、全社を挙げて品質向上に取り組む文化を築ければ最高だ。

 株式会社LegalForceでは、シナリオ作成はQAエンジニアが行うが、開発エンジニアでも実行できるようマニュアルを作成し、チーム全体でAutifyを運用できる体制を敷いている。他にも株式会社タンバリンでは、QAエンジニア1人にナレッジが集中しないよう、チームメンバーにシナリオを作ってもらう工夫をしている。

 次に、Autify自身のE2Eテストの自動化について話が及んだ。「社内ではAutifyでE2Eテストを自動化することを『Autifyする』と呼んでいるので、AutifyもAutifyでAutifyしています」と話す近澤氏。機能ごとの「featureブランチ」をステージング環境につながっている「developブランチ」にマージするタイミングで、Circle CIからキックされたAutifyが実行されるようになっており、その後ステージング環境でリグレッションテストをすべてクリアした段階で本番環境につながっているmasterブランチにマージする流れとなっている。

Autifyのブランチストラテジーの概略図
Autifyのブランチストラテジーの概略図

 とはいえ、AutifyだけですべてのE2Eテストをカバーしているわけではない。Chrome ExtensionのRecorderは「CodeceptJS」を使ってE2Eテストを自動化しているし、Reactで書かれたアプリケーション上のWeb FrontendやTest workerは「Jest」を使うなど、適材適所を追求しているのだ。「すべてのE2Eテストが1つのソリューションで完結するはずがない。何にどれを当てればいいのかを考えて、できるだけ高いカバレッジを保つことが重要だ」(近澤氏)

 E2Eテストの自動化によって得られる成果はさまざまある。まず挙げられるのは、リグレッションテストの工数削減であり、時間やコスト的に人手ではカバーしきれなかったテストまでできるようになる点だろう。また、自動化することで浮いた時間を、より本質的な業務に充てられたり、リリースサイクルを短縮化できたりするメリットもある。「E2Eテストの自動化ジャーニーに終わりはない」と言う近澤氏は、自動化を実現した先には、例えば次のような道が開けると述べた。

  • よく失敗するテストの傾向分析をすることで、前のめりな品質改善につなげていく。
  • Shift Leftの発想で、実装フェーズからE2Eテストの自動化を実施していく。
  • Shift Rightの発想で、本番環境での定点観測を行っていく。

 そして最後に近澤氏は、「自動化に取り組んでみると、徐々に効果を実感できるようになり、それが最終的に大きな成果へとつながってくるはずだ。ぜひみなさんもE2Eテスト自動化のジャーニーを楽しんでもらいたい」とエールを送った。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
【デブサミ2021】セッションレポート連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/13710 2021/03/30 20:03

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング