導入初期によくある質問や操作のコツについて紹介します。まだMagicPodを使ったことがない場合は、まずはスタートガイドを参考にしてください。
目次
テスト作成
UI、UI要素などMagicPod特有の用語がわからない
スタートガイド:4 - 5.用語説明で詳しく紹介しています。
UI要素が選択できない
該当のUI要素の上に、他のUI要素が重なっていて選択できていない可能性があります。「一時的に隠す」を何回か行うことで上に重なっている要素を隠し、選択したいUI要素を選ぶことができます。
それでも選択できない場合は、UI一覧の該当するUIのメニューから「このUIについて問い合わせる」からUI情報を送って問い合わせることができます。その問い合わせ画面でxmlファイルをダウンロードできるので、その内容を元に新しいロケータを追加することもできます。ロケータについてはロケーターを学んでテスト自動化上級者を目指そうを参考にしてください。
参考: テスト対象の要素がUIから選択できない / 新しいロケータを追加する
操作したいUI要素が画面外にある
要素選択モードを解除した状態で、クラウドブラウザを手動でスクロールし、操作したいUI要素を画面内に表示させます。その後、キャプチャまたは再び要素選択モードを開始して要素を取得します。
何度もスクロールする必要がある場合、画面全体のUIをキャプチャする方がおすすめです。要素選択モードを解除した状態で、「ページ全体をキャプチャ」にチェックを入れキャプチャをクリックしてUIを取得し、要素を取り込みます。
実行時は、基本的には画面外にあるUI要素でも自動的にスクロールして操作してくれます。
参考: スクロールのある画面のテスト
どのロケータを使えばいいかわからない
基本的には提案されるロケータは、最初に指定されるもの、また候補の上から順におすすめです。実行ごとに変わる値が入っているロケータや長いロケータは不安定となるので、必要に応じて新しくロケータを追加してください。
参考: 新しいロケータを追加する
ログインなどテストケースをまたいで何度も行う複数の操作がある
同じ画面で入力→クリックのような複数の処理が、複数のテストケースに現れる場合、その処理を「共有ステップ」として定義することで、他のテストケースからも1つのコマンドとして利用できるようになります。修正が必要になった場合も、共有ステップの内容を1箇所書き換えるだけで済むので、テストケースのメンテナンスの手間が軽減されます。
参考: 共有ステップの活用
UI要素の特定の位置をクリックしたい
操作したいUI要素に他のUI要素が重なっている
重なっていない部分を「左端」のように指定して操作します。
MagicPodで認識できないUI要素
近くにある認識できる他のUI要素から座標X=50,Y=200のように、わざとはみ出して指定して操作します。(左上隅がX=0,Y=0で、右下隅がX=100,Y=100)
不安定になりやすいのでUI要素が選択できないを試しても解決しない場合にのみ行います。
通常の「クリック」コマンドはUI要素に紐づいているイベントなどを直接呼び出して操作しますが、「指定位置クリック」は「左端」「座標」など見た目の位置を元にクリックして操作します。
参考: 指定位置クリック
実行ごとに異なる文字列を生成したい
「現在時刻を元に生成したユニークな値を保存」コマンドを使って実行ごとに異なる変数を作成することができます。
その変数をそのまま使ったり、「名前_${変数名}」のように使ったりもできます。
動的に変化するロケータを指定したい
○番目を指定したい
例) xpath=//tr/td[3]
tdの3番目といったように指定します。xmlファイルを元に提案されるロケータから選択、もしくは新しいロケータを追加します。
部分一致で指定したい
例) xpath=//a[text()='カテゴリ(112)'] → xpath=//a[contains(text(), 'カテゴリ')]
「カテゴリ」の後ろの数字が動的に変化する場合、containsを使って「カテゴリ」のみ部分一致で指定することができるので、新しいロケータを追加してください。
どういったロケータを指定すればいいかわからない場合、UI一覧の該当するUIのメニューから「このUIについて問い合わせる」からUI情報を送って問い合わせることができます。その問い合わせ画面でxmlファイルをダウンロードできるので、それを元に新しいロケータを追加してください。ロケータについてはロケーターを学んでテスト自動化上級者を目指そうを参考にしてください。
参考: テスト対象の要素がUIから選択できない / 新しいロケータを追加する
ロケータをコピーしたい
コピーする範囲をドラッグしたままマウスから指を離さずに、ショートカットキーを押してコピーしてください。
ショートカットキーは、Macでは[cmd]+[C]、Windowsでは[ctrl]+[C]でコピーができます。
また、ロケータ横のアイコンを押すことで「複製したロケータを追加」にロケータが複製されます。このロケータを編集し、新しいロケータを追加することができます。
アラートを閉じたい
「アラートを閉じる」コマンドで閉じることができます。
アラートとはJavaScriptのアラートダイアログです。
その他のダイアログ/ポップアップ/モーダル等はUI要素として認識できるので通常通り操作します。
異なるタブ、ウィンドウに移動したい
「新しいタブ・ウィンドウを選択」「前のタブ・ウィンドウを選択」コマンドで選択することができます。
参考: 別タブ・別ウィンドウのテスト
ベーシック認証が有効になっているサイトをテストしたい
例えばhttps://example.com
に ユーザー名user1
、パスワードpass1
のBasic認証でアクセスする場合、https://user1:pass1@example.com
というURLを使うことでアクセス可能です。
参考: ベーシック認証が有効になっているサイトをテストしたい
「ブラウザを開く」コマンドのオプションの違いがわからない
動きの違いは「ブラウザを起動」を参照してください。
動作速度は基本的に (初回のみプロセス再起動)、(初回のみプロセス再起動) (Cookieをクリア)、(プロセス再起動)の順で速いですが大きく差はありません。使い方としては、一括実行時に前のテストのログイン情報などを引き継ぎたくない場合は、(初回のみプロセス再起動) (Cookieをクリア)、auth0などに情報が残る場合は(プロセス再起動)を選択してください。
テストステップを管理しやすくしたい
テストステップのかたまりをわかりやすくしたい場合、「コメント」コマンドで内容を説明したり、「空行」コマンドで空行を入れることができます。
注意書きを入れたい場合は、「コメント」コマンドで絵文字を使って強調します。
他にどんなコマンドがあるか知りたい
コマンド一覧ですべてのコマンドを確認できます。
テスト実行
UI要素が見つからないというエラーになる
失敗したステップの前に待機時間を入れる
基本的には画面の読み込みが終わるまで自動で待つようになっていますが、読み込みが足りずUI要素が見つからない場合もあります。その場合、UI要素が表示/存在/一致するまで待機、または固定値で○秒待機するコマンドなどを、失敗したステップの前に入れます。
参考: 待機コマンド
失敗したステップのUI要素に指定しているロケータを変える
MagicPodがUI要素を探す際、ロケータを使用しています。例えば以下のように実行ごとに変化するロケータである場合、テスト作成時とロケータが異なるので見つけることができず失敗します。よって提案ロケータの中から別のものに変える、もしくは新しくロケータを追加する必要があります。
-
- 金額、日時を基準としているもの
-
例) xpath=//output[text()='7,000円']
-
- 変化する可能性のあるvalueやidなどを基準としているもの
-
例) xpath=//input[@value='mp62130']
-
- 金額、日時を基準としているもの
参考: テストが失敗した時のメンテナンス方法が知りたい - 実行ごとに変化する値をロケータに含んでいる
失敗メッセージを見ても内容がわからない
ヘルプページでその失敗メッセージを検索すると解決策が見つかる場合があります。見つからなかった場合、ヘルプページを読んでも原因特定が難しい場合は「テスト失敗の理由を問い合わせる」ボタンより問い合わせてください。
テストの失敗について問い合わせたい
エラー原因がわからない場合は「テスト失敗の理由を問い合わせる」ボタンより問い合わせることができます。
スケジュール実行したい
MagicPodのスケジュール実行機能を使って定期実行を設定します。
または、CircleCI、Bitrise、JenkinsなどのCIツールでMagicPodのWebAPIを呼び出し実行します。この場合GitにPushされる度に実行という方法も可能です。
テスト結果を通知したい
メールとSlackへ通知することができます。
参考: スタートガイド:3 - 1−2.メール通知/1−3.Slack通知
または、MagicPodのWebAPIを用いてTeamsなどへ通知することもできます。
一括実行に時間がかかる
並列実行する
フローが2つある場合、フローA、フローBというラベルをテストケースにつけ、一括実行設定内のそれぞれのパターンの一方にはテストケースラベル「フローA」を含む、もう一方には「フローB」を含むように設定します。
そして共通設定の実行方法を「並列に実行」へ切り替えます。スタンダードプランの場合同時2並列が可能ですが、オプションを追加することによって最大10並列まで可能です。
ラベルではなくテストケース番号でも指定することができ、こちらはテストケースの実行順も指定することができます。
注意点としてはテストケース間の依存関係がないようにする必要があります。
例えば、
- テストケース作成時
- データを追加/削除する前後処理のステップを入れる
- データが一覧表示されている画面内である要素を操作する際、ロケータを○番目ではなく文字列基準で指定し、新しいデータが登録された後も操作できるようにする。
- 一括実行設定時
- 別のテストケースから影響を受けるテストケースは並列実行に含めない。
キャプチャを特定のステップだけとるようにする
デフォルトではすべてのステップに対しキャプチャを取りますが、特定のステップだけキャプチャをとるようにすると少し時間を短縮できます。
一括実行設定画面の「実行時画面キャプチャ」を「すべてのステップ」から「画面遷移時のみ」または「テスト失敗時のみ」を選択します。キャプチャを取りたい特定のステップがある場合は、そのステップ後に「画面キャプチャを取得」コマンドを追加します。
複数のブラウザパターンで実行したい
一括実行設定画面にて「追加」ボタンを押してパターンを追加し、それぞれに実行したいブラウザの種類を設定します。この場合も上記のように並列実行ができます。
単体実行から一括実行にすると失敗する
原因には複数のパターンあるので切り分けが難しいのですが、よくある原因としては以下があげられます。
- タイミングによって操作し損ねてたまたま失敗になった
- そのステップの前に「UI要素が表示/存在されるまで待つ」などの待機コマンドを追加すると安定します。
- 前に実行したテストで作成されたデータによって失敗になった
- 前に実行したテストの最後にデータを削除するステップを追加します。画面から、もしくはAPIが用意されているならば「Web APIコール」コマンドで呼び出して削除する方法もあります。
- ロケータを何番目ではなく文字列を基準とするものに変更します。実行ごとに文字列が変わる場合はその文字列が入った変数をロケータに入れることで対応できます。
-
例) xpath=//tr/td[3] → xpath=//tr/td[text()='${変数名}']
-
参考: テストが失敗した時のメンテナンス方法が知りたい - 実行ごとに変化する値をロケータに含んでいる
テスト管理
テストケースを管理する方法が知りたい
テストケースが多くなってくると把握しきれないので、ラベルやテストケース名で管理します。テストケースの説明も入れておくとテストケース一覧に表示されるのでわかりやすいです。
参考: ラベルを作成する
テスト結果を管理する方法が知りたい
- スプレッドシート/エクセルに結果キャプチャと結果URLを貼り付ける
- 一括実行のテスト結果からすべての結果キャプチャをダウンロードすることができます。また、「画面キャプチャを取得」コマンドを追加することで選択的にダウンロードすることもできます。
- テスト結果を管理するクラウドツールを使う(Testrail、QualityForwardなど)
- MagicPodのWebAPIからテスト結果を取得することで、自動で結果データが蓄積されます。
プロジェクトの分け方、数え方について知りたい
1つのプロダクトに対し1つのプロジェクトを割り当てるのがおすすめです。
共有UI、共有ステップはプロジェクトの中のテストケース同士で使えます。
例えば、開発環境と本番環境については対象のプロダクトは1つとなりますので、プロジェクトは分けず、テストケースを共通とすることをおすすめしております。設定からベースURLを変更することで、実行環境を変えることが可能です。
参考: テストの実行環境を切り替える(ドメインを切り替えてテストケースを使用する)
その他
どういった項目からテストを作成すればいいかわからない
まずはログインなどの基本的な機能、決済など品質保証におけるリスクが大きいものから作成します。
テストケースが数個できたところで毎日実行します。毎日テストを実行してみると、テストの安定性など、実行してみるまで気付かなかった様々な問題にぶつかります。これらを解決しながら、少しずつテストを増やしていきます。
そして広く浅く一通りの機能・画面を網羅します。手元にある手動用のテストケースを上から順番に自動化していくというよりも、優先順位をつけて、まずは基本的なテストケースだけを自動化した方が効率的です。
参考: スタートガイド:5.テスト自動化の習慣を最速で定着させる(ブラウザ)
優先順位の付け方については、テスト項目に対して自動化適性の高さから重みづけをし、点数を比較する方法もあります。