SuperAPI AI 工具集

xcode-test

测试与质量

查看项目

更新于 10-16 02:24

技能介绍

用途

xcode-test 是一个 iOS QA 技能,专门用于在模拟器上测试 iOS/macOS 应用。它通过 XcodeBuildMCP 完成从构建到界面验证的完整流程,适合在开发或审查 iOS 代码时快速执行模拟器测试。

参数

  • scheme 名称:指定要测试的 scheme
  • 'current':使用默认或最近使用的 scheme

主要能力

该命令通过以下方式测试 iOS/macOS 应用:

  • 为模拟器构建应用
  • 安装并启动应用
  • 截取关键界面的截图
  • 捕获控制台日志以发现错误
  • 支持需要人工介入的外部流程验证

前置条件

需先安装 XcodeBuildMCP 服务器,安装命令为:

claude mcp add XcodeBuildMCP -- npx xcodebuildmcp@latest

执行流程

0. 验证 XcodeBuildMCP 是否安装

首先检查 XcodeBuildMCP 工具是否可用,尝试调用:

mcp__xcodebuildmcp__list_simulators({})

如果工具未找到或报错,应提示用户安装 XcodeBuildMCP,并重启 Claude Code 后重新运行 /xcode-test。在确认 XcodeBuildMCP 正常工作之前不得继续。

1. 发现项目与 scheme

查找可用项目:

mcp__xcodebuildmcp__discover_projs({})

列出项目的 scheme:

mcp__xcodebuildmcp__list_schemes({ project_path: "/path/to/Project.xcodeproj" })

如果提供了参数:使用指定的 scheme 名称,或使用 "current" 以使用默认/最近使用的 scheme。

2. 启动模拟器

列出可用模拟器:

mcp__xcodebuildmcp__list_simulators({})

启动首选模拟器(推荐 iPhone 15 Pro):

mcp__xcodebuildmcp__boot_simulator({ simulator_id: "[uuid]" })

等待模拟器就绪:在继续安装前检查模拟器状态。

3. 构建应用

为 iOS 模拟器构建:

mcp__xcodebuildmcp__build_ios_sim_app({
  project_path: "/path/to/Project.xcodeproj",
  scheme: "[scheme_name]"
})

处理构建失败:捕获构建错误、为每个构建错误创建 P1 待办、向用户报告具体错误详情。

构建成功时:记录构建产物路径用于安装,进入安装步骤。

4. 安装与启动

在模拟器上安装应用:

mcp__xcodebuildmcp__install_app_on_simulator({
  app_path: "/path/to/built/App.app",
  simulator_id: "[uuid]"
})

启动应用:

mcp__xcodebuildmcp__launch_app_on_simulator({
  bundle_id: "[app.bundle.id]",
  simulator_id: "[uuid]"
})

开始捕获日志:

mcp__xcodebuildmcp__capture_sim_logs({
  simulator_id: "[uuid]",
  bundle_id: "[app.bundle.id]"
})

5. 测试关键界面

对应用中的每个关键界面:

截取截图:

mcp__xcodebuildmcp__take_screenshot({
  simulator_id: "[uuid]",
  filename: "screen-[name].png"
})

检查截图内容:UI 元素是否正确渲染、是否可见错误信息、预期内容是否显示、布局是否正确。

检查日志错误:

mcp__xcodebuildmcp__get_sim_logs({ simulator_id: "[uuid]" })

关注:崩溃、异常、错误级别日志信息、失败的网路请求。

6. 人工验证(必要时)

当测试涉及以下流程时,暂停等待人工输入:

流程类型 需要询问的内容
Sign in with Apple "请在模拟器上完成 Sign in with Apple"
推送通知 "发送一条测试推送并确认其出现"
应用内购买 "完成一次沙盒购买"
相机/照片 "授予权限并验证相机可用"
定位 "允许定位访问并验证地图更新"

使用 AskUserQuestion 询问用户是否工作正常:

需要人工验证

此测试需要 [flow type]。请:

  1. [在模拟器上执行的操作]
  2. [需要验证的内容]

是否工作正常?

  1. 是 - 继续测试
  2. 否 - 描述问题

7. 处理失败

当测试失败时:

记录失败:截取错误状态截图、捕获控制台日志、记录复现步骤。

询问用户如何继续:

测试失败:[screen/feature]

问题:[description] 日志:[relevant error messages]

如何继续?

  1. 立即修复 - 帮助调试并修复
  2. 创建待办 - 添加到 todos/ 供后续处理
  3. 跳过 - 继续测试其他界面

如果选择 "立即修复":调查代码中的问题、提出修复方案、重新构建并重测。

如果选择 "创建待办":创建 {id}-pending-p1-xcode-{description}.md,然后继续测试。

8. 测试摘要

所有测试完成后,展示摘要:

📱 Xcode Test Results

Project: [project name] Scheme: [scheme name] Simulator: [simulator name]

Build: ✅ Success / ❌ Failed

Screens Tested: [count]

Screen Status Notes
Launch ✅ Pass
Home ✅ Pass
Settings ❌ Fail Crash on tap
Profile ⏭️ Skip Requires login

Console Errors: [count]

  • [List any errors found]

Human Verifications: [count]

  • Sign in with Apple: ✅ Confirmed
  • Push notifications: ✅ Confirmed

Failures: [count]

  • Settings screen - crash on navigation

Created Todos: [count]

  • 006-pending-p1-xcode-settings-crash.md

Result: [PASS / FAIL / PARTIAL]

9. 清理

测试完成后:

停止日志捕获:

mcp__xcodebuildmcp__stop_log_capture({ simulator_id: "[uuid]" })

可选关闭模拟器:

mcp__xcodebuildmcp__shutdown_simulator({ simulator_id: "[uuid]" })

快速使用示例

# 使用默认 scheme 测试
/xcode-test

# 测试指定 scheme
/xcode-test MyApp-Debug

# 修改后测试
/xcode-test current

与 /workflows:review 集成

在审查涉及 iOS 代码的 PR 时,/workflows:review 命令可以将此命令作为子代理启动:

Task general-purpose("Run /xcode-test for scheme [name]. Build, install on simulator, test key screens, check for crashes.")

适用场景

  • 为 iOS/macOS 应用在模拟器上执行构建与界面测试
  • 在提交或审查 iOS 代码变更后进行模拟器回归验证
  • 需要截取关键界面截图、检查控制台崩溃与错误日志的 QA 流程
  • 涉及登录、推送、内购、相机、定位等需人工配合的流程验证

限制

  • 依赖 XcodeBuildMCP,必须先安装并确认可用,否则不得继续
  • 部分流程(Sign in with Apple、推送、内购、相机/照片、定位等)需要人工验证,无法完全自动化
  • 其他未在资料中说明的限制暂未提供