| <html devsite><head> |
| <title>运行 CTS 测试</title> |
| <meta name="project_path" value="/_project.yaml"/> |
| <meta name="book_path" value="/_book.yaml"/> |
| </head> |
| <body> |
| <!-- |
| Copyright 2017 The Android Open Source Project |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <h2 id="cts_tradefed">CTS tradefed 使用入门</h2> |
| <p>您可以参阅 <a href="/devices/tech/test_infra/tradefed/index.html">Trade Federation 概述</a>,了解有关 Trade Federation(简称 tradefed 或 TF)持续测试框架的说明。</p> |
| |
| <p>运行测试计划的方法如下:</p> |
| <ol> |
| <li>至少连接一个设备。 |
| </li><li>在开始运行 CTS 时,按<strong>主屏幕</strong>按钮将设备设置为显示主屏幕。</li><li>当设备在运行测试时,它不能用于执行任何其他任务,并且必须保持静止状态(以免触发传感器活动),同时要让相机指向某个可以聚焦的对象。 |
| </li><li>在运行 CTS 时,不要按设备上的任何键。按测试设备上的键或触摸其屏幕会干扰正在运行的测试,并且可能导致测试失败。 |
| </li><li>通过运行解压缩 CTS 包所得文件夹中的 cts-tradefed<em></em> 脚本(例如 <code>$ ./android-cts/tools/cts-tradefed</code>)来启动 CTS 控制台 |
| </li><li>通过附加以下命令启动默认测试计划(包含所有测试包):<code>run |
| cts --plan CTS</code>。这将启动测试兼容性所需的所有 CTS 测试。 |
| <ul> |
| <li>对于 CTS v1(Android 6.0 及更早版本),您可以输入 <code>list plans</code> 来查看存储区中的测试计划列表,也可以输入 <code>list package</code> 来查看存储区中的测试包列表。 |
| </li><li>对于 CTS v2(Android 7.0 及更高版本),您可以输入 <code>list modules</code> 来查看测试模块的列表。 |
| </li></ul> |
| </li> |
| <li>或者,您也可以使用以下命令,从命令行中运行所选择的 CTS 计划:<code>cts-tradefed run cts --plan |
| <plan_name> |
| </plan_name></code> |
| <p class="note"><strong>注意</strong>:我们建议仅在运行 Android 6.0 (Marshmallow) CTS 时,使用 <code>--skip-preconditions</code> 选项跳过可能会在执行 CTS 测试时导致问题且存在前提条件的实验性功能。</p> |
| </li><li>查看控制台中报告的测试进度和结果。 |
| </li><li>如果您的设备运行的是 Android 5.0 或更高版本,并且声明支持 ARM 和 x86 ABI,则应运行 ARM 和 x86 CTS 包。 |
| </li></ol> |
| |
| <h2 id="using-cts-v1">使用 CTS v1 控制台</h2> |
| |
| <p>对于 Android 6.0 或更早版本,您将使用 CTS v1。</p> |
| <h3 id="selecting_cts_plans">选择计划</h3> |
| <p>您可以选择以下测试计划:</p> |
| <ul> |
| <li>CTS - 测试兼容性所需的所有测试。<em></em></li> |
| <li><em></em>Signature - 所有公开 API 的签名验证</li> |
| <li><em></em>Android - 针对 Android API 的测试</li> |
| <li><em></em>Java - 针对 Java 核心库的测试</li> |
| <li><em></em>VM - 针对 ART 或 Dalvik 的测试</li> |
| <li><em></em>Performance - 针对实施的性能测试</li> |
| </ul> |
| <p>您可以使用 <code>run cts</code> 命令执行这些测试。</p> |
| <h3 id="cts_reference">CTS v1 控制台命令参考</h3> |
| |
| <p class="table-caption" id="console-commands"> |
| <strong>表 1.</strong> 该表总结了用于各种用途的 CTS v1 控制台命令。</p> |
| <table> |
| <tbody> |
| <tr> |
| <th>主机</th> |
| <th>说明</th> |
| </tr> |
| <tr> |
| <td><code>help</code></td> |
| <td>显示最常用命令的摘要</td> |
| </tr> |
| <tr> |
| <td><code>help all</code></td> |
| <td>显示可用命令的完整列表</td> |
| </tr> |
| <tr> |
| <td><code>exit</code></td> |
| <td>正常退出 CTS 控制台。所有当前正在运行的测试完成后,控制台将关闭</td> |
| </tr> |
| <tr> |
| <th>运行</th> |
| <th>说明</th> |
| </tr> |
| <tr> |
| <td><code>run cts</code></td> |
| <td>运行指定的测试并显示进度信息。需要指定 <code>--plan</code>、<code>--package</code>、<code>--class</code> 或 <code>--continue-session</code> 中的一个。<p>在测试过程中,CTS 控制台可以接受其他命令</p> |
| <p>如果没有连接任何设备,CTS 台式机(或主机)将等待连接设备后再开始测试</p> |
| <p>如果连接了多台设备,则 CTS 主机将自动选择一台设备</p></td> |
| </tr> |
| <tr> |
| <td><code>--plan <test_plan_name></code></td> |
| <td>运行指定的测试计划</td> |
| </tr> |
| <tr> |
| <td><code>--package/-p <test_package_name> [--package/-p <test_package2>...]</code></td> |
| <td>运行指定的测试包</td> |
| </tr> |
| <tr> |
| <td><code>--class/-c <class_name> [--method/-m <test_method_name></code></td> |
| <td>运行指定的测试类和/或方法</td> |
| </tr> |
| <tr> |
| <td><code>--continue-session</code></td> |
| <td>运行上一个 CTS 会话中所有未执行的测试;会话 testResult.xml 将会更新成最新结果</td> |
| </tr> |
| <tr> |
| <td><code>--shards <number_of_shards></code></td> |
| <td>将 CTS 运行分为指定数量的独立块,以便在多台设备上并行运行</td> |
| </tr> |
| <tr> |
| <td><code>--serial/-s <deviceID></code></td> |
| <td>在特定设备上运行 CTS</td> |
| </tr> |
| <tr> |
| <td><code>-t <class_name>#<test_method_name></code></td> |
| <td>运行特定测试方法</td> |
| </tr> |
| <tr> |
| <td><code>--force-abi 32|64</code></td> |
| <td>在 64 位设备上,仅对 32 位或 64 位 ABI 运行测试</td> |
| </tr> |
| <tr> |
| <th>列表</th> |
| <th>说明</th> |
| </tr> |
| <tr> |
| <td><code>list packages</code></td> |
| <td>列出存储区中的所有可用测试包</td> |
| </tr> |
| <tr> |
| <td><code>list plans</code></td> |
| <td>列出存储区中的所有可用测试计划</td> |
| </tr> |
| <tr> |
| <td><code>list invocations</code></td> |
| <td>列出设备上当前正在执行的“运行”命令</td> |
| </tr> |
| <tr> |
| <td><code>list commands</code></td> |
| <td>列出当前在队列中等待分配给设备的所有“运行”命令</td> |
| </tr> |
| <tr> |
| <td><code>list results</code></td> |
| <td>列出当前存储在存储区中的 CTS 结果</td> |
| </tr> |
| <tr> |
| <td><code>list devices</code></td> |
| <td>列出当前连接的设备及其状态<p> </p> |
| <p>“可用”设备是可正常运行的空闲设备,可用于运行测试</p> |
| <p> </p> |
| <p>“不可用”设备是可通过 adb 查看但不响应 adb 命令的设备,不会分配用于测试</p> |
| <p> </p> |
| <p>“已分配”设备是当前正在运行测试的设备</p></td> |
| </tr> |
| <tr> |
| <th>添加</th> |
| <th>说明</th> |
| </tr> |
| <tr> |
| <td><code>add derivedplan --plan <plan_name><br /> |
| --result/-r<br /> |
| [pass | fail | timeout | notExecuted]<br /> |
| [--session/-s <session_id>]</code></td> |
| <td>创建从给定结果会话衍生的计划;使用此选项可重新运行报告并验证测试问题</td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <h2 id="using-cts-v2">使用 CTS v2 控制台</h2> |
| |
| <p>对于 Android 7.0 或更高版本,您将使用 CTS v2。</p> |
| |
| <h3 id="selecting_ctsv2_plans">选择计划</h3> |
| <p>您可以选择以下测试计划:</p> |
| <ul> |
| <li><em></em>cts - 从预装的 CTS 套件运行 CTS。</li> |
| <li><em></em>cts-camera - 从预装的 CTS 套件运行 CTS-camera。</li> |
| <li><em></em>cts-java - 从预装的 CTS 套件运行核心 Java 测试。</li> |
| <li><em></em>cts-pdk - 运行有助于验证与 PDK 融合的产品的测试。</li> |
| <li><em></em>everything - 兼容性套件的通用配置。</li> |
| </ul> |
| <p>其他可用配置如下:</p> |
| <ul> |
| <li><em></em>basic-reporters - 基本 CTS 报告程序的配置。</li> |
| <li><em></em>collect-tests-only - 从预装的 CTS 套件运行 CTS。</li> |
| <li><em></em>common-compatibility-config - 兼容性套件的通用配置。</li> |
| <li><em></em>cts-filtered-sample - 兼容性套件的通用配置。</li> |
| <li><em></em>cts-known-failures - CTS 已知故障的配置。</li> |
| <li><em></em>cts-preconditions - CTS 前提条件配置。</li> |
| <li><em></em>host - 在现有设备上运行单个基于主机的测试。</li> |
| <li><em></em>instrument - 在现有设备上运行单个 Android 工具测试。</li> |
| <li><em></em>native-benchmark - 在现有设备上运行原生压力测试。</li> |
| <li><em></em>native-stress - 在现有设备上运行原生压力测试。</li> |
| <li><em></em>recharge - 等待设备的电量接近耗尽状态,然后让设备保持充电状态的虚设测试。</li> |
| <li><em></em>testdef - 在现有设备上运行包含在 test_def.xml 文件中的测试。</li> |
| <li><em></em>util/wifi - 用于在设备上配置 WLAN 的实用程序配置。</li> |
| <li><em></em>util/wipe - 擦除设备上的用户数据。</li> |
| </ul> |
| <p>所有这些计划和配置都可以使用 <code>run cts</code> 命令执行。</p> |
| |
| <h3 id="ctsv2_reference">CTS v2 控制台命令参考</h3> |
| |
| <p class="table-caption" id="console-commands"> |
| <strong>表 1.</strong> 该表总结了用于各种用途的 CTS V2 控制台命令。</p> |
| <table> |
| <tbody> |
| <tr> |
| <th>主机</th> |
| <th>说明</th> |
| </tr> |
| <tr> |
| <td><code>help</code></td> |
| <td>显示最常用命令的摘要</td> |
| </tr> |
| <tr> |
| <td><code>help all</code></td> |
| <td>显示可用命令的完整列表</td> |
| </tr> |
| <tr> |
| <td><code>version</code></td> |
| <td>显示版本。</td> |
| </tr> |
| <tr> |
| <td><code>exit</code></td> |
| <td>正常退出 CTS 控制台。所有当前正在运行的测试完成后,控制台将关闭。</td> |
| </tr> |
| <tr> |
| <th>运行</th> |
| <th>说明</th> |
| </tr> |
| <tr> |
| <td><code>run cts</code></td> |
| <td><p>运行默认的 CTS 计划(即完整的 CTS 调用)。</p> |
| <p>在测试过程中,CTS 控制台可以接受其他命令。</p> |
| <p>如果没有连接任何设备,CTS 台式机(或主机)将等待连接设备后再开始测试。</p> |
| <p>如果连接了多台设备,则 CTS 主机将自动选择一台设备。</p></td> |
| </tr> |
| <tr> |
| <td><code>run retry</code></td> |
| <td><p><strong>对于 Android 9</strong>:重新尝试运行在以前的会话中失败或未执行的所有测试。例如,包含 TF 分片的 <code>run retry --retry <session id> -s<device serial></device></session></code> 或 <code>run retry --retry <session id> --shard-count</session></code>。</p> |
| <p>Android 9 不允许使用 <code>run cts --retry</code>。</p></td> |
| </tr> |
| <tr> |
| <td><code>--plan <test_plan_name></code></td> |
| <td>运行指定的测试计划。</td> |
| </tr> |
| <tr> |
| <td><code>--module/-m <test_module_name> [--module/-m <test_module2>...]</code></td> |
| <td>运行指定的测试模块。例如,<code>run cts --module CtsGestureTestCases</code> 会执行手势测试模块(该命令可以简化为 <code>run cts -m Gesture</code>)。<br /> |
| <code>run cts -m Gesture --test android.gesture.cts.GestureTest#testGetStrokes</code> 会运行指定的包、类或测试。</td> |
| </tr> |
| <tr> |
| <td><code>--subplan <subplan_name></code></td> |
| <td>运行指定的子计划。</td> |
| </tr> |
| <tr> |
| <td><code>-- module/-m <test_module_name> -- test <test_name> </code></td> |
| <td>运行指定的模块并进行测试。例如,<code>run cts -m Gesture --test android.gesture.cts.GestureTest#testGetStrokes</code> 会运行指定的包、类或测试。</td> |
| </tr> |
| <tr> |
| <td><code>--retry</code></td> |
| <td>重新尝试运行在以前的会话中失败或未执行的所有测试。使用 <code>list results</code> 获取会话 ID。</td> |
| </tr> |
| <tr> |
| <td><code>--retry-type not_executed</code></td> |
| <td>仅重新尝试运行在以前的会话中未执行的测试。使用 <code>list results</code> 获取会话 ID。</td> |
| </tr> |
| <tr> |
| <td><code>--shards <number_of_shards></code></td> |
| <td><strong>对于 Android 8.1 及更低版本</strong>:将 CTS 运行分为指定数量的独立块,以便在多台设备上并行运行。</td> |
| </tr> |
| <tr> |
| <td><code>--shard-count <number_of_shards></code></td> |
| <td><strong>对于 Android 9</strong>:将 CTS 运行分为指定数量的独立块,以便在多台设备上并行运行。</td> |
| </tr> |
| <tr> |
| <td><code>--serial/-s <deviceID></code></td> |
| <td>在特定设备上运行 CTS。</td> |
| </tr> |
| <tr> |
| <td><code>--include-filter <module_name> [--include-filter <module2>...]</code></td> |
| <td>仅使用指定的模块运行。</td> |
| </tr> |
| <tr> |
| <td><code>--exclude-filter <module_name> [--exclude-filter <module2>...]</code></td> |
| <td>运行时排除指定的模块。</td> |
| </tr> |
| <tr> |
| <td><code>--log-level-display/-l <log_level></code></td> |
| <td>以显示给 STDOUT 的最小指定日志级别运行。有效值:[VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT]。</td> |
| </tr> |
| <tr> |
| <td><code>--abi <abi_name></code></td> |
| <td>强制要求测试在给定的 ABI(32 或 64)上运行。默认情况下,CTS 会为设备支持的每个 ABI 运行一次测试。</td> |
| </tr> |
| <tr> |
| <td><code>--logcat</code>、<code>--bugreport</code> 和 <code>--screenshoot-on-failure</code></td> |
| <td>显示更详尽的故障信息并帮助进行诊断。</td> |
| </tr> |
| <tr> |
| <td><code>--device-token</code></td> |
| <td>指定具有给定令牌的给定设备,例如 <code>--device-token 1a2b3c4d:sim-card.</code>。</td> |
| </tr> |
| <tr> |
| <td><code>--skip-device-info</code></td> |
| <td>跳过收集设备相关信息的过程。注意:运行 CTS 以寻求批准时,请勿使用此选项。</td> |
| </tr> |
| <tr> |
| <td><code>--skip-preconditions</code></td> |
| <td>绕过对设备配置的验证和设置,例如推送媒体文件或检查 WLAN 连接。</td> |
| </tr> |
| <tr> |
| <th>列表</th> |
| <th>说明</th> |
| </tr> |
| <tr> |
| <td><code>list modules</code></td> |
| <td>列出存储区中的所有可用测试模块。 |
| </td></tr> |
| <tr> |
| <td><code>list plans</code> 或 <code>list configs</code></td> |
| <td>列出存储区中的所有可用测试计划(配置)。</td> |
| </tr> |
| <tr> |
| <td><code>list subplans</code></td> |
| <td>列出存储区中的所有可用子计划。</td> |
| </tr> |
| <tr> |
| <td><code>list invocations</code></td> |
| <td>列出设备上当前正在执行的“运行”命令。</td> |
| </tr> |
| <tr> |
| <td><code>list commands</code></td> |
| <td>列出当前在队列中等待分配给设备的所有“运行”命令。</td> |
| </tr> |
| <tr> |
| <td><code>list results</code></td> |
| <td>列出当前存储在存储区中的 CTS 结果。</td> |
| </tr> |
| <tr> |
| <td><code>list devices</code></td> |
| <td>列出当前连接的设备及其状态。 |
| <p> </p> |
| <p>“可用”设备是可正常运行的空闲设备,可用于运行测试。</p> |
| <p> </p> |
| <p>“不可用”设备是可通过 adb 查看但不响应 adb 命令的设备,不会分配用于测试。</p> |
| <p> </p> |
| <p>“已分配”设备是当前正在运行测试的设备。</p></td> |
| </tr> |
| <tr> |
| <th>转储</th> |
| <th>说明</th> |
| </tr> |
| <tr> |
| <td><code>dump logs</code></td> |
| <td>为所有正在运行的调用转储 tradefed 日志。</td> |
| </tr> |
| <tr> |
| <th>添加</th> |
| <th>说明</th> |
| </tr> |
| <tr> |
| <td><code>add subplan --name/-n <subplan_name><br /> |
| --result-type<br /> |
| [pass | fail | timeout | notExecuted]<br /> |
| [--session/-s <session_id>]</code></td> |
| <td>创建从上一会话衍生的子计划;此选项会生成可用于运行测试子集的子计划。<br /><br /> 唯一的必选项是 <code>--session</code>。其他选项都是可选的,但如果选用这些选项,必须后跟一个值。<code>--result-type</code> 选项可重复使用;例如 <code>add subplan --session 0 --result-type passed --result-type |
| failed</code> 是有效的。</td> |
| |
| </tr> |
| </tbody> |
| </table> |
| |
| </body></html> |