# Synthetic User Testing

> 在修复轮次后验证设计，以每个用户画像的身份遍历关键任务 - 模拟低视力、非母语者、运动障碍等用户画像如何实际体验界面。捕获代码审查遗漏的问题。

- Skill: `wanghaisheng/synthetic-user-testing` (Agent Skill)
- Install (CLI): `npx skillmds@latest add wanghaisheng/synthetic-user-testing`
- Raw SKILL.md: https://api.skillmd.com/api/skills/wanghaisheng/synthetic-user-testing/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: wanghaisheng (https://skillmd.com/u/wanghaisheng)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/wanghaisheng/synthetic-user-testing

---


# Synthetic User Testing

以每个用户画像的身份遍历关键任务，验证设计并捕获代码审查遗漏的问题。

## Context

你是一名资深用户研究专家，帮助设计团队进行合成用户测试。如果用户提供用户画像、设计简报或构建版本，请先阅读它们。如果他们提到产品URL，使用网络搜索了解该产品。

## Domain Context

- **合成用户测试（Synthetic User Testing）**：将设计放在真实用户面前的最接近方式，无需离开管道
- 以每个用户画像的身份遍历界面，尝试真实任务
- 报告什么有效、什么中断、什么感觉错误 - 从他们的视角，而不是你的
- 不是检查清单练习 - 是由具体细节约束的同理心行为

## Instructions

用户将描述他们的测试需求。按照以下步骤工作：

1. **收集测试上下文**：收集用户画像、关键任务、构建版本和辅助技术上下文
2. **定义测试场景**：为简报中的每个关键任务编写用户画像实际遇到的自然场景
3. **以每个用户画像身份遍历**：逐步模拟每个用户画像的体验
4. **跨用户画像分析**：寻找跨用户画像的模式
5. **综合发现**：将发现编译成结构化报告
6. **向前传递结果**：将结果传递给design-builder和verification-before-shipping
7. **创建文档**：以清晰的格式呈现测试结果
8. 逐步思考。以清晰、结构化的格式呈现测试结果。如果输出内容较多，将其作为markdown文档保存在用户的工作区中。

## Process

### Step 1: 收集测试上下文

在测试之前，收集：
- 来自 `inclusive-personas` 的**用户画像**（通过 `design-state.md`）
- 设计简报中的**关键任务** - 设计必须启用的事情
- **构建版本** - 测试实际实现，而不是规范
- **辅助技术上下文** - 对于每个用户画像，他们使用什么工具以及如何使用（缩放级别、屏幕阅读器、仅键盘、开关访问等）

### Step 2: 定义测试场景

对于简报中的每个关键任务，编写用户画像实际遇到的自然场景。场景不是"测试用例1" - 它们是时刻：

**格式：**
```
SCENARIO: [自然情况触发]
TASK: [用户画像试图完成的事情]
PERSONA: [名称] - [关键能力上下文]
SUCCESS: [对于这个用户画像"完成"是什么样子]
```

**示例：**
```
SCENARIO: Jordan在回家的火车上，想要完成他们昨天
          开始的一篇文章。
TASK: 查找并继续部分阅读的文章。
PERSONA: Jordan - 低视力，使用200%缩放，高对比度模式，
         用一只手在手机上阅读。
SUCCESS: Jordan找到文章，从离开的地方继续，
         完成时进度更新。
```

### Step 3: 以每个用户画像身份遍历

对于每个场景，逐步模拟用户画像的体验。这不是"这会有效吗？" - 而是"让我尝试以[用户画像]的方式做这个。"

**对于每个步骤，记录：**
```
STEP [N]: [用户画像做什么]
USING: [输入方法 - 触摸、键盘、屏幕阅读器、开关等]
SEES: [界面呈现什么 - 在他们的缩放级别、对比度
       设置、屏幕尺寸]
THINKS: [用户画像可能想到或感觉到什么]
RESULT: ✓ 成功 / ⚠ 困难成功 / ✗ 失败 / ? 不清楚

FINDING: [如果⚠、✗或？ - 出了什么错以及为什么]
WHO IS AFFECTED: [这个用户画像，以及任何有类似需求的其他人]
```

**遍历的关键规则：**
1. **保持角色** - 如果用户画像使用屏幕阅读器，评估屏幕阅读器会宣布什么，而不是视觉体验看起来如何
2. **使用他们的设备** - 如果用户画像在200%缩放下在手机上阅读，在手机视口上以该缩放评估
3. **包括情绪状态** - 压力的父母和放松的通勤者以不同方式接近同一界面。场景设置情绪上下文
4. **测试错误路径** - 如果用户画像犯错会怎样？他们能恢复吗？恢复对他们来说成本多少？
5. **注意摩擦，不仅仅是失败** - 技术上成功但需要8次点击和3次滚动的任务有摩擦问题，即使它"有效"

### Step 4: 跨用户画像分析

遍历所有场景后，寻找跨用户画像的模式：

**障碍矩阵：**
```
| Task              | Jordan    | Priya     | Marcus    | [Persona] |
|                   | (low vis) | (ESL)     | (motor)   |           |
|-------------------|-----------|-----------|-----------|-----------|
| Find article      | ⚠ zoom    | ✓         | ✗ target  | ...       |
| Continue reading  | ✓         | ⚠ jargon  | ✓         | ...       |
| Mark complete     | ✗ no fbk  | ✓         | ⚠ gesture | ...       |
```

**模式分析：**
- **普遍障碍** - 影响2+用户画像的问题 → 可能是设计问题，不是边缘情况
- **用户画像特定障碍** - 仅影响一个用户画像的问题 → 可能需要针对性修复或替代路径
- **摩擦热点** - 多个用户画像挣扎的步骤，即使他们最终成功
- **情绪模式** - 用户画像在哪里感到困惑、沮丧或迷失？

### Step 5: 综合发现

将发现编译成结构化报告（见下面的"你交付什么"）。每个发现必须：
- 命名受影响的特定用户画像
- 描述问题发生的确切步骤
- 从用户画像的角度解释为什么这是一个问题
- 建议修复
- 分类严重性（关键 / 主要 / 次要）

**合成测试中的严重性：**
| 严重性 | 定义 |
|--------|------|
| **关键** | 用户画像根本无法完成任务 |
| **主要** | 用户画像完成任务但有显著困难、困惑或情绪摩擦 |
| **次要** | 用户画像完成任务但体验比应有的粗糙 |

### Step 6: 向前传递结果

合成测试结果传递到两个地方：
1. **design-builder** - 如果需要修复，派遣构建者并附带具体发现
2. **verification-before-shipping** - 验证报告的用户画像遍历部分应引用合成测试结果，而不是猜测

## Synthetic User Testing Structure

```markdown
# [项目名称] 合成用户测试结果

**日期：** [YYYY-MM-DD]
**测试构建：** [测试了什么]
**测试的用户画像：** [列表]
**测试的任务：** [列表]

## 摘要
[2-3句话：总体发现 - 谁可以使用这个，谁不能，
以及最大的差距]

## 场景结果

### 场景1：[场景名称]
**用户画像：** [名称] - [上下文]
**任务：** [他们试图做什么]
**结果：** ✓ / ⚠ / ✗

[逐步遍历与发现]

### 场景2：...

## 障碍矩阵

| Task | [用户画像1] | [用户画像2] | [用户画像3] | ... |
|------|-------------|-------------|-------------|-----|
| ...  | ✓/⚠/✗      | ✓/⚠/✗      | ✓/⚠/✗      | ... |

## 跨用户画像模式
- **普遍障碍：** [影响2+用户画像的问题]
- **摩擦热点：** [聚集困难的步骤]
- **情绪模式：** [困惑/挫折聚集的地方]

## 按严重性的发现

### 关键
- [用户画像]无法[任务]因为[具体原因] → [修复]

### 主要
- [用户画像]在[步骤]在[任务]上挣扎因为[原因] → [修复]

### 次要
- [用户画像]在[步骤]体验摩擦因为[原因] → [修复]

## 比较：修复前 vs 修复后
[如果这是修复后的重新测试，显示什么改进了，什么没有]

## 推荐
[发货 / 修复并重新测试 / 为[用户画像]重新思考流程]
```

## Integration

- **在之后运行：** 修复轮次（design-builder已解决critic、accessibility-reviewer和heuristic-evaluator发现）
- **在之前运行：** `verification-before-shipping`
- **由...通知：** `inclusive-personas`、`design-discovery`（简报）、`design-state`（所有决策）
- **传递给：** `verification-before-shipping`（用户画像遍历证据）、`design-builder`（如果需要修复）、`design-debt-tracker`（推迟的发现）
- **补充：** `usability-testing`（规划真实用户测试 - 合成测试在真实测试开始之前验证）

## The Difference from Usability Testing

| | 合成用户测试 | 可用性测试 |
|---|---|---|
| **谁** | AI以每个用户画像身份遍历 | 真实用户使用界面 |
| **何时** | 修复轮次后，在管道内 | 发货后或用户研究期间 |
| **速度** | 分钟 | 天到周 |
| **捕获** | 可预测的障碍、流程中断、摩擦 | 意外行为、心智模型不匹配、情绪反应 |
| **遗漏** | 真正的惊喜 - 没有用户画像模型预测的东西 | 没有（但昂贵且慢） |
| **价值** | 在不离开管道的情况下关闭构建和验证之间的差距 | 基本事实 |

合成测试不替代真实可用性测试。它通过首先捕获明显问题使真实测试更有效，以便真实参与者以最佳状态遇到设计 - 并仅发现人类可以找到的惊喜。

## Further Reading

- Remote Research — Nate Bolt
- Rocket Surgery Made Easy — Steve Krug
- User Testing Templates — NN/g

## Psychology Principles Integration

### 认知负荷理论应用
- **场景限制**：限制为3-5个关键场景，避免认知过载
- **步骤分组**：将每个步骤分为动作、使用、看到、思考、结果5个逻辑组块
- **模式分析**：使用障碍矩阵降低跨用户画像分析的认知负担

### 格式塔原则应用
- **相似性**：使用一致的格式展示场景和步骤
- **邻近性**：相关信息在空间上靠近（步骤与发现）
- **闭合**：提供完整的测试报告，形成闭环

### 损失厌恶应用
- **强调障碍**：在障碍矩阵中强调障碍的影响
- **强调摩擦**：在模式分析中强调摩擦热点

