Android Studio 新功能 Journey Test:借助 AI 实现基于自然语言的 UI 测试用例编写

作者:fundroid日期:2025/10/9

在 Android 应用开发中,大家经常使用单元测试框架进行 UI 测试。随着技术演进,Android Studio 推出的 Journey Test 功能,依托 Gemini AI,为 UI 测试带来了全新的范式转变。

核心能力:自然语言与 AI 驱动的测试

Journey Test 最大的亮点在于结合了自然语言和 Gemini AI 的能力。开发者无需再埋头于复杂的代码编写,只需用日常的自然语言描述测试步骤,比如 “在邮箱输入框中输入 [email protected]”“验证是否显示‘邮箱为必填项’的错误提示”。

1<action>Type "[email protected]" into the email field.</action>
2<action>Verify that an error message "Email is required" is displayed.</action>
3

Gemini AI 就能将这些描述转化为可执行的测试用例,让测试用例既方便人类阅读和理解,又能被机器精准执行,就像产品经理或 QA 描述测试计划,Android Studio 能将其转化为完整且功能齐全的 UI 测试,包含断言和导航等关键部分。

从创建到执行:完整工作流

1. 创建 Journey 文件

在 Android Studio 中,通过以下步骤创建 Journey 文件:

  • 右键点击项目面板中的应用模块;
  • 选择 New > Test > Journey File
  • 输入测试名称与描述,生成 XML 文件。

以登录界面测试为例,Journey Test 能对必填字段、邮箱格式有效性、按钮启用 / 禁用逻辑以及成功登录行为等方面进行验证。通过完整的 Journey Test XML 文件,能清晰看到自然语言指令是如何转化为全面的 UI 测试流程的,还有相关视频演示直观展示测试的实际运行情况。

2. 编辑测试步骤

可通过 XML 的 DesignCode 视图来描述测试步骤。在这里插入图片描述

以下是测试登录界面的 XML 示例:

1<?xml version="1.0" encoding="utf-8"?>
2<!-- formatter:off -->
3<journey name="LoginJourneyTestRefactored">
4    <description>Tests the login screen's initial state, input validation, button actions</description>
5    <actions>
6        <!-- Step 1: 验证初始界面状态与禁用的登录按钮 -->
7        <action>Verify that the email text input field is empty.</action>
8        <action>Verify that an error message "Email is required" is displayed below the email field.</action>
9        <action>Verify that an error message "Password is required" is displayed.</action>
10        <action>Check the "Login" button is disabled.</action>
11
12        <!-- Step 2: 测试无效邮箱格式与禁用的登录按钮 -->
13        <action>Type "abc@-" into the email text input field and move to next action.</action>
14        <action>Verify that an error message containing "Invalid Email" is displayed.</action>
15        <action>Check the "Login" button is still disabled.</action>
16
17        <!-- Step 3: 测试无效域名与禁用的登录按钮 -->
18        <action>Just append "com" to the text in the email text input field and move to next action.</action>
19        <action>Verify that an error message "This Domain is not allowed" is displayed.</action>
20        <action>Check the "Login" button is still disabled.</action>
21
22        <!-- Step 4: 清空邮箱并验证必填项错误 -->
23        <action>Clear the email text input field and verify its empty.</action>
24        <action>Verify that an error message "Email is required" is displayed below the email field.</action>
25        <action>Verify that the email text input field is empty.</action>
26
27        <!-- Step 5: 测试有效邮箱、验证密码必填与禁用的登录按钮 -->
28        <action>Type "[email protected]" into the email text input field.</action>
29        <action>Verify that no error message is displayed for the email field.</action>
30        <action>Verify that an error message "Password is required" is still displayed.</action>
31        <action>Check the "Login" button is still disabled don't enter anything.</action>
32
33        <!-- Step 6: 输入有效密码并验证无错误 -->
34        <action>Type "admin@12345" into the password text input field.</action>
35        <action>Verify that no error message is displayed for the email field.</action>
36        <action>Verify that no error message is displayed for the password field.</action>
37
38        <!-- Step 7: 点击登录并验证跳转到主页 -->
39        <action>Click the "Login" button and verify that the next screen is the HomeScreen.</action>
40    </actions>
41</journey>
42<!-- formatter:on -->
43

打开 Design 视图如下,提供更友好的操作解决,可以自由拖动和编辑每个 action在这里插入图片描述

3. 运行与调试

选择目标设备(模拟器或物理机),打开 Journey XML 文件后点击“运行”,Android Studio 会:

  • 部署应用到设备;
  • 调用 Gemini AI 执行测试步骤;
  • 生成包含截图Gemini 推理过程的测试报告,便于调试。

在这里插入图片描述

高效编写 Journey 的技巧

以详细且有条理的方式编写 Journey,能提升 Gemini 准确且确定地运行预期测试的可能性。以下是助力更高效编写 Journey 的技巧:

分离断言与操作: Gemini 会持续评估应用状态,判断是否处于可继续测试流程的 “正确” 状态。不过,你可能需要将更复杂的断言定义为单独步骤。此外,用 “Verify that”“Assert that” 或 “Check that” 等关键短语开头,让 Gemini 知晓该步骤是断言。

用滑动操作指引 Gemini:除了点击、键盘输入等基础交互,Gemini 还支持按特定方向滑动屏幕的操作。比如,要滚动内容或关闭部分 UI,只需描述滑动操作的方向和意图。默认情况下,Gemini 从屏幕中心滑动,但你可引导它在设备屏幕的不同区域滑动。

避免复杂交互与配置变更:Gemini 目前不支持所有交互和配置变更,像多指手势、屏幕旋转或折叠操作等。不过,团队正在努力提升 Gemini 的能力。

现状与局限

Journey Test 处于早期实验阶段,存在以下局限:

  • 执行速度慢:相比 Espresso 测试,相同用例执行时间更长,暂不适合 CI 流水线;
  • 稳定性不足:Gemini 可能误解析指令,导致测试“偶发失败”;
  • 文本操作缺陷:长文本输入时光标位置异常、删除操作不彻底等问题。

适用场景与替代建议

适用场景

  • 需求文档与测试用例的协同对齐(产品、开发、测试团队共享自然语言用例);
  • 原型阶段的快速 UI 流程验证;
  • 作为现有 Espresso/Compose 测试的补充(非核心流程用例)。

不适用场景

  • 生产环境的 CI/CD 流水线;
  • 对性能敏感的高频测试;
  • 复杂交互(如多手势、屏幕旋转)的测试。

总结

Journey Test 是 Android 测试领域的一次创新尝试,它用“自然语言 + AI”降低了 UI 测试的技术门槛。尽管当前存在局限性,但在团队协作早期验证场景下价值显著。未来随着 Gemini AI 能力的迭代,Journey Test 有望成为 Android 测试生态的重要组成部分。


Android Studio 新功能 Journey Test:借助 AI 实现基于自然语言的 UI 测试用例编写》 是转载文章,点击查看原文


相关推荐


【SpringCloud(2)】微服务注册中心:Eureka、Zookeeper;CAP分析;服务注册与服务发现;单机/集群部署Eureka;连接注册中心
凉凉心.2025/10/7

1. 什么是服务治理? SpringCloud封装了Netfix开发的Eureka模块来实现服务治理 在传统pc的远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册 2. 什么是服务注册与发现 Eureka采用了CS的设计架构,Eureka Server 作为服务注册功能的服务器,它是服务注册中心,而系统中的其他微服务使用Eureka的客户端连接到Eureka


Java分布式缓存的负载均衡与扩展性:构建高可用系统的隐形支柱
墨夶2025/10/6

Java与分布式缓存的“生死博弈” 在某个电商平台的双十一大促凌晨,当流量洪峰冲破百万QPS时,Java工程师们发现:那些精心设计的Redis集群、Ehcache本地缓存、以及看似简单的负载均衡策略,正在以肉眼可见的速度瓦解。这个残酷的现实揭示了一个真相:Java在分布式缓存中的角色,远不止是调用API那么简单。它需要像外科医生一样精准控制资源分配,像建筑大师一样设计可扩展的架构。 一、Java分布式缓存的“三体法则”:负载均衡的本质 1.1 负载均衡:分布式系统的“心脏起搏器” /


Python高校社团选择报名系统 微信小程序设计与实现
qq_31666783672025/10/4

目录 已开发项目效果实现截图技术路线核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 已开发项目效果实现截图 同行可拿货,招校园代理 本系统还支持springboot/laravel/express/nodejs/thinkphp/flask/django/ssm/springcloud 微服务分布式等框架 技术路线 开发语言:Python 框架:flask/django 开发软件:PyCharm/vscode 数据库


[创业之路-655]:人类可以直接使用的自然资源
文火冰糖的硅基工坊2025/10/3

人类可以直接使用的自然资源,是指那些无需复杂加工或仅需简单处理即可被利用的自然物质与能量。这些资源是人类生存和发展的基础,广泛应用于生活、生产、能源、交通等领域。 下面从资源类型、使用方式、分布特点与可持续性四个维度,系统梳理人类可以直接使用的自然资源。 一、按资源性质分类:六大类可直接使用的自然资源 类别是否可再生可直接使用的形式使用场景1. 水资源可再生河流、湖泊、雨水、地下水饮用、灌溉、洗涤、发电2. 太阳能可再生阳光(热能与光能)取暖、晾晒、太阳能灶、光伏发电(初级转换)3. 风


DeepSeek Java 单例模式详解
稚辉君.清华大学马士兵P9Java2025/10/2

Java 单例模式详解 单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点。## 单例模式的实现方式### 1. 饿汉式(Eager Initialization)javapublic class EagerSingleton { // 类加载时就创建实例 private static final EagerSingleton instance = new EagerSingleton(); // 私有构造函数,防止外部实例化 private EagerSingleton


maven install依赖后 另一个项目 maven reload找不到包
zzxxlty2025/10/2

如果是build报错,找不到包,则在idea设置-maven-runner里,选择delegate IDE build actions to Maven, 让maven接管build


(七——下)复习(分布式链路追踪/Rabiit MQ使用/Api Gateway)
山猪打不过家猪10/2/2025

【代码】(七——下)复习(分布式链路追踪/Rabiit MQ使用/Api Gateway)


iOS 混淆与团队协作,研发、安全、运维、测试如何在加固流程中高效配合(iOS 混淆、ipa 加固、协作治理)
程序员不说人话10/1/2025

本文聚焦 iOS 混淆的团队协作问题,分析研发、安全、运维、测试常见断层,提出角色分工、协作流程与工具实践,结合实际案例说明如何避免白名单遗漏、符号丢失和功能异常,实现高效安全的混淆治理。


STM32CUBEMX + STM32L051C8T6 + RTC实时时钟 + 闹钟定时唤醒 + 周期唤醒 + STANDBY模式RTC唤醒
佛科院23电子阿浩9/30/2025

记得包含stdio string这两个头文件!测试现象我这边的方法就是锂电池焊死,太阳能供电,板子静态电流低一点就能正常工作较长时间,这样我烧录一次准确的时间戳,就能和实际生活的时间对应上而且确保闹钟正常唤醒。


门诊场景评测深度分析报告:医生-病人-测量代理交互对诊断影响机制研究(上)
Allen_Lyb2025/10/10

引言 医疗人工智能(AI)的发展正从静态问答系统向动态交互式决策助手演进,大型语言模型(LLM)在医学领域测评中展现出显著进步,如美国医学执照考试正确率从 2021 年 9 月的 38.1% 提升至 2023 年 11 月的 90.2%,超越人类专家平均水平(87%)[1][2]。然而,临床决策的复杂、顺序性本质与多模态数据收集需求,使得依赖静态问答的传统评估方法难以准确描绘 AI 系统的真实临床能力——研究表明,动态决策环境下诊断准确率可降至静态问答的 1/10 以下[3][4]。与此同时,

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0