CTS概要、環境、基本操作



今回は、CTS概要、環境、基本操作について記載いたします。
なお、本内容を実施し、何らかの問題、損害などが発生した場合、当社は一切の責任を負いません。
あくまで自己責任で実施してください。
これらのことを認識頂いた上で、ご利用、参考にしてください。

0.はじめに

 昨今、注目を浴びているAndroidですが、CTSというのは、みなさんご存知でしょうか?
 名前は聞いたことあっても、実際、使ったこと無い人がほとんどだと思います。
 なぜなら、アプリベンダーにはあまり関係ないことですから。しかし、Androidを利用して、世に
 何らかのハードを出そうという人たち(メーカ、個人含む)、またはframeworkを改変(Bug対応など)し、
 Android Open Source Projectsにsubmitしようとする人にとっては、実は避けては通れない道です。
 本記事は、そんな人たちのために捧げます。


 株式会社ブリリアントサービス    
 技術部 藤井洋祐(twitterID:@i_m_yosuke) 


 (校正) 
 技術部 藤田竜史(twitterID:@ryuuuji) 
 ※藤田くん、チェックありがとう。
 

1.CTS概要

 1.1 CTSの目的
  CTS(正式にはCompatibility Test Suite。以下、CTS)は、Google社が
  Android Platform採用端末に実施を義務付けているTest群です。Google社は、
  今までOEM、もしくはキャリア依存であったPlatformをAndroidで汎用化しました。
  CTSは、Android Marketで配布されるアプリケーションが、
  どのOEMAndroid端末でもスムーズに利用可能なよう(OEMによって、特化されすぎないよう)に、
  主要な公開APIを実行し、チェックします。
  世の中にAndroidPlatform採用端末を配布する場合、これらTest群を全てpassすることが
  互換性を保つという証になり、そういうプロセスを経て初めて「Android端末」を
  名乗ることが出来るのではないでしょうか。


  蛇足ですが、Android 2.3 Compatibility Definition Document(CDD)という、
  Android Platform使用するためのRequirementがあります。
  こちらもあわせて、目を通されることをお勧めします。
  参照: http://source.android.com/compatibility/2.3/android-2.3.3-cdd.pdf
  注.本内容は、2011年8月22日現在、Google社が提供する環境を元に作成しております。


 1.2 CTSの動作
  CTSは、自動化されたハーネスです。以下の二つを含みます。
  ・テスト実行の管理
  ・ターゲットデバイス上で実行されるテストケースのAPKファイル
http://d.hatena.ne.jp/bs-android/files/1-2.png?d=.png
  大まかな手順としては、以下のようになります。
  1.CTSをDownload
  2.ターゲットデバイスの接続
  3.アクセスビリティテスト実行準備
   a)android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk をインストール
   b)以下の手順でインストールしたアクセスビリティサービスを有効にします。
     Settings > Accessibility > Accessibility > Delegating Accessibility Service
  4.アドミニストレータテスト実行準備
   a)android-cts/repository/testcases/CtsDeviceAdmin.apk をインストール
   b)Settings > Location & security 以下にあるandroid.deviceadmin.cts .* を全て有効にします。
  5.CTSを起動します。
  6.CTSレポートが作成されます。
  参照: http://source.android.com/compatibility/cts-intro.html


 1.3 CTSのテスト範囲
  テスト範囲は以下の通りです。(現在、大きく分けて7つになります)

  参照:http://source.android.com/compatibility/cts-intro.html 

2. CTSの環境作り

 2.1 必要なもの
  (ハード)
  ・PC - DownloadしたCTSを実施します。
  ・ターゲットデバイス − Android Platformを採用したデバイスです。
  (ソフト)
  PCに必要なもの
  ・Android Developersから、SDKをDownloadしてください。(PC OSに適合したもの)
   ※Build環境が整っているということが前提となります。
   参照: http://developer.android.com/sdk/index.html

  Note.
  CTS実施環境について、PC側のOSは、こちら側で確認取れているのは、LinuxUbuntu)、MacOSです。
  Windowsに関しましては、CTS側環境がWindowsに適合していない部分があり、実行Errorとなります。
  CTS側環境を改変+Cygwinで、動作は確認しています。機会があれば別途紹介いたします。


  ・Android Open source project から、ターゲットデバイスFirmware versionにあわせたCTS
   PCの任意の場所にDownloadしてください。
   参照: http://source.android.com/compatibility/downloads.html

 Note.
  CTSは、ターゲットデバイスで採用されているFirmware versionにあわせて、選択する必要があります。
  Android2.3(Gingerbread)採用の場合、CTS2.3R5が実施すべきCTS versionとなります。(図2.1-2参照)


 2.2 実施準備
  2.1.1  CTS実施フォルダ作成
   2.1章でDownloadしたCTS 2.3R5(android-cts-2.3_r5-x86.zip)を任意の場所で解凍します。

 解凍後、図2.2-2のようなフォルダが作成されます。

  2.2.2 環境変数の設定
   CTSは、/android-cts/tools/startctsを実行することで起動します。startctsは、
   スクリプトで書かれており、CTS2.3R5では、そのスクリプト中で環境変数
   2つ使用しています。
  環境変数その1 CTS_ROOT

if [ -z "${CTS_ROOT}" ]; then
# CONFIGURATION
# Set this variable to the root of unzipped CTS directory
# This only needs to be changed if this script has been moved
CTS_ROOT="$(dirname $0)/.."
fi;

  通常使用の場合、特に意識、変更、設定する必要は、ありません。


  環境変数その2 SDK_ROOT

# Add SDK_ROOT to the PATH for backwards compatibility with prior startcts
# commands that required SDK_ROOT to find adb.
if [ -n "${SDK_ROOT}" ]; then
PATH=${SDK_ROOT}/platform-tools:${SDK_ROOT}/tools:${PATH}
fi

  ~/.bashrcに、exportを追加します。

export SDK_ROOT=~/android-sdk-linux_x86

Note.
.bashrcを変更せずに、下記のようにSDK_ROOTの初期値を直接与えても構いません。

# Add SDK_ROOT to the PATH for backwards compatibility with prior startcts
# commands that required SDK_ROOT to find adb.
SDK_ROOT=”~/android-sdk-linux_x86”
if [ -n "${SDK_ROOT}" ]; then
PATH=${SDK_ROOT}/platform-tools:${SDK_ROOT}/tools:${PATH}
fi



 2.2.3 CTS実行
   CTS実行するには、前述のようにstartctsを実行します。

上記のようにcts_hostプロンプトが表示されれば正常に起動されています。

3. CTSの操作(基本編)

 3.1 プランCTSの確認
  CTSのプランは、”ls –plan”で確認することが出来ます。
  現在は、計8種類提供されています。プランCTSは、そのうちのひとつです。

  Note.
  Google社へは、プランCTS(図3.1-1の赤丸)実施、作成されたレポートを提出します。
  本記事では、プランCTS以外の説明は割愛いたしますが、プランCTSで実施される各種テストが
  目的別に小分けされたようなものだと考えてください。


 プランCTSが提供する項目を”ls --plan CTS”で確認することが可能です。
 現在は、計42項目のテストパッケージが提供されております。



 3.2 プランCTSの実施
  3.2.1 プランCTS実施方法その1
   プランCTSは、“start –plan CTS”で実行されます。
   書式:start --plan test_plan_name

Note.
  自動で、端末Rebootを繰り返しながら、プランCTSの項目を順に実施していきます。


  3.2.2 プランCTS実施方法その2
   プランCTSを図3.1-2で表示したテストパッケージ単位で実施することが可能です。
   ”-p”オプションにて、テストパッケージ名を指定します。
   書式:start --plan test_plan_name -p java_package_name
   下記の例では、”android.apidemos.cts”を実施させています。

  Note.
  指定されたテストパッケージに含まれるテストシナリオが全部実行された後、
  cts_hostプロンプトが表示されコマンド入力待ちとなります。


  3.2.3 プランCTS結果確認
   CTS実施結果は、android-cts/repository/results 直下に、CTS開始日付フォルダが作成され、そこに格納されます。

  Note.
  resultsフォルダの下に、zipファイルが作成されます。
  これは、前述のCTS実施結果が格納されるCTS開始日付フォルダをcompressしたものです。
  Google社へは、このzipファイルを提出します。


 CTS実施結果フォルダには、図3.2.3-2で示すようなファイル群が存在します。

  testResult.xmlに実行毎に結果が反映されていきます。その結果は、ブラウザで確認可能です。
  testResult.xmlをブラウザでOpenすると下記、図3.2.3-3のように表示されます。



  他の情報もブラウザスクロールによって表示されます。



  CTSがエラーを検知した場合、下記のように、Result列が赤くなり、エラー詳細が表示されます。

  Note.
  Failure Detailsに表示されるエラー内容では、
  どのようなAPIを使用した結果エラーとなったのかが判別しにくい場合があります。
  その場合、CTSソースコード(AOSPから取得可能)を解析し、エラー要因、
  APIを特定する必要があります。


以上です。



当記事内容をPDF化してます。
下記LinkからDownloadできます。
BS_CTS_Doc01(概要).pdf
BS_CTS_Doc02(環境).pdf
BS_CTS_Doc03(基本操作).pdf