モバイル アプリケーションのテスト時のトラブルシューティング

[アプリケーションの選択] ダイアログにモバイル デバイスが表示されない理由

Silk4J がモバイル デバイスやエミュレータを認識できないと、アプリケーションの選択 ダイアログの モバイル タブにはデバイスやエミュレータが表示されません。さらに、アプリケーションの選択 ダイアログの Web タブにも、そのデバイスやエミュレータ上にインストールされているモバイル ブラウザーが表示されません。

Silk4J が、次の何れかが原因でモバイル デバイスまたはエミュレータを認識していない可能性があります。
原因 解決策
エミュレータが実行されていない。 エミュレータを開始します。
Android Debug Bridge (adb) がモバイル デバイスを認識しない。 モバイル デバイスが adb によって認識されているかどうか確認するには:
  1. Android SDK をインストールしたフォルダで、Android Debug Bridge (adb) がある場所に移動します。Android SDK がインストールされていない場合、C:\Program Files (x86)\Silk\SilkTest\ng\Mobile\windows\AndroidTools\platform-tools に移動して、Silk4J がインストールした adb を使用します。
  2. Shift を押しながら、ファイル エクスプローラ ウィンドウで右クリックします。
  3. コマンド ウィンドウをここで開く を選択します。
  4. コマンド ウィンドウで、 adb devices を入力して、アタッチしたすべてのデバイスのリストを得ます。
  5. デバイスがリストされない場合、USB デバッグがデバイスで有効化されていること、および適切な USB ドライバがインストールされていることを確認します。
  6. adb server is out of date」のようなエラーが発生する場合は、C:\Program Files (x86)\Silk\SilkTest\ng\Mobile\windows\AndroidTools\platform-tools の adb のバージョンがローカルの Android SDKの adb のバージョンと一致していることを確認してください。詳細については、「Open Agent とデバイスとの接続が不安定な場合の対処方法」を参照してください。
デバイスのオペレーティング システムのバージョンを Silk4J がサポートしていない。 サポートするモバイル オペレーティング システムのバージョンについては、リリース ノート を参照してください。
デバイスの USB ドライバがローカル マシンにインストールされていない。 デバイスの USB ドライバをローカル マシンにインストールしてください。詳細については、「USB ドライバをインストールする」を参照してください。
USB デバッグがデバイスで有効化されていない。 USB デバッグをデバイスで有効化してください。詳細については、「USB デバッグの有効化」を参照してください。
注: どの解決策を適用しても解決できない場合は、デバイスを再起動してみてください。

URL に移動せずに Silk4JChrome for Android で URL を検索する理由

アドレス バーに入力された URL を、Chrome for Android が検索として解釈する場合があります。回避策として、URL に移動するコマンドをスクリプトに手動で追加できます。

adb サーバーが正しく起動しない場合にすべきこと

Android Debug Bridge (adb) サーバーが開始するとき、ローカル TCP ポート 5037 にバインドし、adb クライアントから送信されてくるコマンドをリッスンします。すべての adb クライアントは、ポート 5037 を使用して、adb サーバーと通信します。adb サーバーは、5555 から 5585 の範囲 (エミュレータやデバイスで使用される範囲) で奇数のポートをスキャンしてエミュレータやデバイス インスタンスを探します。adb はこれらのポートの変更を許しません。adb 開始中に問題が発生した場合、これらの範囲のポートの 1 つが、他のプログラムによって既に使用されているかどうか確認します。

詳細については、http://developer.android.com/tools/help/adb.html を参照してください。

Open Agent とデバイスとの接続が不安定な場合の対処方法

Android SDK、または Android Debug Bridge (adb) を使用するその他のツールをインストールしている場合、Silk4J が使用する adb サーバー以外のサーバーが実行中の可能性があります。バージョンの異なる adb サーバーが実行中の場合、Open Agent とデバイスとの接続が不安定になったり、接続できない場合があります。

このようなバージョンの不一致によるエラーを避けるには、環境変数 SILK_ANDROID_HOMEAndroid SDK ディレクトリへのパス(C:\Users\<ユーザー>\AppData\Local\Android\android-sdk など)を指定してください。Information Service が実行中の場合、Windows のサービス マネージャーを使用して、Silk Test Information Service を再起動して更新した環境変数を適用する必要があります。環境変数が設定されていない場合は、Silk4JSilk4J に同梱されたバージョンの adb を使用します。

エラー「メモリの割り当てに失敗しました:8」が発生する理由

エミュレータを開始しているときに、システムが十分なメモリを割り当てることができない場合に、このエラーが表示されます。以下を行ってみてください。

  1. エミュレータのメモリ オプションの RAM サイズを下げる
  2. Intel HAXM の RAM サイズを下げるRAM サイズを下げるには、IntelHaxm.exe を再度実行して、Change を選択します。
  3. タスク マネージャ を開き、十分なフリー メモリが利用可能かどうかを確認します。不足している場合、プログラムを閉じてメモリを開放してください。

iOS デバイスのテスト時に「Silk Test は指定したアプリを開始できません」というエラーが発生する理由

このエラーが発生する原因として、以下の理由が考えられます。
原因 解決策
iOS デバイスがデベロッパ モードになっていない。 次の 2 種類の方法のいずれかで、デベロッパ モードを有効化できます。
  • Xcode がインストールされている Mac にデバイスを接続し、テストするアプリをデバイスで開始します。
  • プロビジョニング プロファイルをデバイスに追加します。
    1. Xcode を開きます。
    2. Window > Devices を選択します。
    3. iOS デバイスを右クリックします。
    4. Show Provisioning Profiles を選択します。
    5. プロビジョニング プロファイルを追加します。
デバイスの iOS のバージョンを最近更新した。
  1. Xcode を開きます。
  2. Window > Devices を選択します。
  3. Xcode がシンボル ファイルを処理するまで待機します。
UI オートメーションが iOS デバイスで有効化されていない。
  1. 設定 > デベロッパ を選択します。
  2. Enable UI Automation をオンにします。
Web インスペクタiOS デバイスで有効化されていない(モバイル Web アプリケーションのテストの場合)。
  1. 設定 > Safari > 詳細 をクリックします。
  2. Web インスペクタ をオンにします。
テストするアプリがテストしようとしている iOS デバイスの iOS バージョン用にビルドされていない。 Xcode を使用してデバイスの iOS バージョン用にアプリをビルドします。
ソフトウェア・アップデート ダイアログ ボックスが iOS デバイス上で開いている。 ダイアログ ボックスを閉じ、ソフトウェアの自動アップデートを無効化します。
  1. 設定 > iTunes & App Store > 自動ダウンロード を選択します。
  2. アップデート をオフにします。

Android デバイスの動的ハードウェア コントロールに戻るボタンだけが表示される理由

テストの開始時に Android デバイスや Android エミュレータの画面がロックされると、デバイスやエミュレータが動的ハードウェア コントロールに 戻る ボタンだけを表示する場合があります。

この問題を解決するには、Open Agent を停止し、デバイスを再起動してから、デバイスの設定を画面のロックをしないように設定してください。

Android デバイスまたはエミュレータにキーボードが表示されなくなる理由

Unicode 文字列をサポートするために、Silk4J は標準キーボードをカスタム キーボードに置き換えます。そして、テストの完了時に元のキーボードに戻します。テスト中にエラーが発生すると、カスタム キーボードが設定されたまま、元に戻らない場合があります。

この問題を解決するには、設定 > 言語と入力 > 現在のキーボード を開き、手動で元のキーボードに戻してください。

テスト中にデバイスが応答しなくなる理由

テストの開始時に、デバイス、エミュレータ、シミュレータの画面がロックされると、Silk4J は画面のロックを解除できず、デバイス、エミュレータ、シミュレータが操作に応答しなくなる場合があります。

この問題を解決するには、Open Agent を停止し、デバイスの設定を画面のロックをしないように設定してください。

Information Service を Mac にインストールできない理由

システム環境設定の セキュリティとプライバシー で、一般 タブの ダウンロードしたアプリケーションの実行許可 設定が Mac App Store と確認済みの開発元からのアプリケーションを許可(デフォルト値)に設定されている場合、Information Service セットアップを開いているときに次のエラー メッセージが表示されます。
"SilkTestInformationService<バージョン>.pkg" は、開発元が未確認のため開けません。
この問題を解決するには、次のいずれかを行います。
  • セットアップ ファイルを右クリックして、開く を選択します。警告メッセージが表示されても、ファイルを開くことができます。
  • ダウンロードしたアプリケーションの実行許可 設定を すべてのアプリケーションを許可 に設定します。
  • ファイルを開いた後、システム環境設定の セキュリティとプライバシー一般 タブを開き、このまま開く をクリックします。

Android アプリの記録時に記録ウィンドウが真っ暗になる理由

金融取引を処理するアプリなど、高レベルなセキュリティを必要とする Android アプリでは、Silk4J がアプリのキャプチャをできないようにするために、FLAG_SECURE フラグが設定されている可能性があります。Silk4J は、記録時に Android デバイスのスクリーンショットやビデオを利用しますが、テストする Android アプリにこのフラグが設定されていると、記録中 ウィンドウにはデバイスの真っ黒な画面が表示されます。Silk Test でこのようなアプリをテストするには、テスト中に FLAG_SECURE フラグを設定しないよう、アプリの開発チームに依頼してください。

Android エミュレータでのテスト時に Silk4J がビデオを表示しない理由

エミュレータがレンダリングにコンピュータのグラフィック カードを使用している場合、Silk4J のビデオ キャプチャが機能しない場合があります。この問題を解決するには、ソフトウェアでグラフィックでエミュレートします。
  1. Android Virtual Device Manager を開きます。
  2. エミュレータの Actions 列の Edit をクリックします。
  3. Virtual Device Configuration ダイアログ Emulated Performance 領域で、リストから Software を選択します。

クラウド環境でのテスト時に Silk4J がビデオを表示しない理由

クラウド環境でテストする場合、必要なポートがオープンになっていないことなどが原因で、テストの記録や再生時にビデオの表示が機能しない場合があります。

この問題を解決するには、infoservice.properties ファイルに WebDriver ホストの URL リストを指定します。このプロパティ ファイルについての詳細は、「Silk Test Information Service プロパティの編集」を参照してください。infoservice.disableScreencastHosts オプションをファイルに追加し、次のように入力します。
infoservice.disableScreencastHosts=<URL_1>,<URL_2>, ...
例:
infoservice.disableScreencastHosts=http://my-webdriver-server-url.com:80/wd/hub
ワイルドカードとしてアスタリスク(*)を使用して、*my-webdriver-server-url.com のような URL パターンを指定することができます。

この設定により、指定したホストでの記録と再生時に、Silk4J はビデオの代わりに連続したスクリーンショットを表示するようになります。

Xcode のインストール バージョンを変更する方法

Xcode の最新版にアップグレードしてしまった場合など、使用している Xcode のバージョンを Silk4J がサポートしていない場合、iOS でテストする際にエラー メッセージが表示される場合があります。

インストールした Xcode のバージョンをサポートするバージョンで置換するには、サポートするバージョンの Xcode を https://developer.apple.com/download/more/ からダウンロードし、サポートされていないバージョンをダウンロードしたバージョンで置換します。サポートする Xcode のバージョンについての情報は、『リリース ノート』を参照してください。

Mac のディスクの空き容量がなくなった場合の対処

Silk4JiOSデバイスの自動化に Instruments を使用します。このツールは、/Library/Caches/com.apple.dt.instruments ディレクトリに大きなログ ファイルを生成するため、Mac のディスクの空き容量を圧迫している場合があります。この問題を解決するために、手動であるいは cron ジョブを使用して、これらのログ ファイルを定期的に削除することを Micro Focus は推奨します。たとえば、毎日同じ時間にファイルを削除するには、次の手順を実行します。
  1. ターミナルで「sudo crontab -e」を入力します。crontab を root として編集できるエディタが開きます。
  2. 次の行を crontab に追加します。
    0 2 1 * * find /Library/Caches/com.apple.dt.instruments -mtime +10 -delete
  3. crontab を保存します。

この例では、10 日より前のすべてのログ ファイルが、毎日午前 2 時にディレクトリから削除されます。

エラー メッセージ「WebDriver エージェントにテスト用の署名ができません」によってテストが失敗する理由

物理 iOS デバイス上でテストを行う場合、通常このエラーは WebDriverAgent アプリのビルド プロセス中に、プロビジョニング プロファイルでサインされていないか問題があったことを意味します。

デバイスが接続されている Mac マシンで次のコマンドを実行して、実際の問題を確認できます。
cd /Applications/Silk/Mobile/common/Appium/node_modules/appium-xcuitest-driver
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=<udid>' test
/Applications/Silk/Mobile/common/Appium/node_modules/appium-xcuitest-driver フォルダーにある Resources フォルダーが存在し、そのフォルダーに WebDriverAgent.bundle ファイルがあることを確認します。存在しない場合は、このフォルダーを作成し、空の WebDriverAgent.bundle ファイルを作成します。たとえば、次のコマンドを実行します。
mkdir -p Resources/WebDriverAgent.bundle

Developer Tools Access による他のプロセスの制御の要求を抑える方法

iOS 上でテストの実行を開始すると、つぎのメッセージようなメッセージ ボックスが表示される場合があります。
Developer Tools Access は、デバッグを続けるためにほかのプロセスを制御する必要があります。 これを許可するには、パスワードを入力してください。パスワードを入力して許可します。
このメッセージを抑制するには、ターミナルで次のコマンドを実行します。
sudo /usr/sbin/DevToolsSecurity --enable

iPad 上のモバイル Web アプリケーションのテスト時に矩形領域がずれる理由

iPad 上のモバイル Web アプリケーションのテスト時にコントロールを囲む矩形領域がずれている場合、複数のブラウザー タブが開いており、タブ バーが表示されている場合があります。この問題を回避するには、1 つを残して、ほかのすべてのタブを閉じてください。

Silk4J のアップデート後にデバイス上でテストの記録と再生が動作しない理由

Silk4J の新しいバージョンにアップデートすると、Silk4J の以前のバージョンでモバイル テスト用に使用してきた物理モバイル デバイス上の Appium アプリも自動的にアップデートされます。何らかの理由でこれらのアプリが自動的にアップデートされないと、そのデバイス上でテストの記録と再生が正常に動作しない場合があります。

Silk4J のアップデート後に、Android デバイスでこのような問題が発生した場合は、次のアプリをデバイスから手動でアンインストールしてください。
  • Appium Android Input Manager
  • Appium Settings
  • io.appium.uiautomator2.server
  • io.appium.uiautomator2.server.test
  • Unlock

Silk4J のアップデート後に、iOS デバイスでこのような問題が発生した場合は、WebDriverAgentRunner をデバイスから手動でアンインストールしてください。

モバイル アプリケーションを記録できない理由

Silk4J では、Appium を使ってモバイル アプリケーションをテストします。Appium でネットワーク プロキシ設定が設定されていると、Silk4J の記録を妨害する場合があります。モバイル デバイスまたはエミュレータのネットワーク プロキシ設定を無効にしてみてください。

Android デバイス上でテストを実行できない理由

一部の Android デバイスでは、Silk4J などを使ったデバイス上のモバイル アプリケーションのテストができないよう、あらかじめ設定されている場合があります。たとえば、Xiaomi Mi Mix 2 の前提条件は他のデバイスと同様ですが、さらに次の設定が必要になります。Xiaomi Mi Mix 2 でテストを実行する前に、次の手順を実行してください。
  1. デバイスの開発者モードを有効にします。
  2. 設定 > その他の設定 > 開発者向けオプション に移動します。
  3. USB デバッグ を有効にします。
  4. スリープモードにしない を有効にします。
  5. USB 経由でインストールする を有効にします。
  6. USB デバッグ を有効にします。
  7. MIUI の最適化をオンにする を無効にします。