Android Studio 体验之旅

在 Android Studio 中创建体验之旅有助于使端到端测试易于编写和维护,因为它允许您使用自然语言描述每个测试(称为“体验之旅”)的步骤和断言。通过利用 Gemini 的视觉和推理能力,用自然语言编写的步骤会转换为 Gemini 在您的应用上执行的操作,从而使您的体验之旅易于编写和理解。此外,您可以编写和描述更复杂的断言,Gemini 会根据其在设备上看到的内容进行评估,以确定您的体验之旅是通过还是失败。

而且,由于 Gemini 会推理要执行哪些操作才能实现目标,因此体验之旅对应用布局或行为的细微变化更具弹性,从而在针对不同版本的应用和不同设备配置运行时,可以减少测试的不稳定性。

您可以直接从 Android Studio 编写并在任何本地或远程 Android 设备上运行体验之旅。IDE 提供全新的编辑器体验,用于制作体验之旅,以及丰富的结果,帮助您更好地跟踪 Gemini 的推理和体验之旅的执行情况。

编写体验之旅

Android Studio 提供文件模板和新的编辑器体验,让创建和编辑体验之旅变得轻松。体验之旅使用 XML 语法编写,以组织体验之旅说明和步骤。

要创建和开始编辑体验之旅,请执行以下操作:

  1. 在 Android Studio 的 Project 面板中,右键点击您要为其编写体验之旅的应用模块。
  2. 依次选择 New > Test > Journey File
  3. 在显示的对话框中,提供您的体验之旅的名称和说明。
  4. 点击 OK。Android Studio 会使用您选择的名称为您的体验之旅创建一个 XML 文件。您可以使用 Code 视图直接编辑 XML,也可以使用 Design 视图以获得更好的编辑体验。
  5. Design 视图中查看您的体验之旅时,使用文本字段描述体验之旅的每个步骤。每个步骤都可以包含您希望 Gemini 执行的描述性操作或您希望 Gemini 评估的断言。
  6. 在键盘上按 Enter 键以在同一体验之旅中开始新的提示。您可以根据需要为要定义的体验之旅的每个步骤重复此操作。

编写体验之旅的提示

以详细且有条理的方式编写体验之旅可以增加 Gemini 以更确定的方式准确运行您预期体验之旅的可能性。以下是一些可帮助您更有效地编写体验之旅的提示:

  • 避免显式的单个操作:Gemini 可以将您的体验之旅的每个步骤转换为多个操作。避免编写诸如“点击 X”之类的显式单个操作的提示,因为模型经过训练可以完成复杂目标。
  • 将断言与操作分开:Gemini 会不断评估应用的状态,以确定它是否处于“正确”状态以继续体验之旅。但是,您可能需要将更复杂的断言定义为一个单独的步骤。此外,使用“Verify that”、“Assert that”或“Check that”等关键词短语开始每个提示,以让 Gemini 知道此步骤旨在进行断言。
  • 使用滑动手势引导 Gemini:除了点击或键盘输入等基本交互之外,Gemini 还支持需要它向特定方向滑动屏幕的操作。例如,要滚动内容或关闭某个界面,只需描述您的滑动手势的方向和意图。默认情况下,Gemini 从屏幕中心滑动,但您可以引导它在设备屏幕的不同部分滑动。
  • 避免其他复杂的交互和配置更改:Gemini 目前不支持所有交互和配置更改,例如多指手势、屏幕旋转或折叠操作。团队正在努力改进 Gemini 的功能。

运行体验之旅

您可以在任何可用的本地或远程设备上运行您的体验之旅,类似于任何其他插桩测试,Android Studio 会生成丰富的结果,帮助您了解体验之旅的执行情况。

要测试体验之旅,请执行以下操作:

  1. 从主工具栏中选择目标设备,就像您运行插桩测试时一样。
  2. 导航到您要测试的体验之旅 XML 文件并在编辑器中将其打开。
  3. 在编辑器中,执行以下任一操作:
    1. 如果您处于 Design 视图中,请点击 Run Journey
    2. 如果您处于 Code 视图中,请点击 XML 中定义体验之旅名称旁边边栏中的 Run

Android Studio 会为您创建一个 Journeys Test 配置,并在目标设备上运行。在执行期间,Android Studio 会构建并部署您的应用,并连接到 Gemini 以确定体验之旅每个步骤要执行的操作。

在运行体验之旅时,编辑器中还会显示有限的结果,例如屏幕截图、执行的操作以及体验之旅每个步骤执行过程中的推理。只需将鼠标悬停在编辑器中的缩略图上即可查看更多信息。这在迭代体验之旅中的提示时会很有帮助。

查看结果

当 Android Studio 完成体验之旅测试后,测试结果面板会自动显示结果。

与您可能在 Android Studio 中运行的其他插桩测试相比,体验之旅的结果显示方式有所不同。

  • Tests 面板将体验之旅分解为离散的步骤。您可以点击每个步骤,了解有关 Gemini 如何执行该步骤的更多信息。
  • Results 面板显示丰富的信息,可帮助您了解 Gemini 如何理解和推理您的体验之旅,以及它是如何执行的。
  • 发送到 Gemini 的屏幕截图在步骤中的每个操作处显示,以提供视觉辅助。
  • 每个执行的操作以及 Gemini 执行该操作的原因都会在每个屏幕截图旁边进行描述。
  • 步骤中的每个操作都有编号。

已知问题

  • 在测试体验之旅时,您的应用的所有权限默认都被授予。
  • 在运行 Android 15(API 级别 35)的设备上测试体验之旅时,您可能会在设备上看到针对“AndroidX Crawler”的“不安全应用已阻止”警告。您可以点击 Install anyway(仍然安装)来绕过此检查。或者,您可以配置设备上的开发者选项,并停用 Verify apps over USB(通过 USB 验证应用)选项。
  • 体验之旅文件目前不会显示在 Projects 面板的 Android 视图中。要在项目中查看体验之旅文件,请使用 Project 视图。
  • 如果体验之旅中的多个操作共享完全相同的提示,则体验之旅编辑器中显示的测试结果可能不正确。具体而言,所有具有重复提示的操作都将显示与该提示最近更新的实例关联的测试结果。为了解决此问题,请确保每个操作都有唯一的提示,例如,通过添加不同的前缀或后缀。
  • 在全新的模拟器上第二次加载键盘时,会出现手写笔弹出式窗口。此弹出式窗口通常会导致与文本字段交互的测试失败。发生这种情况时,请关闭弹出式窗口并重新运行体验之旅。
  • 应用爬虫工件可能偶尔会出现在代理理由中。
  • 体验之旅执行偶尔会因 IllegalStateException 而失败。发生这种情况时,您可以点击 Test Results(测试结果)以查看完整错误。
  • 如果 Android Gradle 插件 (com.android.application) 未在顶级 build.gradle 文件中定义,您在运行体验之旅时可能会看到以下错误:

    Failed to apply plugin class 'com.android.tools.journeys.JourneysGradlePlugin'
    

    要解决此问题,请确保在顶级 build.gradle 文件中定义了该插件。如需了解详情,请参阅配置 Android 构建系统