Androidをとりまくテストスイート(xTS:CTS、VTS、STS、GTS)の概要

 Android開発に関しては、仕様に準拠しているか、互換性を満たしているか、セキュリティといった特定の品質を実現しているか確認するためのテストスイートが複数提示されています。これらはAndroid xTSとも呼称されます。今回はその主要なxTSをまとめます。

CTS(Compatibility Test Suite)

 CTSは、対象のデバイスのAndroidのAPIが標準仕様を実現しており、デバイスが、サードパーティのAndroidアプリーケーションを動作させられるか確認するテストスイートです。

 CTSでは、端末メーカーのカスタマイズで標準のAndroid APIが壊れていないか、妥当な性能を確保しているかといった確認を行います。CTS合格の保証によりアプリケーション開発者に対するWORA(Write once, run anywhere:一回コードを書けばどのAndroid端末でも動作する)の実現を支えます。
 CTSはホスト環境から端末をリモートで操作して実行します。

 テストの概要やソースコードは公開されています。
互換性テストスイート(CTS)の概要  |  Android Open Source Project

 CTSのテストベースは以下のCDD(Compatibility Definition Document)になります。
Android 互換性定義ドキュメント  |  Android Open Source Project

 注意点として、テストコードを確認すれば分かりますが、CDDに対してCTSは基本的な確認しか実施していません。CDDの実現保証には、手動テストやレビュー、網羅性を高めたテストも必要です。

VTS(Vendor Test Suite)

 VTSは、Androidのハードウェアベンダーインターフェースが要件を実現しているか確認するテストスイートです。

 VTSは複数のテストで構成されます。構成要素の一つに、Google TestでHALを切り出してテストするコンポーネントテストがあります。またLinux Kernelを接続した統合テストやAPIテスト、LTP(Linux Test Project)準拠のテストによる、OSとハードウェアの疎通確認も含まれます。そこではGSI(Generic System Image)を使って汎用的な確認を実施します。
 VTSでハードウェアベンダーインターフェースの実現性保証を行うことで、ハードウェアバリエーションが増加・爆発した状態でも、円滑にAndroidフレームワークをアップデートしたり、Android APIの標準性を担保したりできるようにする状態を実現します。

 VTSのテストベースは、VSR(Vendor Software Requirements)と呼ばれるベンダーに対する一連の要件とHALの設定になります。VSRは前述のCDD中のハードウェアベンダーに対する要件や、ベンダーAPI仕様で構成されます。

 VTSとCTSの関係を以下に示します。


GTS(Google Mobile Services Test Suite)

 Google提供のサービス(Play Services等)やアプリ(Playストア等)の動作確認を行うテストスイートです。Google自身のサービスの品質確認を行うほか、端末メーカーがGoogleサービスを組み込んで出荷する際に正しく組み込まれているかの確認で使われます。一般公開されていません。

STS(Security Test Suite)

 Androidの脆弱性対策、セキュリティ確保が適切か確認するテストスイートです。テストを実行する仕組みは公開されており、関係開発者が実行可能になっています。ただテスト内容の詳細は、脆弱性情報や攻撃手段を含むため一般公開されていません。