Complete Automotive Tests in a Box

Complete Automotive Tests in a Box(CATBox)は、最小限の構成で自動車用テストを効率化して実施するために必要なフレームワークとツールを提供するオープンソース パッケージです。CATBox はスケーラブルで、Android Automotive OS(AAOS)実装のテストと検証に使用するツール、インフラストラクチャ、テストに対応しています。したがって、高品質のプロダクトを市場に提供することが可能になります。

CATBox の設計と実装

CATBox テストスイートは、自動車をターゲットとするデバイスで、かつコンパニオン デバイスを使用している場合に、機能テストとパフォーマンス テストを実施するために必要なツール、フレームワーク、テストを提供します。

次の図は、CATBox パッケージの設計の概要を示しています。

CATBox

図 1. CATBox パッケージ

Tradefed

Tradefed は、Android デバイスでテストを実行するために使用されるオープンソースの継続的テスト フレームワークです。詳しくは、Trade Federation の概要をご覧ください。

自動車用テスト フレームワーク

CATBox は、自動車用デバイスでさまざまなアプリをテストするための API を提供する Spectatio という自動車用テスト フレームワークをベースにしています。CATBox は、オープンソースのテスト フレームワークである UI Automator の上に構築されています。UI Automator は、ユーザーアプリおよびシステムアプリとやり取りする UI テストを作成するための API のセットを提供します。

CATBox テストスイートのダウンロード

Android 14

Android Automotive 14 は、「U」というコードネームが付けられた開発マイルストーンのリリースです。Android 14 用の CATBox テストスイートをダウンロードするには、次のリンクを使用してください。

Android 12

Android 12 は、「S」というコードネームが付けられた開発マイルストーンのリリースです。Android 12 用の CATBox テストスイートをダウンロードするには、次のリンクを使用してください。

Android 11

Android 11 は、「R」というコードネームが付けられた開発マイルストーンのリリースです。Android 11 用の CATBox テストスイートをダウンロードするには、次のリンクを使用してください。

CATBox をビルドする

ローカル ワークステーションで Android AOSP コードが利用可能になったら、catbox ビルドコマンドを使用します。

CATBox パッケージをローカルでビルドするには、次のコマンドを実行します。

  1. デバイス アーキテクチャに基づいてデバイス ターゲットを選択し、次のコマンドを実行します。

    lunch <target>
    
  2. CATBox をビルドするには、次のコマンドを実行します。

    make catbox
    

    このコマンドにより、android-catbox.zip ファイルが /out/host/linux-x86/catbox ディレクトリに作成されます。このファイルを使用してテストを実行できます。

環境をセットアップする

CATBox テストの実行に必要な環境のセットアップは、CTS のセットアップに似ています。環境をセットアップするには、以下の各タスクを実施します。

CATBox をセットアップして実行する

Tradefed テスト フレームワークを使用して、Android デバイスでテストを実行します。CATBox をセットアップする前に、Trade Federation の概要をご覧ください。

CATBox をセットアップして実行するには、下記のセクションをご覧ください。

デバイスをセットアップする

テストプランを実行する前に、次の手順に沿ってデバイスをセットアップします。

  1. 最新バージョンの Android Debug Bridge(adb)Android Asset Packaging Tool(AAPT)の両方がインストールされており、それらのツールの場所がマシンのシステムパスに追加されていることを確認します。詳しくは、ADB と AAPT をご覧ください。

  2. 次のように、少なくとも 1 台のデバイスを接続して、テスト対象デバイス(DUT)を準備します。

    1. 自動車用デバイスを出荷時の設定にリセットするには、[設定] > [システム] > [リセット オプション] > [すべてのデータを消去] に移動します。

    2. デバイスが自動的に再起動するまで待ちます。

    3. adb が有効になっていることを確認します。デバイスが使用可能であることを確認するため、次のコマンドを実行します。

      adb devices
      
    4. root を有効にするため、次のコマンドを実行します。

      adb -s DEVICE_SERIAL root
      

      DEVICE_SERIAL は、自動車用デバイスのシリアル ID に置き換えてください。

    5. Wi-Fi に接続します。

CATBox パッケージを抽出する

デバイスのセットアップが完了したら、CATBox パッケージを解凍して、展開されたフォルダに移動します。

unzip android-catbox.zip
cd android-catbox

CATBox でテストを実行する

CATBox パッケージのテストプランで CATBox を実行するには、次のコマンドを実行します。

./tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --serial DEVICE_SERIAL

DEVICE_SERIAL は、自動車用デバイスのシリアル ID に置き換えてください。ホストマシンに複数のデバイスが接続されている場合は、DEVICE_SERIAL を使用してデバイスを区別します。TEST_PLAN_NAME は、実行するテストプランの名前に置き換えてください。

使用可能なプランの包括的なリストを取得するには、次のコマンドラインを使用します。

./tools/catbox-tradefed list plans | grep -i catbox

テストプランの種類

以下の表に、利用可能な機能テストプランとパフォーマンス テストプランを示します。

機能テストプラン
catbox_functional_account_setting
catbox_functional_appgrid
catbox_functional_appinfo_setting_ui_elements
catbox_functional_appinfo_settings
catbox_functional_bluetooth_sms

catbox_functional_bluetooth_dialer
catbox_functional_bluetooth_connectivity
catbox_functional_bluetooth_media
catbox_functional_bluetooth_uxrestriction
catbox_functional_bluetooth_pairing

catbox-functional-bluetooth-audio
catbox_functional_bluetooth_palette
catbox_functional_brightness_palette
catbox_functional_bt_stress
catbox_functional_date_time_settings

catbox_functional_display_setting
catbox_functional_driving_optimized_apps
catbox_functional_enable_developers_option
catbox_functional_guest_microphone
catbox_functional_homescreen

catbox_functional_lockscreen
catbox_functional_maps_microphone_permission
catbox_functional_maps_restricted_searchbar
catbox_functional_maps
catbox_functional_microphone_recent_apps
catbox_functional_microphone_settings
catbox_functional_multiuser_microphone
catbox_functional_multiuser_system_user
catbox_functional_multiusercatbox_functional_navigationbar
catbox_functional_network_palette
catbox_functional_network_settings

catbox_functional_notifications
catbox_functional_privacy_app_permissions
catbox_functional_privacy_decision_options_message
catbox_functional_privacy_permission_manager
catbox_functional_privacy_setting_ui_elements

catbox_functional_privacy_settings_no_user_login
catbox_functional_privacy_settings_user_logged_in
catbox_functional_profile_icon
catbox_functional_profiles_icon_list
catbox_functional_security_settings

catbox_functional_settings_location
catbox_functional_settings
catbox_functional_sound_settings
catbox_functional_status_bar
catbox_functional_storage_setting

catbox_functional_system_settings
catbox_functional_uxrestriction_app_screen
catbox_functional_uxrestriction_facet_bar
catbox_functional_uxrestriction_gas_appgrid
catbox_functional_uxrestriction
パフォーマンス テストプラン
catbox-performance-cold-app-start-up-settings
catbox-performance-hot-app-start-up-settings
catbox-performance-jank-settings
catbox-performance-cold-app-start-up-dialer

catbox-performance-hot-app-start-up-dialer
catbox-performance-jank-contact-list
catbox-performance-jank-notifications
catbox-performance-jank-appgrid
catbox-performance-cold-app-start-up-mediacenter
catbox-performance-hot-app-start-up-mediacenter
catbox-performance-create-and-switch-to-new-guest
catbox-performance-create-and-switch-to-new-user

catbox-performance-create-and-switch-to-precreated-guest
catbox-performance-create-and-switch-to-precreated-user
catbox-performance-switch-to-existing-user

マルチデバイス ホストサイド テストを実行する

マルチデバイス ホストサイド テストでは CATBox を使用して 1 つのセッションでテストを実行します。たとえば、BTDiscoveryTest は以下のようになります。

make catbox
./tools/catbox-tradefed run commandAndExit catbox-functional-bluetooth-tests --{phone}serial <serial> --{auto}serial <serial> --mobly-host:mobly-par-file-name BTDiscoveryTest

CATBox が apk をインストールし、適切な Python 実行環境でテストが実行されます。

CATBox テスト結果を確認する

機能テストとパフォーマンス テストの実行結果は android-catbox/results/latest に保存されます。

結果の種類 場所
テスト結果 test_result.xml
不合格テストの詳細 test_result_failures_suite.html
パフォーマンス指標の結果 /report-log-files/CatboxPerformanceTests.reportlog.json
機能テストとパフォーマンス テストの実行 /android-catbox/logs/latest