uiAutomatorViewer による Android テストの強化

このトピックでは、uiAutomatorViewerUFT One のオブジェクト・スパイの代わりに使用して、アプリ内の要素のランタイム・プロパティを検出する方法について説明します。

これらのプロパティは、モバイル・テスト・オブジェクトの一意の記述を作成するのに役立ちます。

uiAutomatorViewer は、Android アプリケーションの GUI コンポーネントをスキャンして分析する Android SDK ツールです。

uiAutomatorViewer の前提条件

uiAutomatorViewer を使用してアプリを分析する前に、次の手順を実行してください。

  1. コンピュータに UFT Mobile コネクタがインストールされていない場合は、Android SDK がインストールされていることを確認してください。

    Android SDK のバージョンは、テスト対象のデバイスの Android バージョン以降である必要があります。

    次に、ANDROID_HOME システム変数を、コンピュータ上で Android SDK がインストールされているパスに設定します。

  2. Android デバイスをコンピュータに接続します。詳細については、UFT Mobile ヘルプを参照してください。

「uiAutomatorViewer のオープン」に進んでください。

先頭に戻る

uiAutomatorViewer のオープン

UFT Mobile コネクタがインストールされているかどうかに応じて、次の方法で uiAutomatorViewer を開きます。

コネクタがインストールされていない

<android_sdk_installation_folder>\tools\uiautomator.bat ファイルを実行します。

コネクタがインストールされている

コネクタの Agent フォルダで、hp4m_uiautomatorviewer.bat ファイルを実行します。

例:

C:\...\connector-<バージョン>-win<32/64>\Agent\hp4m_uiautomatorviewer.bat

「アプリのユーザ・インタフェースの分析」に進んでください。

先頭に戻る

アプリのユーザ・インタフェースの分析

次の手順に従って、uiAutomatorViewer を使用してアプリのユーザ・インタフェースを分析します。

  1. uiAutomatorViewer を開き、スキャンするビューが明確に表示されていることを確認します。

  2. アプリのユーザ・インタフェースのスクリーンショットを撮ります。

  3. uiAutomatorViewer で、[Device Screenshotボタンをクリックします。

    複数のデバイスが接続されている場合は、表示されたリストから関連するデバイスを選択します。

  4. 結果を表示して、ビューのスナップショットと、ビューで認識されたすべてのテスト・オブジェクトを含むテスト・オブジェクト・ツリーを確認します。

    ツリー内のノードを強調表示して、オブジェクトの詳細とプロパティを表示します。

サポートされている uiAutomatorViewer プロパティ

以下の uiAutomatorViewer プロパティは、UFT One を使用するときに関連します。

package

現在表示されているアプリケーションの識別子。App テスト・オブジェクトの identifier プロパティにマッピングされます。

text

オブジェクトの text プロパティ(通常は TextView オブジェクトで使用できます)。

content-desc

オブジェクトの accessibilityid プロパティ。

bounds

アプリケーション内のオブジェクトの境界を示す四角形。

scrollable

コントロールがスクロール可能なビューであるかどうかを指定します。

class

テスト・オブジェクトの class プロパティにマッピングされます。

例:

Android クラス:UFT Mobile class

android.widget.TextView:Label

android.widget.ImageButton: ImageButton

先頭に戻る

オブジェクト・リポジトリへの記録不可能なオブジェクトの追加

UFT One 記録セッションでは、すべてのオブジェクトが記録できるわけではありません。TextViewImage など、一部のオブジェクトは、手動でオブジェクト・リポジトリに追加する必要があります。

ヒント: 別の方法については、「テスト・オブジェクトの代わりにプログラム的記述を使用」も参照してください。

  1. オブジェクト・リポジトリに追加するオブジェクトを含むアプリケーションのビューをスキャンします。
  2. 追加するオブジェクトごとに、次のプロパティの値を書き留めます。

  3. [オブジェクト リポジトリ]ウィンドウで、[テスト オブジェクト]ルート・ノードを選択し、新しい子テスト・オブジェクトを作成します([オブジェクト]>[新規テストオブジェクトの定義])。
  4. [新規テストオブジェクトの定義]ダイアログ・ボックスで、クラスモバイルビューとして定義し、オブジェクトに一意の名前を付けます。
  5. [テスト オブジェクトの詳細]>[記述プロパティ]で、classtextaccessibilityid を除くすべてのプロパティを削除します。
  6. 残りのプロパティ値を次のように変更します。

    class

    uiAutomatorViewer 「class」 プロパティの書き留めた値を入力します。

    accessibilityid

    uiAutomatorViewer 「content-desc」 プロパティの書き留めた値がある場合は、それを入力します。

    text

    uiAutomatorViewer 「text」 プロパティの書き留めた値がある場合は、それを入力します。

    index

    (オプション)。以下の場合:

    • 「content-desc」 プロパティ値は空であり、かつ
    • 「text」 プロパティ値が空または動的である(値が現在のコンテキストに応じて変化する)場合、

    index プロパティを作成し、現在のビューでこのタイプのオブジェクトの数を上から下に 0 から数えて値を設定します。

    index プロパティ値を正確に設定するには数回の試行が必要になる場合があります。

  7. 新しく作成したテスト・オブジェクトを、関連する App テスト・オブジェクトの下にドラッグします。
  8. テストするアプリケーションで、関連するページを前面に配置します。
  9. スクリプト・エディタで、次のループ・ステートメントを入力します。

    For i = 0 To X Step 1 'X should be the estimated number of labels on the screen'
    	print i & “- “ & Device.App.MobileView(“class:=Label”, _
    		“index:=“ & i)  _   
    	.GetROProperty(“text”)
    		Next																		
  10. UFT One の[記録と実行環境設定]で、[インストール]および[再起動]チェックボックスが選択されていないことを確認します。
  11. スクリプト・エディタに入力したループ・ステートメントを実行して、ROProperty 値を取得します。
  12. UFT One の[出力]表示枠で、値を含むラベルのインデックスを探します。

    このインデックスを使用して、次の例のようなステップをテストに追加することにより、テスト・オブジェクトを識別します。

    currentQuote = Device.App.MobileView(“class:=Label”, “index:=N“) _
    	.GetROProperty(“text”)

先頭に戻る

テスト・オブジェクトの代わりにプログラム的記述を使用

次のコード行は、テスト・オブジェクトの代わりにステップで使用できるプログラム的記述の例です。

オブジェクト・リポジトリ内のテスト・オブジェクトの代わり

Device("D").App("A").MobileView("class:=Label", "accessibilityid:=sum").Tap

ヒント: 別の方法については、「オブジェクト・リポジトリへの記録不可能なオブジェクトの追加」を参照してください。

スクロールに MobileView テスト・オブジェクトのスクロールの代わり

Device("D").App("A").MobileView("isscrollable:=True","index:=2").ScrollOnePage "forward"

先頭に戻る

オブジェクト・リポジトリへの App テスト・オブジェクトの追加

場合によっては、システム・アプリケーションなど、UFT Mobile サーバにロードできないアプリケーションに対するステップを実行する必要があります。

この場合、アプリケーション・テスト・オブジェクトをオブジェクト・リポジトリに追加して、ロードできないアプリケーションを表すことができます。

アプリケーション・テスト・オブジェクトを作成したら、その下にモバイル・テスト・オブジェクトを追加して、これらのテスト・オブジェクトをテストで使用できます。

  1. uiAutomatorViewer を使用して、アプリケーションを含むビューをスキャンします。

    詳細については、「アプリのユーザ・インタフェースの分析」を参照してください。

  2. package プロパティの値を書き留めます。
  3. UFT One で、アプリケーションを表すテスト・オブジェクトを作成します。

    1. [オブジェクト リポジトリ]ウィンドウで、関連する Device テスト・オブジェクトを選択し、新しい子テスト・オブジェクトを作成します([オブジェクト]>[新規テストオブジェクトの定義])。
    2. [新規テストオブジェクトの定義]ダイアログ・ボックスで、子テスト・オブジェクトに次の一意の記述プロパティを割り当てます。

      クラス App
      名前

      テスト・オブジェクトの一意の名前。

      ベスト・プラクティス:アプリケーションの名前または目的を示すわかりやすい名前を割り当てます。

      テスト・オブジェクトの詳細

      記述プロパティ

      identifier を除くすべてのプロパティを削除します。

      identifier には、uiAutomatorViewer の package プロパティの書き留めた値を入力します。

    3. をクリックして[プロパティの追加]ダイアログ・ボックスを開き、をクリックして[新規プロパティ]ダイアログ・ボックスを開きます。
    4. [新規プロパティ]ダイアログ・ボックスで、systemApp プロパティを追加し、値を True に設定します。

先頭に戻る

その他の参照項目: