ACTS テレフォニー テスト

Android Comms テストスイート(ACTS)では、Wi-Fi、Bluetooth、モバイル通信サービスなどの接続スタックの自動テストを実行できます。テストツールには adb と Python が必要です。ツールは tools/test/connectivity/acts にあります。

このページでは、2 台のスマートフォンを所有するユーザーが、Android オープンソース プロジェクト(AOSP)で入手できる基本的なテレフォニー テストを実行する方法について説明します。

前提条件

ACTS テレフォニー テストを実行するには、Android リポジトリ全体にアクセスできる必要があります。また、テスト対象のデバイスに userdebug ビルドをインストールする必要があります。

Android リポジトリをダウンロードする

ソースのダウンロードに記載されている手順に沿って、テスト対象のデバイスに USB で接続されているマシンに Android リポジトリをダウンロードします。

  • AOSP は数ギガバイトのコードベースであり、今も拡大を続けています。AOSP のサイズを念頭に、ダウンロード時間を適切に見積もってください。
    • マシンにサイズ制限がある場合は、--depth=1repo init コマンドに追加します。
  • ACTS ツールの今後のアップデートを入手するには、Android ルート ディレクトリに移動して次のコマンドを使用します。
    • repo sync tools/test/connectivity
    • repo sync external/sl4a

userdebug ビルドがデバイスにインストールされていることを確認する

テストデバイスに userdebug バージョンの Android をインストールします。

  • Android のビルドに記載されている手順に沿ってリポジトリを構築します。
  • デバイスのフラッシュの説明に沿ってデバイスをフラッシュします。
    • コマンド adb shell getprop ro.build.type を実行すると、userdebug が返されます。
    • ro.build.type を使用できない場合は、userdebug ビルドを使用することで、adb シェルをルート(ターミナル #)として実行できます。

SL4A をビルドしてインストールする

Android 用スクリプト レイヤ(SL4A)をビルドしてインストールするには、Android 用スクリプト レイヤに記載されている手順を実行します。デフォルトで SL4A ビルドを Android ビルドに追加する手順は省略可能です。

SL4A をビルドすると、ログメッセージに sl4a.apk ファイルの場所が出力されます。このファイルはすべてのデバイスにインストールする必要があります。以下に、ログメッセージの例を示します。

Copy: out/target/path/to/sl4a.apk

デバイスを設定してテストする

ACTS のビルドとツールに関する以下の要件を使用してデバイスを設定します。

  • adb ベンダーキーを使用できない場合は、DUT に [このコンピュータを信頼する] ポップアップが表示されたときにタップします。adb ベンダーキーを使用できる場合は、次の手順に従います。

    • adb ベンダーキーと adb ドライバは DUT に固有のものであることが必要です。
    • USB デバッグを常に有効にするには、export ADB_VENDOR_KEYS=/path/to/directory/with/vendor/keys を使用して、ソースツリー内の adb ベンダーキーを ~/.bashrc(または同等のディレクトリ)に追加する必要があります。ここで、/path/to/directory はホスト上の完全修飾パスです。adb をトラブルシューティングする場合は、ハードウェア デバイス上でのアプリの実行をご覧ください。
  • USB デバッグの許可: adb ドライバがインストールされている場合、adb devices を実行することで、USB デバッグを許可するプロンプトがデバイスに表示されます。

  • $ adb install -r <ANDROID_ROOT>/path/to/sl4a.apk を使用して sl4a.apk をインストールします。

  • スマートフォンがテストサーバーへの接続に USB 2.0 を使用していることを確認します。

  • テストは実際のモバイル ネットワークに依存するため、SIM カードをスマートフォンに挿入して、モバイル サービスを安定的に利用できる場所に移動してください。

  • 構成ファイルを作成するの説明に沿って、すべての SIM カードを JSON ファイルに追加します。

環境をセットアップする

環境をセットアップする前に、Python 3.4 以降がインストールされていることを確認します。

次のコマンドを実行します。

sudo apt-get install python3-setuptools
sudo apt-get install python3-pip
sudo pip3 install --upgrade pip setuptools
sudo apt-get install protobuf-compiler

ACTS をインストールする

次のコマンドを実行します。

cd <ANDROID_ROOT>/tools/test/connectivity/acts/framework/
sudo python3 setup.py develop
cd -

インストールの状況を確認するには、act.py -h を実行します。これにより、使用可能なコマンドのリストが出力されます。

構成ファイルを作成する

テストを実行するには、構成情報を含むファイルを作成する必要があります。以下に、.config ファイルの例を示します。Android リポジトリの tools/test/connectivity/acts/framework/sample_config.json で類似のファイルを入手できます。XXXXXXX をデバイスのシリアル番号に置き換えることで、ACTS でテレフォニー テストを実行するのに必要な最小限の情報を提供できます。

{
  "_description": "Minimum Telephony Config",
  "testbed":
  [
      {
          "_description": "A testbed listing two AndroidDevices for adb.",
          "name": "ExampleTestBed",
          "AndroidDevice": [{"serial": "XXXXXXX", "adb_logcat_param": "-b all"},
                            {"serial": "XXXXXXX", "adb_logcat_param": "-b all"}]
      }
  ],
  "logpath": "/path/to/logs",
  "testpaths": "/path/to/android/repo/tools/test/connectivity",
  "sim_conf_file": "/path/to/simcard_list.json"
}

テスト パラメータを構成するには、次の表のキーを使用します。その他のオプションについては、その他の構成オプションをご覧ください。

キー
_description 構成ファイル全体の内容に関するコメント。
testbed テストを実行できる環境の仕様。
(testbed)_description 各 testbed に関するコメント(ACTS は個々の testbed をターゲットにすることが可能なため)。
(testbed)name コマンドラインから発信する場合の testbed の名前。
(testbed)AndroidDevice テスト対象の特定デバイスのリスト。
注: 複数のデバイスをリストに含めることができます。スマートフォンから相互に発信するテストでは 2 台のデバイスが必要なため、それより少ないと失敗します。2 台のデバイスがリストに含まれているものの、テストでは 1 台しか使用しない場合、1 台目のデバイスでテストが実行されます。
(testbed)(AndroidDevice)serial デバイスのシリアル番号(adb devices を実行すると出力されます)。
(testbed)(AndroidDevice)adb_logcat_param テスト中に adb logcat が呼び出された場合に渡されるパラメータ。
logpath ログが保存されるテストサーバー上の場所。
testpaths テストケース コードの場所。
sim_conf_file .json ファイルの場所。このファイルに使用可能な SIM カードがリストされます。
SIM カードのリストには、カードの ID、カードの機能、事業者、電話番号などが記載されます。
{
    "sim-card-ID-here": {
        "capability": [
            "voice",
            "ims",
            "volte",
            "vt",
            "sms",
            "tethering",
            "data"
        ],
        "operator": "tmo",
        "phone_num": "12345678901"
    },
...
}

デバイスの電話番号は [システム] > [デバイス情報] で確認できます。SIM カード ID は通常、SIM カードに印字されています。または、[システム] > [デバイス情報] > [SIM のステータス] からデバイスで確認できます。事業者文字列は tools/test/connectivity/acts_tests/acts_contrib/test_utils/tel/tel_defines.py で定義されています(CARRIER_ を探してください)。

その他の構成オプション

Android リポジトリの tools/test/connectivity/acts/framework/acts/config/entries.py にある entries.py ファイルには、主要なコマンドラインの構成オプションが定義されています。

self.user_params.get を検索することで、コード内のテスト固有のパラメータを見つけることもできます。

テストを実行する

構成ファイルを作成したら、コマンドラインからテストを実行します。さまざまな実行方法がありますが、最も簡単なのは -c filename.config -tc TestCase:name を使用する方法です。次の例では、minimum.config という名前の構成ファイルを使用しています。

act.py -c minimum.config -tc TelLiveVoiceTest:test_call_mo_voice_general

テストの実行が成功すると、最終的に次のようなメッセージが出力されます。

INFO Summary for test run ExampleTestBed@yyyy-mm-dd_15-23-43-614: Requested 1,
Executed 1, Passed 1, Failed 0, Skipped 0, Error 0

複数のテストを実行する

複数のファイルにまたがるテストケースを実行するには、回帰テストスイートの例に示すようにテストファイルを作成し、フラグ -tf を使用してそのファイルを指定します。

TelLiveVoiceTest:
test_call_mo_voice_general,
test_call_volte_to_volte,
test_call_3g_to_3g

TelLiveDataTest:
test_airplane_mode,
test_4g,
test_3g

TelLiveSmsTest:
test_sms_mo_4g,
test_sms_mt_4g,
test_sms_mo_3g,
test_sms_mt_3g,
test_mms_mo_4g,
test_mms_mt_4g

次のコマンドの例では、ファイル名が regression_suite. であることを前提としています。

act.py -c minimum.config -tf regression_suite

テストを複数回実行する

テストケース(-tc)またはテストファイル(-tf)を複数回実行するには、-ti #(繰り返し回数)をコマンドに追加します。