導入初期によくある質問や操作のコツについて紹介します。まだMagicPodを使ったことがない場合は、まずはスタートガイドを参考にしてください。
目次
テスト作成
UI、UI要素などMagicPod特有の用語がわからない
スタートガイド:4 - 5.用語説明で詳しく紹介しています。
UI要素が選択できない
該当のUI要素の上に、他のUI要素が重なっていて選択できていない可能性があります。「一時的に隠す」を何回か行うことで上に重なっている要素を隠し、選択したいUI要素を選ぶことができます。
それでも選択できない場合は、UI一覧の該当するUIのメニューから「このUIについて問い合わせる」からUI情報を送って問い合わせることができます。その問い合わせ画面でxmlファイルをダウンロードできるので、その内容を元に新しいロケータを追加することもできます。ロケータについてはロケーターを学んでテスト自動化上級者を目指そうを参考にしてください。
参考: テスト対象の要素がUIから選択できない / 新しいロケータを追加する
また全体的に要素がうまく取れない場合、WebViewではないかを確認してください。WebViewに対しては通常とは異なるスキャンをかける必要があります。
Webview内の要素の場合は「WebViewをスキャン」にチェックを入れてキャプチャすると、HTMLとして扱うことができ、選択できるようになります。Webview内かどうかの判断はxmlファイルで確認することもできます。
参考: WebView内の要素が取れない
操作したい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]でコピーができます。
また、ロケータ横のアイコンを押すことで「複製したロケータを追加」にロケータが複製されます。このロケータを編集し、新しいロケータを追加することができます。
ダイアログを閉じたい
UI要素として認識できるので通常通り操作します。
WebView内の要素が取れない
「WebViewをスキャン」にチェックを入れてキャプチャすると、WebView内の要素をHTMLとして扱うことができ、選択できるようになります。
参考: WebViewのテストについて
設定アプリなどの他のアプリを起動したい
「他のアプリを起動(iOS/Android)」コマンドで別のアプリを起動できます。
テストステップを管理しやすくしたい
テストステップのかたまりをわかりやすくしたい場合、「コメント」コマンドで内容を説明したり、「空行」コマンドで空行を入れることができます。
注意書きを入れたい場合は、「コメント」コマンドで絵文字を使って強調します。
他にどんなコマンドがあるか知りたい
コマンド一覧ですべてのコマンドを確認できます。
テスト実行
UI要素が見つからないというエラーになる
失敗したステップの前に待機時間を入れる
基本的には画面の読み込みが終わるまで自動で待つようになっていますが、読み込みが足りずUI要素が見つからない場合もあります。その場合、UI要素が表示/存在/一致するまで待機、または固定値で○秒待機するコマンドなどを、失敗したステップの前に入れます。
参考: 待機コマンド
失敗したステップのUI要素に指定しているロケータを変える
MagicPodがUI要素を探す際、ロケータを使用しています。例えば以下のように実行ごとに変化するロケータである場合、テスト作成時とロケータが異なるので見つけることができず失敗します。よって提案ロケータの中から別のものに変える、もしくは新しくロケータを追加する必要があります。
-
- 金額、日時を基準としているもの
-
例) xpath=//output[text()='7,000円']
-
- 変化する可能性のあるvalueやidなどを基準としているもの
-
例) xpath=//input[@value='mp62130']
-
- 金額、日時を基準としているもの
参考: テストが失敗した時のメンテナンス方法が知りたい - 実行ごとに変化する値をロケータに含んでいる
失敗メッセージを見ても内容がわからない
ヘルプページでその失敗メッセージを検索すると解決策が見つかる場合があります。見つからなかった場合、ヘルプページを読んでも原因特定が難しい場合は「テスト失敗の理由を問い合わせる」ボタンより問い合わせてください。
テストの失敗について問い合わせたい
エラー原因がわからない場合は「テスト失敗の理由を問い合わせる」ボタンより問い合わせることができます。
スケジュール実行したい
Bitrise、CircleCIなどのCIツールを用いて、定期的にビルド+一括テスト実行できるようスケジュールを組みます。GitにPushされる度に実行という方法も可能です。
参考: スタートガイド:3 - 1.日次ビルド+一括テスト実行スケジュール設定(Bitrise)
テスト結果を通知したい
メールと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、共有ステップはプロジェクトの中のテストケース同士で使えます。
テスト対象のアプリが、iOSとAndroidそれぞれ対応している場合、プロジェクトは分けることをおすすめしています。テストケースもそれぞれ作る必要があります。WebViewをメインとしたアプリであれば、共通のテストケースを使用することもできます。
その他
どういった項目からテストを作成すればいいかわからない
まずはログインなどの基本的な機能、決済など品質保証におけるリスクが大きいものから作成します。
テストケースが数個できたところで毎日実行します。毎日テストを実行してみると、テストの安定性など、実行してみるまで気付かなかった様々な問題にぶつかります。これらを解決しながら、少しずつテストを増やしていきます。
そして広く浅く一通りの機能・画面を網羅します。手元にある手動用のテストケースを上から順番に自動化していくというよりも、優先順位をつけて、まずは基本的なテストケースだけを自動化した方が効率的です。
参考: スタートガイド:5.テスト自動化の習慣を最速で定着させる
優先順位の付け方については、テスト項目に対して自動化適性の高さから重みづけをし、点数を比較する方法もあります。