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 機能テスト。
catbox-functional-app-info-setting アプリ情報設定の機能テスト。
catbox-functional-admin-user-grant-permissions 管理者ユーザーによる権限付与の機能テスト。
catbox-functional-app-info-setting-ui-elements アプリ情報設定の機能テスト。
catbox-functional-appgrid アプリグリッドの機能テスト。
catbox-functional-base 機能テストのリスト。
catbox-functional-bluetooth-audio Bluetooth オーディオの機能テスト。
catbox-functional-bluetooth-palette ステータスバーの機能テスト。
catbox-functional-bluetooth-tests Mobly を使用した Bluetooth テスト。
catbox-functional-brightness-palette ステータスバーの機能テスト。
catbox-functional-btmoped Bluetooth モペッドベースの機能テスト。
catbox-functional-date-time-setting 日時設定の機能テスト。
catbox-functional-dial ダイヤルの機能テスト。
catbox-functional-display-setting ディスプレイ設定の機能テスト。
catbox-functional-driving-optimized-apps UX 制限の機能テスト。
catbox-functional-enable-developers-option デベロッパー オプションの有効化の機能テスト。
catbox-functional-home ホームの機能テスト。
catbox-functional-lock-screen ロック画面の機能テスト。
catbox-functional-mediacenter メディア センターの機能テスト。
catbox-functional-microphone-recent-apps マイク設定の機能テスト。
catbox-functional-microphone-setting マイク設定の機能テスト。
catbox-functional-multiuser マルチユーザーの機能テスト。
catbox-functional-multiuser-system-user マルチユーザーの機能テスト。
catbox-functional-navigation-bar ナビゲーション バーの機能テスト。
catbox-functional-network-palette ステータスバーの機能テスト。
catbox-functional-network-setting ネットワーク設定の機能テスト。
catbox-functional-notification 通知の機能テスト。
catbox-functional-privacy-permission-manager プライバシー アプリの権限設定の機能テスト。
catbox-functional-privacy-setting マイク設定の機能テスト。
catbox-functional-privacy-setting-ui-elements プライバシー設定の機能テスト。
catbox-functional-profile-icon プロフィール アイコン バーの機能テスト。
catbox-functional-profiles-icon-list プロフィール アイコン リストのテスト。
catbox-functional-security-setting セキュリティ設定の機能テスト。
catbox-functional-setting 設定の機能テスト。
catbox-functional-settings-location 位置情報の設定のテスト。
catbox-functional-sound-setting サウンド設定の機能テスト。
catbox-functional-status-bar ステータスバーの機能テスト。
catbox-functional-storage-setting ストレージ設定の機能テスト。
catbox-functional-system-setting システム設定の機能テスト。
catbox-functional-systemui システム UI のテスト。
catbox-functional-ux-restriction UX 制限の機能テスト。
catbox-functional-ux-restriction-facet-bar UX 制限の機能テスト。

以下の表に、CATBox のパフォーマンス テストプランを示します。

パフォーマンス テストプラン 説明
catbox-performance-cold-app-start-up-dialer 電話アプリのコールド アプリ スタートアップのパフォーマンス テスト。
catbox-performance-cold-app-start-up-mediacenter メディア センターのコールド アプリ スタートアップのパフォーマンス テスト。
catbox-performance-cold-app-start-up-settings 設定のコールド アプリ スタートアップのパフォーマンス テスト。
catbox-performance-create-and-switch-to-new-guest 新しいゲストに切り替える場合の遅延の測定。
catbox-performance-create-and-switch-to-new-user 新しい管理者以外のユーザーに切り替える場合の遅延の測定。
catbox-performance-hot-app-start-up-dialer 電話アプリのホット アプリ スタートアップのパフォーマンス テスト。
catbox-performance-hot-app-start-up-mediacenter メディア センターのホット アプリ スタートアップのパフォーマンス テスト。
catbox-performance-hot-app-start-up-settings 設定のホット アプリ スタートアップのパフォーマンス テスト。
catbox-performance-jank-appgrid アプリグリッドのパフォーマンス テスト。
catbox-performance-jank-contact-list 連絡先のパフォーマンス テスト。
catbox-performance-jank-media メディアのパフォーマンス テスト。
catbox-performance-jank-media-switch-playback メディアの再生切り替えのパフォーマンス テスト。
catbox-performance-jank-notifications 通知のパフォーマンス テスト。
catbox-performance-jank-settings 設定のパフォーマンス テスト。
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