
mablのサイトに「Best practices」というメニューがあって、その内容がとてもよかったのでざっくり翻訳してみました。mablにかぎらず、テスティングプラットフォームサービスを活用したテスト自動化の指針になるかも。
用語集はこんなかんじ。
- Plan: テスト計画みたいなもの。Planがテストケースを含む
- Test: テストケース。自動実行される
- Run: 実行のこと。1テストケース実行すると1Runになる。Planに10ケースあるなら、それを実行すると10Runになる
- トレーナー: テストを記録するChrome Extension。トレーナーを起動し、画面をぽちぽちするだけでテストケースが作れる
- トレーニング: 画面をぽちぽちしてテストを作ること
1. ブラウザのローカルストレージをクリアする。もしくは、mablトレーナーが匿名ブラウザを使えるようにする
- ローカルストレージがアプリの状態などの設定値を持ってしまうかもしれません。mablも状態を意識せずにテスト実行したいので、トレーニングの前にアプリのストレージをクリアしましょう。
- もしくは、匿名ブラウザを有効にしましょう。そうすれば、毎回のトレーニングセッションをまっさらな環境で実行できるようになります。
2. ページが切り替わるごとにアサーションを入れましょう
- 新しいページを開くたびに、アサーションを追加しましょう。これによって、テストが正しいページにいることを確認できます。
- もし、なにかアクションをしたときに要素が現れたり消えたりするならば、そのたびにアサートをいれてその存在を確認すべきです。
3. 同じテストを複数環境で実行しましょう
- いろんなアプリ環境に対してトレーニングを開始し、テストを作るだけでOKです。
- あとはQA環境、ステージング、プロダクションと言った環境に合わせて「Plan」を作るだけで、複数環境で同じケースを実行できるようになります。
4. 動的にデータが変わる場合は「Find Element」の利用を検討しましょう
- トレーナーには「Find Element」という機能があります。
- この機能はCSS SelectorやXPathを使って、要素をとても簡単に見つけられます。
- トレーニングの間、トレーナーは、見つけた要素を自動的にハイライト表示してくれます。
5. それぞれのRunではユニークなデータを生成して変数として使いましょう
- トレーナーを使って変数を定義したり利用したりできます。
- たとえば、ランダムな文字列をテキストフィールドにいれれば、「そのテストの実行値」として判別できるようになります。
- IDやユーザ名といった一意性がもとめられる要素にも使えるため、毎回テスト環境のデータをリセットする必要もなくなります。
- 詳細はUsing Variablesを参考にしてください。
6. mablのauto-login機能を使いましょう
- クレデンシャル情報の管理は大変です。mablのauto-login機能を使えば、mablのEnterpriseレベルの鍵管理サービスの恩恵を受けられます。さらに、簡単に更新できます。
- auto-login機能を使えば、トレーナーがログインを記録するときや、テストに失敗してしまったときに、クレデンシャル情報をあやまってログに記録してしまうリスクを避けられます。
- この機能を使うときは、Planに設定されているURLをログインページにしておくとよいです。テストスピードもはやくなりますし、ログインフォームもmablが自動検出します。
7. Capture hovers は控えめに使いましょう
- mablトレーナーの「record hovers」にチェックを入れるだけで使える機能です。
- この機能を有効にするとマウスがhoverした要素を順次記録します。
- よってステップがものすごく増えます(実行時間も長くなります)。なにか明確な意図がある場合のみ利用してください。
- トレーナーが邪魔で一時的にそれを移動しても、Hoversはmablトレーナーの上にマウスカーソルが来た場合は記録しません。
- CSS Selector or XPath も特定の要素のHover情報送信に使われます。
8. 必要であればリンクのクローラとして「Use strict URL prefixパラメタ」を使いましょう
- https://docs.example.com/ や https://apps.example.com/ というようにサブドメインを使っている場合のプラクティスです。
- このパラメタを設定することで特定のドメインのみテスト実行するようになります。
9. mablをデリバリパイプラインに統合しましょう
- mabl APIを介して、デプロイしたり実行結果の取得が簡単になります。
- Settings –> APIsから詳細な情報を確認してください
- デプロイごとにテスト実行をスケジューリングさせるといったトリガとして利用できます。
- mablにはnative Jenkins pluginもあります
10. 本番環境でmablを実行する場合は、フィルタをつかってアクセス解析等を回避できます
- すべてのリクエストヘッダには「
X-Mabl-Agent
」がつきます。e.g.X-Mabl-Agent: Mabl/0.1
- すべてのユーザエージェント設定には
mabl
を含んだオペレーション情報がつきます。 e.g.Mozilla/5.0 (X11; Linux mabl) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36
- mabl Link を使っていないならば、すべてのトラフィックは静的IPアドレスブロックからになるため、mablからのアクセスを特定しやすいはずです。
11. テスト環境をセキュアにしましょう
- mablはBasic認証をサポートしています。
- カスタムHTTPヘッダや静的IPアドレスをmablからのトラフィックのホワイトリストとしてファイアウォール等に設定できます。
- デフォルトでは、カスタムユーザエージェントヘッダ(x-mabl-agent) はmablからのHTTPリクエスト全般を含むものです。
- 「Introduction to mabl Link」を参考にmabl Link(トンネリング機能。たとえば、 https://uat.example.comからローカルのhttp://localhost:3000 につないだりできる)を活用すれば、セキュアなテスト環境にmablから接続可能です。
参考: Best practices