## この記事の目的
MagicPodを利用したE2E自動テストを作るときにメンテナンス手法やちょっとしたTipsなどがWebで探してもないので、自分でずっこけながら、学んだMagicPodでのメンテナンス向上策を記載しています。
##対象者
- MagicPodを利用してみたいと思っている人
- MagicPodをこれから始める人
- MagicPodを利用しているけど、メンテを少しでも楽にしたいと思っている人。
わかること。
- メンテナンス性を上げるために気を付けていること。
- MagicPodを利用したちょっとした裏技的な使い方。
- メンテナンスを自分で辛くしないためのちょっとしたひと手間。
メンテナンス性を上げるために気を付けていること。
全てのステップを共通ステップ化する。
ステップはできるだけ、テストケース内だけに閉じないように、共通ステップに落とし込んでいます。
ステップ名を記入する時は、Gherkin記法をできるだけ意識するようにしています。
こうすることで、以下の効果を狙っています。
1)テストケースで確認したいユーザーの動きを共通ステップ名から連想しやすい。
2)他のケースとステップを共通化できることで、メンテナンスが必要な箇所を減らせる。
3)共通ステップ選ぶだけで基本的なフローを作れるので、新しいテストケースを作る時にも手間がかからない。
1は、いざテストが落ちた時に、ユーザーがどのような操作をした時に失敗するのかすぐにわかることで、
「このテストどういう流れなんだっけな。。」みたいな一手間を減らすことに役立てることができます。
また、Gherkin記法では、各ステップごとの頭につきますが、ステップにこれらを記載すると同じようなステップが山ほど増えてしまうため、未だ実現していません。
画面キャプチャは必ず、命名し、バージョニングする。
同じ画面なのに、複数枚キャプチャをとっていて、ステップごとに別のキャプチャを利用すると、画面のUIが丸ごと変更になった場合の更新に非常に時間がかかります。
なので、同じ画面でのキャプチャが増殖しないように気をつけるために以下の命名規則で、記載しています。
命名規則:"画面名_バージョン_特殊操作"
例:"コース一覧_1.1.1_検索窓表示"
こうすることで、キャプチャを減らしながら、同じ画面であっても操作が必要なものについてもカバーしています。
また、バージョニングしている理由については、リファクタリングや機能追加を行われる時に、改修していない画面の要素の変化に気づき、意図的ではない修正にも気付けるようにするためです。
新規作成や編集などの操作をする時は、乱数を利用する。
MagicPodでデータの新規作成、編集などを利用する時は、乱数を利用しています。
その理由は、作ったデータを検索する時に、その乱数を元に検索を行うことで、データの消し忘れなどで既存のデータとかち合うことをなくすことを目的としています。
そして、その乱数が格納された変数を以下のように、xpathで検索する際も利用することができます。
最悪aiのタグで、乱数を探しに行かせてもいいのですが、aiはまだ要素の検索速度も遅いです。
そのため、可能な限りai以外のタグを利用して、要素を指定して行く方がデバッグ時に時間がかかりません。
裏技としてMagicPodでは、今のところ共通ステップや通常のステップを跨いで変数を利用可能です。
なので、他の共通ステップで作成した、変数も利用できます。
乱数を変数に格納するステップを共通化しても良いのですが、このスコープを想定していない変数の利用できること自体bagなので、積極的に利用すべきではないと考えています。
https://github.com/Magic-Pod/japanese-issue-and-doc/issues/69
今後の課題
今後、自動テストを進めるにあたって直近見えてきている以下のような課題があります。
- 並列実行時に生成された乱数が重複する課題
- 複数ブラウザでのテストをする環境を作る課題
今はこれらの課題を解決している途中ですので、話が進み運用が決まり出したらまた記事作ります。
読んでいただきありがとうございました。