用编程智能体测试 Android 应用
本页由英文自动翻译。
阅读英文版编程智能体可以像真人一样测试你的 Android 应用注册流程:构建应用,在 Android Emulator 中运行,用 Proxy Mail QA 测试地址填写表单,然后输入邮件中的验证码或打开邮件中的链接。Proxy Mail QA 为智能体提供地址以及邮件中的验证码或链接;智能体用自己的工具操作模拟器,通常是 adb。
下面每种设置都要先把 Proxy Mail QA 连接到智能体:粘贴一句提示词设置,或手动连接 MCP server。
Claude Code、Codex 或 Cursor 搭配 adb
Section titled “Claude Code、Codex 或 Cursor 搭配 adb”任何能运行 shell 命令的智能体都可以通过 Android SDK 平台工具中的 adb 操作模拟器。从 Android Studio 的 Device Manager 启动模拟器(或用 emulator -avd 加模拟器名称启动),在已连接 Proxy Mail QA 的智能体中打开你的项目,然后输入:
构建 debug 版应用,安装到正在运行的模拟器上并打开。用一个新的 Proxy Mail QA 测试地址和它提供的密码注册,然后输入邮件中的验证码,检查应用是否显示账号已验证。每一步都截图。
智能体通常会:
- 用
./gradlew installDebug构建并安装,用adb shell am start打开应用。 - 调用
create_address,参数为password: true。 - 从
adb shell uiautomator dump(或adb exec-out screencap -p的截图)中找到输入框,用adb shell input tap点击,用adb shell input text输入。 - 提交,然后调用
wait_for_code或wait_for_link。 - 输入验证码,或用
adb shell am start -a android.intent.action.VIEW -d加链接在应用中打开链接,让你的 App Link 或自定义 scheme 处理它。 - 截图并检查屏幕是否显示账号已验证。
adb shell input text 要求空格写成 %s,部分字符需要转义,所以请让智能体在输入后检查每个字段,尤其是密码。
Android Studio 的 Gemini 智能体
Section titled “Android Studio 的 Gemini 智能体”Android Studio 的智能体模式可以使用远程 MCP 服务器(Google 的指南)。在 Settings → Tools → AI → MCP Servers 中选择 Enable MCP Servers 并添加:
{ "mcpServers": { "proxymail-qa": { "httpUrl": "https://api.proxymail.qa/mcp" } }}选择 Start Login,在浏览器中登录。Android Studio 不支持 MCP 提示词模板,所以请直接用文字提问,不要选择 test_signup_flow 这类提示词。我们还没有亲自测试过 Android Studio 的智能体;如果登录无法完成,请改用 Claude Code 或 Codex 配合 Android Studio。
还可以让它做什么
Section titled “还可以让它做什么”- 你电脑上的开发服务器。 模拟器通过
10.0.2.2访问你的电脑,所以开发版中指向10.0.2.2:3000的链接是正常的。让智能体把它标记为开发环境(mark_dev_host),check_email就会让这些链接通过,而不是判为失败。 - App Links。 链接到达后,将
expect_host设为你的 App Link 域名并调用check_email,可以检查链接是否指向那里;count_emails能发现误发的第二封邮件。如果链接打开的是 Chrome 而不是应用,通常是域名的assetlinks.json或应用的 intent filter 有问题。 - 分成多个格子的验证码。 智能体点击第一个格子并输入完整验证码,然后检查每一位都已填入再继续。
- 更长的注册表单。 对于有规则的用户名、出生日期或国家,
form_values会根据为它新建的地址为每个字段提供一个值。 - 下次使用同一个账号。 让智能体在创建账号时记录账号的使用位置(
environment,例如staging,以及android这样的标签),这样list_addresses就能再次找到它。如果 API 密钥 允许读取已保存的密码,get_sign_in一次调用即可返回账号及其密码。 - 报告。 智能体先调用
start_run,最后调用finish_run,后者以 Markdown 格式返回报告。
优惠和营销邮件
Section titled “优惠和营销邮件”- 优惠券。 在应用中报名优惠后,用
kind: coupon调用wait_for_code,会返回优惠券及其折扣、截止日期和到达用时。智能体把它输入应用的优惠码字段。 - 结账,只用测试支付。 使用 Google Play 的许可测试人员和测试卡,或应用自己的测试模式,绝不使用真实银行卡或进行真实购买。智能体用
record_coupon_result记录应用的行为。 - 以链接形式提供、会打开应用的优惠券,例如
myapp://redeem?code=…:用app: true调用wait_for_link可返回它,智能体用adb shell am start -a android.intent.action.VIEW -d加链接打开它。 - 每人限一次优惠。 用同一地址的变体(
get_address_variants)再次注册,然后调用check_offers,可以看出应用是否发了两次优惠。 - 特殊的名字和密码。
get_name_variants和get_password_variants为表单的其他字段提供值(撇号、重音、其他文字、各类符号、字段长度上限);智能体逐一输入并报告应用的行为。 - 同意和退订。 智能体用
record_consent记录注册时的选择,从应用设置或邮件链接退订,调用mark_unsubscribed,之后用check_unsubscribe列出退订后收到的营销邮件。
要把这项检查保留为在 CI 中运行的 UI 测试,请参阅 Android(Espresso);如果流程还要覆盖 iOS,请参阅 Maestro。
对本页有疑问?
可以用任何语言提问。文档可以立即回答,你也可以把问题发给 Proxy Mail QA 团队,他们会用英文回复。