iOS模拟器自动化测试Skill xcode-test

这个技能用于自动化在Xcode模拟器上构建、安装和测试iOS应用,包括捕获截图、日志和验证应用行为,支持人工验证外部流程。关键词:Xcode, iOS测试, 模拟器测试, 自动化测试, 日志捕获, 截图验证, XcodeBuildMCP, 移动应用QA。

测试 0 次安装 0 次浏览 更新于 3/8/2026

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. 询问用户如何继续:

    **测试失败:[屏幕/功能]**
    
    问题:[描述]
    日志:[相关错误消息]
    
    如何继续?
    1. 立即修复 - 我将帮助调试和修复
    2. 创建待办事项 - 添加到待办事项以供后续处理
    3. 跳过 - 继续测试其他屏幕
    
  3. 如果选择“立即修复”:

    • 调查代码中的问题
    • 提出修复方案
    • 重新构建并重新测试
  4. 如果选择“创建待办事项”:

    • 创建{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测试。构建、在模拟器上安装、测试关键屏幕、检查崩溃。")