name: xcode测试 描述: 使用XcodeBuildMCP在模拟器上构建和测试iOS应用
参数
[方案名称或’current’使用默认]
Xcode测试命令
<command_purpose>使用XcodeBuildMCP构建、安装和测试iOS应用在模拟器上。捕获截图、日志并验证应用行为。</command_purpose>
简介
<role>专注于模拟器测试的iOS QA工程师</role>
此命令通过以下方式测试iOS/macOS应用:
- 为模拟器构建
- 安装和启动应用
- 关键屏幕截图
- 捕获控制台日志以查找错误
- 支持人工验证外部流程
先决条件
<requirements>
- 安装Xcode并带有命令行工具
- 连接XcodeBuildMCP服务器
- 有效的Xcode项目或工作区
- 至少一个iOS模拟器可用 </requirements>
主要任务
0. 验证XcodeBuildMCP是否已安装
<check_mcp_installed>
首先,检查XcodeBuildMCP工具是否可用。
尝试调用:
mcp__xcodebuildmcp__list_simulators({})
如果工具未找到或出错:
告诉用户:
**XcodeBuildMCP未安装**
请先安装XcodeBuildMCP服务器:
\`\`\`bash
claude mcp add XcodeBuildMCP -- npx xcodebuildmcp@latest
\`\`\`
然后重新启动Claude Code并再次运行`/xcode-test`。
不要继续,直到确认XcodeBuildMCP正常工作。
</check_mcp_installed>
1. 发现项目和方案
<discover_project>
查找可用项目:
mcp__xcodebuildmcp__discover_projs({})
列出项目的方案:
mcp__xcodebuildmcp__list_schemes({ project_path: "/路径/to/Project.xcodeproj" })
如果提供参数:
- 使用指定的方案名称
- 或“current”以使用默认/最后使用的方案
</discover_project>
2. 启动模拟器
<boot_simulator>
列出可用模拟器:
mcp__xcodebuildmcp__list_simulators({})
启动首选模拟器(推荐iPhone 15 Pro):
mcp__xcodebuildmcp__boot_simulator({ simulator_id: "[uuid]" })
等待模拟器准备就绪: 在继续安装之前检查模拟器状态。
</boot_simulator>
3. 构建应用
<build_app>
为iOS模拟器构建:
mcp__xcodebuildmcp__build_ios_sim_app({
project_path: "/路径/to/Project.xcodeproj",
scheme: "[scheme_name]"
})
处理构建失败:
- 捕获构建错误
- 为每个构建错误创建P1待办事项
- 向用户报告具体错误详情
成功时:
- 记下构建的应用路径以供安装
- 继续安装步骤
</build_app>
4. 安装和启动
<install_launch>
在模拟器上安装应用:
mcp__xcodebuildmcp__install_app_on_simulator({
app_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]"
})
</install_launch>
5. 测试关键屏幕
<test_screens>
对于应用中的每个关键屏幕:
截图:
mcp__xcodebuildmcp__take_screenshot({
simulator_id: "[uuid]",
filename: "screen-[name].png"
})
检查截图以验证:
- UI元素正确渲染
- 无错误消息可见
- 预期内容显示
- 布局正确
检查日志错误:
mcp__xcodebuildmcp__get_sim_logs({ simulator_id: "[uuid]" })
查找:
- 崩溃
- 异常
- 错误级别日志消息
- 失败的网络请求
</test_screens>
6. 人工验证(当需要时)
<human_verification>
在测试涉及以下流程时暂停以供人工输入:
| 流程类型 | 需要询问的内容 |
|---|---|
| 使用Apple登录 | “请在模拟器上完成使用Apple登录” |
| 推送通知 | “发送测试推送并确认其出现” |
| 应用内购买 | “完成沙盒购买” |
| 相机/照片 | “授予权限并验证相机工作” |
| 位置 | “允许位置访问并验证地图更新” |
使用AskUserQuestion:
**需要人工验证**
此测试需要[流程类型]。请:
1. [在模拟器上执行的操作]
2. [需要验证的内容]
是否正常工作?
1. 是 - 继续测试
2. 否 - 描述问题
</human_verification>
7. 处理失败
<failure_handling>
当测试失败时:
-
记录失败:
- 截图错误状态
- 捕获控制台日志
- 记录重现步骤
-
询问用户如何继续:
**测试失败:[屏幕/功能]** 问题:[描述] 日志:[相关错误消息] 如何继续? 1. 立即修复 - 我将帮助调试和修复 2. 创建待办事项 - 添加到待办事项以供后续处理 3. 跳过 - 继续测试其他屏幕 -
如果选择“立即修复”:
- 调查代码中的问题
- 提出修复方案
- 重新构建并重新测试
-
如果选择“创建待办事项”:
- 创建
{id}-pending-p1-xcode-{description}.md - 继续测试
- 创建
</failure_handling>
8. 测试总结
<test_summary>
所有测试完成后,呈现总结:
## 📱 Xcode测试结果
**项目:** [项目名称]
**方案:** [方案名称]
**模拟器:** [模拟器名称]
### 构建:✅ 成功 / ❌ 失败
### 测试屏幕数:[数量]
| 屏幕 | 状态 | 备注 |
|--------|--------|-------|
| 启动 | ✅ 通过 | |
| 主页 | ✅ 通过 | |
| 设置 | ❌ 失败 | 点击时崩溃 |
| 个人资料 | ⏭️ 跳过 | 需要登录 |
### 控制台错误:[数量]
- [列出发现的任何错误]
### 人工验证:[数量]
- 使用Apple登录:✅ 已确认
- 推送通知:✅ 已确认
### 失败:[数量]
- 设置屏幕 - 导航时崩溃
### 创建的待办事项:[数量]
- `006-pending-p1-xcode-settings-crash.md`
### 结果:[通过 / 失败 / 部分通过]
</test_summary>
9. 清理
<cleanup>
测试后:
停止日志捕获:
mcp__xcodebuildmcp__stop_log_capture({ simulator_id: "[uuid]" })
可选关闭模拟器:
mcp__xcodebuildmcp__shutdown_simulator({ simulator_id: "[uuid]" })
</cleanup>
快速使用示例
# 使用默认方案测试
/xcode测试
# 测试特定方案
/xcode测试 MyApp-Debug
# 更改后测试
/xcode测试 current
与 /workflows:review 集成
当审查涉及iOS代码的PR时,/workflows:review命令可以将其作为子代理生成:
Task general-purpose("为方案[name]运行/xcode测试。构建、在模拟器上安装、测试关键屏幕、检查崩溃。")