用途
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]。请:
- [在模拟器上执行的操作]
- [需要验证的内容]
是否工作正常?
- 是 - 继续测试
- 否 - 描述问题
7. 处理失败
当测试失败时:
记录失败:截取错误状态截图、捕获控制台日志、记录复现步骤。
询问用户如何继续:
测试失败:[screen/feature]
问题:[description] 日志:[relevant error messages]
如何继续?
- 立即修复 - 帮助调试并修复
- 创建待办 - 添加到 todos/ 供后续处理
- 跳过 - 继续测试其他界面
如果选择 "立即修复":调查代码中的问题、提出修复方案、重新构建并重测。
如果选择 "创建待办":创建 {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、推送、内购、相机/照片、定位等)需要人工验证,无法完全自动化
- 其他未在资料中说明的限制暂未提供