运行 Robo 脚本 (Android)

本文档介绍了如何使用 Robo 脚本,这些脚本是一些测试,用于自动执行移动应用的手动质量检查任务,并有助于实现持续集成 (CI) 和发布前测试策略。例如,您可以使用 Robo 脚本测试常见的用户操作历程或提供特定的界面 (UI) 输入,例如用户名和密码。Robo 脚本是 Robo 测试的一项功能。

利用 Robo 脚本,您可以记录自己在应用中完成某个工作流的每一步,然后将记录上传到 Firebase 控制台以供在 Robo 测试中运行。当您运行附加了脚本的 Robo 测试时,Robo 会先逐步执行您预先编写了脚本的操作,然后像平常那样探索该应用。

Robo 脚本使用 Robo 测试作为测试引擎。在最基本的形式中,Robo 脚本由一系列界面操作(例如输入文本“username”,然后点按“确定”按钮)组成。Robo 脚本还可包含等待元素显示、点按元素内特定位置以及执行 Android 调试桥 (adb) shell 命令等操作。

Robo 脚本使用 Robo 测试作为测试引擎。在最基本的形式中,Robo 脚本由一系列界面操作(例如输入文本“username”,然后点按“确定”按钮)组成。Robo 脚本还可包含等待元素显示、点按元素内特定位置以及执行 Android 调试桥 (adb) shell 命令等操作。

与传统测试框架相比,Robo 脚本具有以下优势:

功能 说明
非常稳健 Robo 脚本可以容忍不同应用版本间的重大结构和行为差异以及应用不稳定性。
开放 Robo 脚本执行完成后,基础 Robo 测试可以接管并继续测试应用。这种持续的测试方式可实现几个关键用例。例如,您可以通过执行自定义登录流程,使用 Robo 脚本让应用处于特定状态。
可记录 您无需手动编写 Robo 脚本。您可以使用 Android Studio 中的 Robo 脚本记录器记录这些脚本。创建或修改 Robo 脚本通常不需要具备任何移动开发知识。
灵活 Robo 脚本可以与游戏中常见的非原生界面元素进行交互。

Robo 脚本会在 Robo 测试期间有条件地触发,这使得用户可以为实现更大的覆盖率或针对特定功能而增强 Robo 的行为。与传统测试框架相比,Robo 脚本提供以下支持:

  • 各种触发条件,例如,特定应用软件包名称有效(或无效),亦或有特定元素显示(或未显示)在屏幕上。
  • 执行控制措施,例如,执行次数上限、优先级和相关抓取阶段。
  • 非常规操作类型(基于条件的操作、元素忽略操作、屏幕关闭操作)。

我们建议您尽可能使用 Robo 脚本,因为它们易于维护。例如,您可以使用 Robo 脚本执行以下操作:

  • 探索重要的工作流,深入应用功能的核心。例如,您可以执行登录操作、在首次启动后设置应用的状态,以及注册新用户。
  • 让 Robo 专注于应用的特定部分,以便充分利用 Robo 测试时间。Robo 脚本会指导 Robo 测试到达应用的相关部分,在该部分中,Robo 测试会继续执行全自动抓取操作。
  • 让应用处于特定状态或进入特定屏幕以执行分析,例如分析应用内消息功能、隐私权政策屏幕或游戏的特定关卡。
  • 在 Robo 脚本执行完成后,执行端到端插桩测试(可选择是否继续执行 Robo 测试的全自动抓取操作)。

您可以使用更高级的 Robo 脚本功能执行以下操作:

  • 在 Robo 开始抓取被测应用之前或完成抓取之后执行操作,例如在抓取之前清理被测应用数据或更改设备设置。
  • 更改 Robo 在抓取过程中方方面面的行为,尤其是以下操作:
    • 指示 Robo 忽略某些界面 widget 或应用屏幕。
    • 在 Robo 从特定屏幕回溯时为其提供可执行的自定义操作。
    • 指示 Robo 每当在抓取过程中遇到特定应用屏幕时执行特定操作。
  • 完全自定义 Robo 的抓取方式。例如,您可以组合使用基于条件的操作和无条件操作,使被测应用在整个抓取过程中始终处于后台,同时执行各种设备操作并关闭屏幕上显示的任何弹出式对话框。

请注意,Robo 脚本不会取代所有类型的测试。您仍然需要通过单元测试来捕获应用中的低级别逻辑 bug;这些测试通常不需要 Android 或 iOS 环境。我们建议您使用定向插桩测试来补充 Robo 脚本测试。定向插桩测试可以包含有关业务逻辑的特定详细断言,而这些断言最适合通过代码来表达。

在 Android Studio 中使用 Test Lab 记录 Robo 脚本

借助 Android Studio 中的 Robo 脚本记录器,您可以通过直接与设备上的应用进行交互来记录 Robo 脚本。请按照以下说明开始在 Android Studio 中通过 Firebase 工具使用 Robo 脚本:

  1. 打开 Android Studio,然后选择 Tools(工具)-> Firebase

  2. 在“Firebase”窗格中,点击 Record Robo Script and Use it to Guide Robo Test(记录 Robo 脚本并将其用于指导 Robo 测试)。

  3. 点击 Record Robo script(记录 Robo 脚本)。系统会显示“Select Deployment Target”(选择部署目标)对话框。

  4. 选择您要在其中记录 Robo 脚本的设备。

  5. 在设备中记录 Robo 脚本后,以 JSON 文件格式将文件保存到所需的位置。

  6. 在 Firebase 控制台中打开“Test Lab”页面,然后上传 JSON 脚本文件和应用 APK 文件。

  7. 点击继续按钮。系统会提示您选择设备和 API 级别。测试脚本执行完成后,Test Lab 会生成测试报告。

  8. (可选)如需复制或下载测试报告的 logcat 和视频,请点击查看源文件

默认情况下,Robo 脚本稳健性机制可防止它过早失败。如果您选择 strict 执行模式,并且 Robo 脚本在任何时刻失败,则 Test Lab 会放弃该脚本中的所有后续步骤,并继续执行常规 Robo 抓取操作。很多情况下,Robo 脚本会因 Robo 无法在屏幕上找到所需元素而失败。为避免失败,请确保您的应用导航方式可以预测,并且屏幕会按既定顺序显示。

在 Test Lab 中运行 Robo 脚本

如需在 Test Lab 中运行 Robo 脚本,请按照以下说明操作:

  1. 在 Firebase 控制台中打开“Test Lab”页面。

  2. “应用 APK 或 AAB”字段中上传应用的 APK 文件或 AAB 文件。

  3. Robo 脚本(可选)字段中上传您记录或手动创建的 Robo 脚本文件。

提供 Robo 脚本以用于在本地运行 Robo 测试

如需提供 Robo 脚本以用于在本地运行 Robo 测试,请使用以下 Robo 测试选项:

--robo-script-file <robo-script-path>

<robo-script-path> 替换为本地文件系统中 Robo 脚本文件的路径。按照本地 Robo 测试运行说明进行操作。

在 gcloud CLI 测试调用中指定 Robo 脚本

如需在 gcloud CLI 测试调用中指定 Robo 脚本,请使用以下 gcloud CLI 标志:

--robo-script = <robo-script-path>

<robo-script-path> 替换为本地文件系统或 Cloud Storage 中 Robo 脚本文件的路径(对于 Cloud Storage,请使用 gs:// 表示法)。例如:

gcloud firebase test android run --app = <path_to_app_apk_file> --robo-script = <robo-script-path>

后续步骤