- 印刷
- ダークライト
Autifyでは、PCサイズのブラウザに加え、多彩なモバイル実機でテストを実行できるという大きな強みがあります。
モバイル実機でのテストをAutifyで実行いただくと
- モバイル実機をお手元に自前で準備することなく
- エミュレーターでは分からない、実機特有の挙動を確認でき
- 繰り返し自動テストを実行できる
ことが何よりの利点です。
一方で、モバイル実機環境に特有の性質や制限もあるため、それらを把握した上でエミュレーターとの併用を考慮しながらテストを組むことがモバイル環境でのテスト成功の鍵を握ります。
当記事では、モバイル実機でのテストを進める上でのコツや、陥りやすい問題と解決方法について解説します。
どんなモバイル実機でテストできるのか
Autifyでサポートしているモバイル実機には、iPhone・Androidのスマートフォン、およびタブレット各種がございます。詳細は以下のドキュメントをご覧ください。
モバイル実機でのテストとエミュレーターでのテストの違い
実機とエミュレーター(Chromeのデバイスモード)では、レンダリングエンジンの差異によってテスト実行時時の挙動が微妙に異なってくるケースがございます。
両者の差を簡潔にまとめると、以下の通りです。
- エミュレーターは高速で、手軽にテストができるが厳密にはユーザー環境と異なる可能性がある
- 実機での検証は時間がかかるが、レンダリングはユーザー環境と同じになる
このため、シナリオの作成中や安定性の確認中はエミュレーターを使用し、エミュレーターで問題ないことが確認できたら実機を使用することをお勧めいたします。
モバイル実機テストをAutifyするまでの流れ
上記を踏まえた上で、Autifyでモバイル実機テストを行う流れは以下の通りです。
- モバイル実機サイズでシナリオを作成する
- モバイル実機でテストを実行する
以下に順を追って説明します。
モバイル実機サイズでシナリオをレコーディングする
以下の手順をご参照し、モバイルサイズでのシナリオを作成します。
モバイルエミュレーターのテストを安定的に成功させることが、実機実行のベースとなります。エミュレーターのテスト実行は高速ですので、繰り返しテストを実行しながらシナリオを完成させましょう。
モバイル実機でテストを実行する
モバイルエミュレーターでのテスト実行が安定したら、いよいよ実機でも実行してみましょう。実機用のテストプランを準備します。Deviceのプルダウンの右側に各種スマートフォン・タブレットの一覧が表示されますので、選択してください。
iOSの実機
Androidの実機
なお、一部の旧バージョンの実機環境では、サポート対象外の端末(バージョン)である旨が表示されます。これらの環境では、テスト実行は可能ですが、テスト結果がサポートされない点につき、ご留意ください。
モバイル実機とエミュレーターの使い分け
さて、モバイル実機環境でテストを実行できるようになった後も、実機・エミュレーターではそれぞれの特徴を生かして併用いただくことがおすすめです。以下に2つのポイントをご紹介します。
実行頻度と所要時間に合わせたテスト計画
モバイル実機でのテスト実行は一般的に低速です。高速なAutifyクラウド上でのモバイルエミュレーターによる実行に比べて、数十倍の実行時間を要することもあります。このため、頻繁に実行する必要のあるテストはエミュレーターでこまめに実行し、実機での確認は週末にまとめて行うといった使い分けをお勧めします。
なお図に記載のとおり、デフォルトでは実機能テストは1並列での実行ですが、オプションで並列数を増やすことができます。詳しくは後述の「実機のテストを複数並列で実行したい」をご覧ください。
実機で未サポートの機能を利用している場合のエミュレーターの併用
一部の機能ではモバイル実機でのテストがサポートされていないため、エミュレーターでの機能検証が必要となります。代表的なものは以下の通りです。
- ファイルアップロード
- iOS実機におけるウィンドウの切り替え
上記を含むテストを実施される場合には、機能検証はエミュレーターでテストを実行ください。
モバイル実機のテスト実行における課題
Autifyでは、モバイル実機環境でも快適なテストを実施いただけるよう日々改良に取り組んでおりますが、技術的なチャレンジが多い分野でもあります。以下に、現在知られているモバイル実機における既知の課題を挙げます。
実行速度
- モバイル実機の実行速度は、外部デバイスファーム環境の制約に大きく依存しており、高速なAutifyクラウド環境に比べてはるかに低速です。
実機特有の挙動
- レコーディング環境のPCには存在しない要素がテストの安定性に影響を及ぼすケースがあります。
- 例) OSから表示される確認ダイアログ
クリック操作の実装
- 要素に対するクリックをレコーディングした場合、ほとんどの場合において、タップではなくクリックが行われます。テスト対象のページが TouchEvent を期待している場合、イベントが発火せず、テストが失敗する可能性があります。この場合、 click などの MouseEvent を利用するようにページを変更するか、要素に対するJSステップ を使用して TouchEvent をディスパッチすることをご検討ください。(なお、この実装はエミュレータにおいても同様です)
- まれに、クリックやタップを行う座標が正しく取得できず、想定とは異なる座標に対して操作を行ってしまうケースがあります。このような座標のずれが疑われる場合は、サポートまでお問い合わせください。
タイミング問題の発生しやすさ
- モバイル実機では、ページ表示にかかる時間とテスト実行にかかる時間との差に起因するタイミング問題が生じることが、他の環境よりも発生するケースが多いです。具体例として、次のセクション「ボタンやリンクの押下後にページ遷移しない場合がある」をご覧ください。
一時的な問題
- 外部デバイスファームにある端末の状況により、不明なエラーや内部エラーが発生することがあります。多くの場合は再度テストを実行いただくと解決しますが、もし失敗が頻発するようであればご遠慮なくお問い合わせください。
実機のテスト実行、こんな時どうする?
ボタンやリンクの押下後にページ遷移しない場合がある
下記のようなケースを考えます。
- ステップ3: 「Request Demo」ボタンをクリックするとページ遷移が発生する
- ステップ4: ページ遷移後の画面文言を確認する
以下は上記のステップをiPhone実機でテストした例ですが、ステップ4でページ遷移がされていない結果となりました。
これはページ表示とテスト実行のタイミングの兼ね合いから発生しうる問題で、特に実機環境で発生しやすい傾向にあります。
他の環境でテストを実行した場合にはページ遷移するにも関わらず、実機の場合にのみ遷移に失敗するような場合には、ページ遷移が発生する操作の後にURLのアサーション(URLが〇〇であることを確認する)を加えると改善する場合があります。
もし同様のケースに遭遇された場合は、一度お試しください。
テストの実行環境毎に異なるアカウントを使いたい(モバイル実機に限らず)
実機を含む様々な環境で並行してテストを実行する可能性があるときに、環境毎にアカウントを別々にしたいという声がよく聞かれます。そのような場合は、以下の例のようなJSステップのご用意いただき、returnされた値を後続のステップで利用することが有効です。
/* 実行環境によって異なるユーザーアカウントを返す例 */
var userAgent = window.navigator.userAgent;
if (userAgent.indexOf('Android') >= 0) {
return 'Android用ユーザ';
}
else if (userAgent.indexOf('iPhone') >= 0) {
return 'iPhone用ユーザ';
}
else if (userAgent.indexOf('iPad') >= 0) {
return 'iPad用ユーザ';
}
else {
return 'デフォルトユーザ';
}
実機のテストを複数並列で実行したい
デフォルトでは実機環境の同時テスト実行数は1ですが、オプションの追加により2以上に増やすことは可能です! 実機のテストを複数並行して実行されることで、全体としてのテスト時間の削減にお役立ていただけます。お問い合わせフォームよりお気軽にご相談ください。