互換性テストスイート

「互換性テストスイート(CTS)」は、無料でありながら商用レベルの品質をもつテストスイートです。デバイス メーカーは、CTS を使用してデバイスの互換性を確保し、検証用のテスト結果をレポートすることができます。CTS は、デバイスを構築するエンジニアの日々のワークフロー(継続的構築システムなど)に組み込めるように設計されています。初期段階で非互換性を明らかにし、開発プロセス全体を通じてソフトウェアの互換性を保つことを目的としたツールです。

CTS は、Android オープンソース プロジェクト(AOSP)のバイナリまたはソースとしてダウンロードできます。デスクトップ マシン上で動作し、接続されたデバイスやエミュレータで直接テストケースを実行します。

CTS は、以下の 2 つの主要ソフトウェア コンポーネントで構成されています。

  • CTS Trade Federation テストハーネス: デスクトップ マシン上で実行され、テストの実行を管理します。Trade Federation は、複数のテスト対象デバイス(DUT)で分割テストを実行できます。また、スイート リトライ機能によりスイート全体ではなく不合格となった部分のみを再試行できるため、再実行時間を大幅に短縮できます。
  • 個々のテストケース: DUT で実行されます。テストケースは JUnit テストとして Java で記述され、Android .apk ファイルにパッケージ化されて実際のデバイス ターゲットで実行されます。

互換性テストスイート検証ツール(CTS 検証ツール)

互換性テストスイート検証ツール(CTS 検証ツール)は CTS を補完するものです。こちらのリンクからダウンロードできます。CTS 検証ツールを使用すると、据え置きのデバイスでは手動の入力や手動の位置設定がないとテストできない API と機能をテストできます(たとえば、音質や加速度計など)。

CTS 検証ツールは、手動テスト用のツールであり、次のソフトウェア コンポーネントが含まれています。

  • DUT(および距離測定要件では 2 台目のデバイス)で実行される CTS 検証ツールアプリ: 結果を収集します。

  • デスクトップ マシンで実行される実行形式またはスクリプト: CTS 検証ツールアプリのテストケースの一部に、データの供給または追加の制御を行います。

ワークフロー

CTS のフロー

図 1. CTS の使い方

この図は、CTS のワークフローをまとめたものです。手順の詳細については、こちらのセットアップから始まるセクションのサブページをご覧ください。

テストケースの種類

CTS には、次の種類のテストケースが含まれます。

  • 単体テスト: Android プラットフォーム内の不可分なコードをテストします。たとえば、java.util.HashMap などの単一のクラスです。
  • 機能テスト: API の組み合わせを上位レベルのユースケースでテストします。

単体テストのカバレッジ

単体テストのテストケースは、互換性の確保のために以下の分野をカバーしています。

分野 説明
署名テスト 各 Android リリースには、そのリリースに含まれるすべての公開 API の署名を記述した XML ファイルがあります。CTS には、デバイスで使用可能な API に対して API 署名を検証するユーティリティが含まれています。署名の検証結果は、テスト結果の XML ファイルに記録されます。
プラットフォーム API テスト プラットフォーム(コアライブラリ、Android アプリケーション フレームワーク)の API が SDK クラス索引の記述どおりか否かをテストします。具体的には、クラスの署名、属性の署名、メソッドの署名、メソッドの動作などの API の正しさの確認、不正なパラメータの処理に関する動作の確認を行います。
Dalvik テスト 対象を Dalvik 実行形式に絞ったテストです。
プラットフォーム データモデル コンテンツ プロバイダを通じてアプリケーション デベロッパーに公開されるコア プラットフォーム データモデルが、SDK の android.provider パッケージの記述どおりか否かをテストします。連絡先、ブラウザ、設定などをテストします。
プラットフォーム インテント コア プラットフォームのインテントが、SDK の使用可能なインテントの記述どおりか否かをテストします。
プラットフォーム パーミッション コア プラットフォームのパーミッションが、SDK の使用可能なパーミッションの記述どおりか否かをテストします。
プラットフォーム リソース コア プラットフォームのリソースタイプが、SDK の使用可能なリソースタイプの記述どおりの正しい動作をしているか否かをテストします。単純な値、ドローアブル、9-patch、アニメーション、レイアウト、スタイル、テーマ、代替リソースの読み込みなどをテストします。