Android CTSはCompatibility Test Suiteの略です。 CTSは、Androidの互換性テストであり、メーカーからAndroidの端末を作成すると、CTSテストに合格しなければなら販売をすることができます。 CTSは、Androidの分断化をある程度防ぎ、テストコードで要求される性能を満たすようにします。
一般的に、Androidアプリ開発者は、CTSテストを実行する理由はありません。 一方、デバイスにAndroidのを移植する開発者は、CTSテストをたくさん接するようです。
CTSテストコードは、Androidのソースに含まれており、Androidのサイトで構築されたことをダウンロードすることができます。 CTSテストツールをダウンロードして、直接テストを実行する方法を紹介します。
CTSツールのダウンロード
Android - CTS Downloadページを見れば、Androidのバージョン別にCTSツールのダウンロードリンクがあります。
ARMデバイスでテストをしている場合、 "Android Compatibility Test Suite (CTS) - ARM"
を受けていただければされます。
もしX86デバイスやPCの仮想マシンでテストされた場合、 "Android Compatibility Test Suite (CTS) - x86"
を受ければされます。
私はAndroidの10のX86バージョンCTSツールを受けました。圧縮をプシゴシェルフォルダの場所まで進入します。
CTSツールを実行
android-cts/tools
フォルダに進入しcts-tradefed
バイナリを実行すると、CTSテストシェル入ります。
CTSテストコマンドを使用してテストを実行することができます。
android-cts-10_r1-linux_x86-x86/android-cts/tools$ ./cts-tradefed
==================
Notice:
We collect anonymous usage statistics in accordance with our Content Licenses (https://source.android.com/setup/start/licenses), Contributor License Agreement (https://opensource.google.com/docs/cla/), Privacy Policy (https://policies.google.com/privacy) and Terms of Service (https://policies.google.com/terms).
==================
Android Compatibility Test Suite 10_r1 (5771379)
Use "help" or "help all" to get more information on running commands.
cts-tf >
もし次のようにaaptがpathに設定ができないた出てきたならば、ローカルにダウンロードしたaaptのパスを設定していただければされます。
android-cts-10_r1-linux_x86-x86/android-cts/tools$ ./cts-tradefed
Unable to find aapt in path.
アンドロイドスタジオのSDKをダウンロード頂きましたらaaptもダウンロードされます。 ".bashrc"
ファイルに次のようにaaptがあるフォルダのパスを登録していただければされます。
## aapt
export PATH="/home/codechacha/Android/Sdk/build-tools/29.0.0-rc3/":$PATH
このほか、Pythonのとか、他のプログラムがインストールされていなくて実行できないなら、それぞれのインストールしてください。
CTSテストを実行
CTSシェルで次のコマンドを打てば実行可能なテストモジュールを見ることができます。 テストモジュールは、テストのグループと見ればされます。
cts-tf > list modules
x86_64 CtsAbiOverrideHostTestCases
x86 CtsAbiOverrideHostTestCases
x86_64 CtsAccelerationTestCases
x86 CtsAccelerationTestCases
x86_64 CtsAccessibilityServiceTestCases
....
次のコマンドを使用してくださいすべてのCTSのテスト(すべてのモジュール)を実行します。
$ run cts
特定のモジュールのテストのみを実行するには、次のように --module
オプションでモジュール名を指定していただければされます。
cts-tf > run cts --module CtsAccountManagerTestCases
10-16 18:23:52 I/TestInvocation: Starting invocation for cts with [ DeviceBuildInfo{bid=5771379, serial=emulator-5554} on device emulator-5554]
....
特定のモジュールの特定のクラスのテストのみを実行したいことがあります。 --test
オプションクラス名を指定していただければされます。
cts-tf > run cts --module CtsAccountManagerTestCases --test android.accounts.cts.AbstractAuthenticatorTests
--test
に明示したクラスに#
をブトイシゴメソッド名を書いていただければ、そのメソッドのみをテストします。
cts-tf > run cts --module CtsAccountManagerTestCases --test android.accounts.cts.AbstractAuthenticatorTests#testIsCredentialsUpdateSuggestedDefaultImpl
このように、必要なテストのみを実行するようにすることができます。
の結果を確認
テストが完了すると、CTSは、テストログと結果をファイルにして保存します。
logs/
、 results/
という名前のフォルダにログと結果のファイルが保存されます。ファイル名は、テストを実行した時間です。
android-cts-10_r1-linux_x86-x86/android-cts$ tree
.
├── logs
│ └── 2019.10.16_18.23.52
│ └── inv_1830944061350375746
├── results
│ └── 2019.10.16_18.23.52
│ └── vintf-files
│ ├── proc_config.gz
│ └── sepolicy
.....
より詳細なテストオプション
より多くのテストのオプションについて知りたい方はAndroid - CTSコマンドページをご確認ください。 中間見ればオプションについて詳しく説明をしています。
参考
Related Posts
- Android - 振動、Vibrator、VibrationEffectの例
- Android - TabLayoutの実装方法(+ ViewPager2)
- Android - PackageManagerにPackage情報を取得する
- Android - ACTION_BOOT_COMPLETEDイベント受信
- Android - FusedLocationProviderClientに位置情報を取得する
- Android - GPS、Network位置情報を取得する(LocationManager)
- Android - Foreground Service実行
- Android - 時間、日付、変更イベント受信
- Android - currentTimeMillis()、elapsedRealtime()、uptimeMillis()
- Android-PowerManager WakeLock
- Android - ファイル入出力の例(Read、Write、内部、外部ストレージ)
- Android - Screen On / Offイベントの受信、状態確認
- Android - 他のアプリのServiceにバインド
- Android - Handler vs Executor
- Android - Darkmode有効にする方法
- Android - hasSystemFeature()、サポートされているFeature確認
- Android - アプリの権限を確認(Permission check)
- Android - インストールされてアプリリストをインポートする
- Android App Shortcuts実装
- Android - ContentProviderを実装、および例
- Android - AIDLを利用して、Remote Serviceの実装
- Android - Uri、Scheme、SSP(Scheme Specific Part)説明
- Android - アプリのインストール、削除、イベントダウンロード(BroadcastReceiverインテントを受け取る)
- Android - SharedPreferencesに簡単なデータを保存する方法
- Android - AlarmManagerにアラームを登録する方法、および例
- Android - Quick SettingsにCustom Tile追加する方法(kotlin)
- Android - Broadcast Receiver登録およびイベントの受信方法
- Android - Runtime permissionリクエスト方法と例(kotlin)
- Android - ネットワーク(WIFI)の接続状態を確認し、変更の検出
- Mockito - static、final methodをmockingする方法
- Andriod - カスタムパーミッションを定義する方法
- RobolectricにUnit Testを作成する(kotlin)
- Android Mockitoのテストコードを作成する(kotlin)
- Android - Handlerの使用方法、および例
- Android - IntentService使用方法
- Android - JobIntentService使用方法