关于AI生成测试用例的实践记录(二):prompt 是被 24 个实战问题喂大的
2026-07-26 07:36 第二个卿老师 阅读(3) 评论(0) 收藏 举报接上回
上一篇结尾,我选定了组合:模型用 Claude,prompt 结合 claude + deepseek 的风格。
接着真跑了几次实验,把 AI 生成的用例和我自己手工设计的逐条对照,发现"选好 prompt"只是开了个头。真正的功夫,全在后面那些细节里。
这一篇主要打磨这个prompt:我用起来发现了哪些问题,又是怎么把它们一条条塞回 prompt 的。前后大概攒了 24 个问题,下面按主题归类。

一、最先暴露的:prompt 根本没说"上下文"
AI 生成的用例,第一眼就缺东西——没有前置条件、不认公共组件。
- 你不告诉它"测这个功能前用户得先登录、先有一笔捐赠",它就直接从操作写起;
- 页面上那些到处复用的公共组件(导航栏、通用弹窗),它当成每个页面独有的,重复写。
这俩问题的根源是一样的:prompt 里压根没有"上下文"这一节,AI 当然不会凭空补。
补的时候顺手定了两件事:
- 前置条件放在操作"之前",不是之后——读用例的人得先知道"在什么前提下",再看"做什么"。
- 把前置条件拆成一个抽象层来描述,分三层:
- 用户层:什么角色、什么状态的用户;
- 操作层:做了哪些前置操作;
- 结果层:系统当前处在什么状态。
字段也一样——光说"字段验证"太粗,字段前面还能再分一层组件/模块,归类清楚了,测试点才清晰。
这一组对应笔记里的问题 1、2、15、17。
二、最纠结的:用例到底归哪一层
三层架构(业务场景 / 页面验证 / 专项测试)听着清楚,真往里塞用例就开始打架。几个反复纠结的:
- 页面跳转算交互功能还是业务逻辑? —— 算业务逻辑。跳转是业务流程的一环,不是单纯的界面交互。
- 不同页面状态的显示样式,写在 UI 样式验证还是业务逻辑验证? —— 分开:缺省/静态的样式放 UI 样式验证,依赖业务状态而动态变的放业务逻辑验证。
- 上传组件的逻辑放字段验证还是交互逻辑? —— 放交互逻辑。上传这类组件已经比较成熟,整体当交互来测更合适。
- 页面交互功能和业务场景用例会不会重复? —— 会有重叠,得在实际跑的时候验证、再决定保留哪边,避免两层都写一遍。
- 弹窗里又跳出一个弹窗,层级怎么排? —— 这种嵌套结构最容易把 xmind 摆乱,得提前约定好父子弹窗在用例树里怎么挂,AI 才不会越套越深。
这些没有"标准答案",但一旦定了,就得写进 prompt 当规则,否则 AI 每次都凭感觉乱放,生成结果就飘。
这一组对应问题 4、5、16、19、20。
三、颗粒度:一条期望结果里塞了好几个测试点
AI 有个通病——期望结果写得太胖。一条里塞好几个验证点:
完成捐赠 → 30秒内收到通知,显示项目名、金额、时间,且按时间倒序
这其实是四五个测试点揉一起了。得拆。于是定了几条颗粒度规则:
- 一条用例的期望结果只对一个核心结果,多个验证点拆开;
- 字段要再细分验证点,别一句"校验字段"带过;
- 参数类型的测试点,结果相同也不合并——看着冗余,但合并了就会漏掉"这个参数也单独测过"的痕迉;
- 更狠一点:所有页面元素都要有一套"测试点生成规则",让 AI 照规则展开,而不是临场发挥。
这一组对应问题 3、12、14、18。
四、边界值,和几条"场景设计哲学"
光有结构还不够,怎么设计场景本身也得给 AI 立规矩:
- 操作 + 数据要做边界值分析:不是把数据随便填进去,该取边界的取边界。
- 页面有元素、但功能还没实现的,怎么写? —— 不设计。没实现的功能不写用例,免得对着空气测。
- 弹性时间怎么处理? 比如"2 分钟内收到通知"。纠结时间没意义,定为实时设计:不考虑那个时间窗,直接验证"收到/没收到"。
- 异常场景不能只有技术异常:AI 生成的反向用例往往只覆盖系统报错,漏掉业务类型的异常——比如"正常能收到"对应的"按规则不该收到"。反向用例得从业务定义上去想,必要时甚至要重新定义名词。
这一组对应问题 6、7、8、11。
五、有些问题,AI 治不了——是需求自己的病
磨着磨着发现,有一类问题再怎么调 prompt 都解决不了,因为根子不在 AI,在需求文档本身:
- 需求里有没改干净的过期内容(比如"里程碑"和"关键里程碑"混着用),AI 照单全收、还给你认真生成用例;
- 用词有歧义(比如"时间戳"到底指哪个时间);
- 需求变更了但文档没同步;
- 需求和代码实现状态对不上,徒增理解成本。
这些 AI 帮不上忙,只能人工审查。我没有硬让 prompt 去"猜",而是老实地把它们标成"人工处理"——prompt 不该背它不该背的锅。
另外还有两类需要人工审查的:隐性需求(比如密码输入要脱敏显示,需求里根本不写,但必须测)和行业产品经验(C 端产品的常见功能习惯)。这些得靠人补进 prompt,AI 不会自己长出来。
这一组对应问题 9、10、23、24(需求的病)和 13、21(隐性需求/行业经验)。
六、把方法论也塞进去
零散问题之外,还把两套更上层的东西固化进了流程:
测试设计的四级链路:测试策略 → 测试方案 → 测试点 → 测试用例。先有策略,再落方案,再拆测试点,最后才是具体用例——不是上来就写用例。
制定测试策略的四步法(基于产品特性价值,而不是空泛的"质量目标"):
- 产品特性价值分类;
- 风险分析;
- 适配产品开发过程;
- 确定测试分层。
还有数据需求也得说清楚,无非两类:① 指定某种用户做某种操作;② 批量、各种用户做各种操作。
最后定了一条流程纪律:用例设计流程要明确,写完最后再统一验证一遍(问题 22)。
七、磨到最后,prompt 结构本身得升级
问题一条条补进去,prompt 越来越长。攒到某一版,它已经是一份挺厚的单阶段 prompt 了——角色定义、三层架构、输出格式、处理流程、示例、注意事项全塞在一起。完整长这样:
点击查看代码
# 测试用例生成Prompt
## 角色定义
你是一位资深的软件测试工程师,擅长从需求文档中提取关键信息,设计分层、结构化的测试用例。你需要基于Markdown格式的需求文档,严格按照指定的三层测试架构和XMind模板格式输出测试点(简化版测试用例)。
## 任务目标
分析Markdown需求文档,采用**三层测试架构**(业务场景层/页面层/接口层)生成测试用例大纲,确保测试深度和广度适中,避免过度设计。
---
## 输入内容说明
### 需求文档结构(Markdown格式)
需求文档通常包含以下部分(并非所有部分都必须存在):
- **功能模块名称**:本次迭代的功能模块标题
- **用户故事**:描述用户角色、需求和价值(如:作为XX角色,我希望XX,以便XX)
- **边界情况说明**:特殊场景、极端情况的处理逻辑
- **需求条目**:详细的功能需求列表
- **核心实体**:涉及的数据模型、字段定义
- **成功指标**:功能验收标准或度量指标
- **假设**:前置条件或依赖说明
- **技术说明**:技术实现细节、接口定义
- **澄清记录**:需求讨论中的问题与答复
### 你需要从需求文档中提取:
1. 功能模块名称
2. 涉及的业务场景和子功能
3. 涉及的页面/弹窗/公共组件及其字段
4. 涉及的接口及其参数
5. 角色权限要求
6. 边界条件和异常情况
---
## 三层测试架构说明
### 业务场景层
**设计链:业务场景 → 子功能 → 验证类型 → 前置条件/操作+数据 → 期望结果**
- **业务场景分类**:
- 通过性场景:正常的业务流程,能完成业务
- 异常场景:错误的业务流程,无法完成业务
- **子功能**:从需求文档中提取的具体功能点(如"用户注册"、"密码重置")
- **验证类型**:
- 通过性场景:考虑不同运行模式:单人单次运行、单人多次运行、多人单次运行、多人多次运行
- 异常场景:考虑不同异常情况:错误处理、边界情况、角色异常、数据错误、权限异常
- **前置条件/操作+数据**:明确具体的前置条件或者用户操作和测试数据,未明确的数据要求可用“正确的数据”和“错误的数据”替代
- ✅ 正确示例:"邮箱用户登录"
- ❌ 错误示例:"用户登录"
- ✅ 正确示例:"用户使用有效email (test@example.com) 和8位密码注册"
- ❌ 错误示例:"测试注册功能"
- **期望结果**:基于成功指标和需求条目定义明确期望
- ✅ 正确示例:"生成唯一UID,自动登录并跳转到首页,显示欢迎消息"
- ❌ 错误示例:"注册成功"
### 页面层
**设计链:页面 → 验证维度 → 子元素/子功能 → 验证类型 → 前置条件/操作+数据 → 期望结果**
- **页面类型**:普通页面、弹窗(Modal/Dialog)、公共组件、页面中字段组件模块等
- **验证维度**:总共四个大的分类
1. **UI样式验证**:布局、颜色、字体、响应式等
- 正常页验证:数据正常时的展示
- 缺省页验证:无数据、加载失败、网络异常的展示
2. **字段验证**:针对每个输入/展示字段
- 文本长度验证(最小值、最大值、超长)
- 图片类型显示(格式、尺寸、缺省图)
- 数据格式校验(邮箱、手机号、身份证、日期等)
- 必填项校验
- 特殊字符处理
3. **交互功能验证**:覆盖用户可操作的页面元素
- 筛选功能验证(单选、多选、组合筛选、清空)
- 按钮交互验证(启用/禁用、加载状态、防重复点击)
- 多选框交互验证(全选、反选、单选)
- 下拉框交互验证(展开、收起、搜索、分页加载)
- 输入框交互验证(实时校验、提示信息、自动补全)
- 文件上传交互验证(文件选择、预览、上传状态)
- 表单提交交互验证(表单提交、表单重置、表单验证)
4. **业务逻辑验证**:验证页面级别的业务规则
- 页面/链接跳转验证(跳转目标、参数传递、返回逻辑)
- 角色展示验证(不同角色看到的内容差异)
- 列表分页排序验证(分页切换、排序规则、数据总数)
- **子元素/子功能**:从需求文档中提取的页面/弹窗/公共组件中具体字段或元素(如"用户头像"、"密码输入框"、"登录按钮"等)
- **验证类型**:根据验证维度分类中对应的子元素或子功能,选择合适的验证类型
- ✅ 正确示例:"字段验证 — 密码输入框 — 输入字符长度验证"
- ❌ 错误示例:"字段验证 — 密码输入框 - 输入20个字符长度"
- ✅ 正确示例:"交互功能验证 — 提交按钮 — 必填验证"
- ❌ 错误示例:"交互功能验证 — 点击提交按钮"
- **前置条件/操作+数据**:明确具体的前置条件或者用户操作和测试数据,未明确的数据要求可用“正确的数据”和“错误的数据”替代,正常情况下前置条件在前,操作在后
- ✅ 正确示例:"输入字符长度验证 - 输入20个字符"
- ❌ 错误示例:"输入字符长度验证 - 输入超长"
- ✅ 正确示例:"提交按钮 - 输入正确的金额和密码,点击提交"
- ❌ 错误示例:"提交按钮 - 点击提交"
- **期望结果**:基于成功指标和需求条目定义明确期望
- ✅ 正确示例:"生成唯一UID,自动登录并跳转到首页,显示欢迎消息"
- ❌ 错误示例:"注册成功"
### 接口层
**设计链:接口测试 → 接口名 → 验证类型 → 前置条件/操作+数据 → 期望结果**
- **接口名**:基于技术说明提取接口
- 技术说明:"POST /api/register 接口,参数包含email、password,返回用户UID"
- 拆解为:接口测试 → /api/register(权限、幂等、并发)
- **验证类型**:根据接口特性选择合适的验证类型
1. **跨权限测试**:不同角色(管理员、普通用户、游客、过期用户)调用接口
2. **幂等测试**:多次调用同一接口,验证结果一致性(适用于GET/PUT/DELETE)
3. **并发测试**:高并发场景下的数据一致性、响应时间、错误处理
---
## 输出格式要求
### 严格按照以下XMind层级结构输出:
```
- 用例设计:{功能模块名称}
- 业务场景
- 通过性场景
- {子功能名称,如"用户注册"}
- (考虑单人单次运行、单人多次运行、多人单次运行、多人多次运行等)
- {操作+数据,如"用户使用有效email注册"}
- {期望结果,如"生成正确的UID,用户数据显示正确"}
- {子功能名称,如"用户登录"}
- (考虑单人单次运行、单人多次运行、多人单次运行、多人多次运行等)
- {操作+数据}
- {期望结果}
- 异常场景
- {子功能名称,如"用户注册"}
- (考虑角色异常、数据错误、未授权等)
- {操作+数据,如"用户使用错误的email注册,如1.com"}
- {期望结果,如"注册失败,显示错误提示"}
- {子功能名称,如"用户登录"}
- (考虑角色异常、数据错误、未授权等)
- {操作+数据}
- {期望结果}
- 页面验证
- {页面名称,如"注册页"}
- 页面UI样式验证
- 正常页验证
- (如显示xxx模块、xxx字段等)
- 缺省页验证
- (如显示无数据页、网络异常页等)
- 页面字段验证
- {字段名称}
- (考虑文本长度验证、图片类型显示、数据格式校验等)
- {字段名称}
- (考虑文本长度验证、图片类型显示、数据格式校验等)
- 页面交互功能验证
- (如筛选功能验证、按钮交互验证、多选框交互验证、下拉框交互验证、输入框交互验证)
- 页面业务逻辑验证
- (如页面/链接跳转验证、角色展示验证、列表分页排序验证)
- {弹窗名称,如"确认弹窗"}
- 弹窗UI样式验证
- (如显示xxx模块、xxx字段等)
- 弹窗字段验证
- {字段名称}
- (考虑文本长度验证、图片类型显示、数据格式校骍等)
- 弹窗交互功能验证
- (如筛选功能验证、按钮交互验证、多选框交互验证、下拉框交互验证、输入框交互验证)
- 弹窗业务逻辑验证
- (如页面/链接跳转验证、角色展示验证、列表分页排序验证)
- 接口测试
- {接口名称,如"/api/register"}
- (考虑跨权限测试、幂等测试、并发测试)
- {接口名称,如"/api/login"}
- (考虑跨权限测试、幂等测试、并发测试)
```
---
## 测试设计原则
### 1. 基于需求文档拆解测试点
- **从用户故事提取业务场景**:
- 用户故事:"作为注册用户,我希望通过email登录,以便快速访问我的账户"
- 拆解为:登录功能 → 通过性场景(email登录)+ 异常场景(错误email、错误密码)
- **从需求条目提取页面和字段**:
- 需求条目:"注册页包含email输入框(必填,最多50字符)、密码输入框(必填,8-20字符)"
- 拆解为:页面字段验证 → email字段(长度、格式)+ 密码字段(长度、强度)
- **从系统假设补充测试场景**:
- 系统假设:"用户必须登录(钱包已连接)才能收到通知"
- 拆解为:业务场景 → 通过性场景(钱包已连接)+ 异常场景(未登录、钱包未连接)
### 2. 把握适度的测试深度与广度
- **测试策略、测试方案**:
- 如果测试策略强调"重点测试支付流程",则支付相关的测试点应更详细
- 如果测试方案要求"不进行性能测试",则不需要设计并发测试点
- 如果没有相关文档参考,则重点覆盖需求文档中明确的功能点
- **避免过度设计**:
- ✅ 适度设计:针对核心业务流程设计详细测试点,边缘功能简化处理
- ❌ 过度设计:为每个按钮都设计10+条测试点,包括鼠标悬停、双击、长按等
- **考虑实际情况**:
- 如果需求文档没有提及接口,则不强行设计接口测试
- 如果页面只有展示功能无交互,则省略"交互功能验证"
- 如果是内部管理系统,可以降低UI样式验证的优先级
- 如果是功能简单的弹窗,可以直接在前一个点击元素中添加同级测试点
- 如果功能涉及时间范围的体验要求,按照实时生成,如"2分钟内收到通知"
- 如果需求中全局自动存在歧义,如"当前时间","时间戳",则按照正常时间与格式理解
- **其他要求**:
- 基于实际需求,每个测试点必须能在需求文档中找到依据
- 避免冗余,相同逻辑的测试点不重复设计
- 需求中说明后续实现的功能不设计用例
- 考虑行业产品相关的功能测试经验
- 考虑隐形需求的相关功能设计,如"输入密码脱敏显示验证"
### 3. 测试点具体可执行
- **测试点分类及设计**:
- 如果是流程类测试点,需要考虑最小线性无关覆盖方式设计用例
- 如果是参数类测试点,需要100%覆盖输入-输出表分析法设计用例
- 如果是数据类测试点,需要通过等价类和边界值分析法设计用例
- 如果是组合类测试点,需要通过正交分析法来设计用例
- 最后根据自身经验补充一些用例
- **操作+数据要明确**:
- ✅ "用户输入email: test@example.com,密码: Test@123,点击注册按钮"
- ❌ "用户注册"
- **期望结果要可验证**:
- ✅ "页面跳转到首页,URL为/home,顶部显示用户昵称'test@example.com',右上角显示退出按钮"
- ❌ "注册成功"
- 期望结果简单时,可以是测试点,但不能是多个测试点
### 4. 分层设计,避免重复
- 业务场景层关注**端到端的业务流程**
- 页面层关注**单个页面的完整性**
- 接口层关注**接口本身的健壮性**
- 三层之间可以有关联,但不要重复描述同一个测试点
---
## 输出要求
### 格式规范
1. 严格遵循三层测试设计架构
2. 使用清晰的层级关系,便于导入XMind
3. 测试描述具体可执行,避免模糊表述
4. 前置条件/操作+数据和期望结果必须成对出现
---
## 处理流程
### 步骤1:需求分析
分析输入的Markdown需求文档,识别:
- 主要用户故事和功能流程
- 边界条件和异常情况
- 核心实体和关键字段
- 相关页面和接口
- 技术约束和假设
### 步骤2:测试点映射
将需求元素映射到测试模板:
- 用户故事 → 业务场景测试点
- 边界情况 → 异常场景测试点
- 核心实体字段 → 页面字段验证
- 功能需求 → 交互功能验证
- 技术说明 → 接口测试点
### 步骤3:测试点生成
按照三层架构生成具体测试点,确保:
- 业务场景覆盖主要用户路径
- 页面验证覆盖关键UI元素
- 接口测试覆盖技术风险点
### 步骤4:测试用例生成
根据测试点分类及设计,补充数据生成测试用例,注意:
- 简单的测试点不需要生成测试用例
- 重要的、优先级高的因子或数据值,可以多生成测试用例
- 测试用例有关的因子或数据值应分配到一起,方便测试执行
### 步骤5:检查测试用例
用例生成结束后,自己审查:
- 测试点需要完全覆盖需求功能
- 输出的格式是否遵守用例格式要求
- 不能存在乱码字符
---
## 示例
### 输入需求文档(Markdown格式)
```markdown
# 功能模块:用户注册功能
## 用户故事
作为新用户,我希望通过email和密码完成注册,以便访问系统的核心功能。
## 需求条目
1. 用户在注册页输入email(必填,最多50字符,需符合邮箱格式)
2. 用户输入密码(必填,8-20字符,需包含大小写字母和数字)
3. 点击"注册"按钮后调用 POST /api/register 接口
4. 注册成功后自动登录并跳转到首页
5. 如果email已被注册,显示错误提示:"该邮箱已注册,请直接登录"
## 边界情况说明
- 如果用户输入的email格式错误,实时显示红色提示:"请输入有效的邮箱地址"
- 如果密码强度不足,显示黄色提示:"密码强度:弱"
- 如果网络异常,显示加载失败页面
## 核心实体
- User: { uid, email, password_hash, created_at }
## 技术说明
- 接口:POST /api/register
- 参数:{ email: string, password: string }
- 返回:{ uid: string, token: string } 或 { error: string }
- 注册后自动颁发JWT token
## 成功指标
- 注册成功率 > 95%
- 接口响应时间 < 500ms
```
---
### 输出测试用例
```markdown
- 用例设计:用户注册功能模块
- 业务场景
- 通过性场景
- 用户注册
- 新用户使用有效email (test@example.com) 和符合规则的密码 (Test@123456) 完成注册
- 生成唯一UID,自动登录并跳转到首页,URL为/home,顶部显示用户email
- 同一用户在不同浏览器使用相同email注册
- 第二次注册失败,显示提示"该邮箱已注册,请直接登录"
- 多个用户同时使用不同email注册
- 所有用户均注册成功,生成不同的UID,数据互不干扰
- 单个用户短时间内多次点击注册按钮
- 只生成一条用户记录,不会重复注册
- 异常场景
- 用户注册
- 用户输入错误格式的email (如 "abc" 或 "test@" 或 "test@.com")
- 实时显示红色提示"请输入有效的邮箱地址",注册按钮置灰不可点击
- 用户输入弱密码 (如 "123" 或 "abcdefgh")
- 显示黄色提示"密码强度:弱",但允许提交,注册成功后建议修改密码
- 用户输入已被注册的email
- 注册失败,显示提示"该邮箱已注册,请直接登录",提供登录链接
- 用户在email或密码为空时点击注册
- 显示提示"请输入邮箱地址"或"请输入密码",不发起接口请求
- 用户在网络异常时提交注册
- 显示加载失败页面,提供"重试"按钮
- 页面验证
- 注册页
- 页面UI样式验证
- 正常页验证
- 显示logo、标题"用户注册"、email输入框、密码输入框、注册按钮、"已有账号,去登录"链接
- PC端和移动端响应式布局正常,移动端按钮大小适中
- 缺省页验证
- 网络异常时显示"网络连接失败"提示,提供"刷新页面"按钮
- 页面字段验证
- email字段
- 文本长度验证:输入51个字符时提示"邮箱地址最多50个字符"
- 数据格式校验:输入"abc"时实时显示红色提示"请输入有效的邮箱地址"
- 数据格式校验:输入"test@example.com"时清除错误提示
- 密码字段
- 文本长度验证:输入7个字符时提示"密码至少8个字符"
- 文本长度验证:输入21个字符时提示"密码最多20个字符"
- 数据格式校验:输入"Test@123456"时显示"密码强度:强"
- 数据格式校验:输入"12345678"时显示"密码强度:弱"
- 页面交互功能验证
- 按钮交互验证
- 注册按钮在email和密码未填写完整时置灰禁用
- 点击注册按钮后按钮文本变为"注册中...",禁用状态,防止重复点击
- 注册失败后按钮恢复为"注册",可重新点击
- 输入框交互验证
- email输入框失去焦点时触发格式校验
- 密码输入框右侧显示"眼睛"图标,点击可切换显示/隐藏密码
- 密码输入框下方实时显示密码强度(弱/中/强)
- 页面业务逻辑验证
- 页面/链接跳转验证
- 注册成功后自动跳转到首页,URL为/home
- 点击"已有账号,去登录"链接跳转到登录页,URL为/login
- 角色展示验证
- 已登录用户访问注册页,自动跳转到首页
- 接口测试
- POST /api/register
- 跨权限测试
- 未登录用户调用接口,传入有效的email和password,返回201状态码和用户UID、token
- 已登录用户调用接口,返回400状态码和错误提示"您已登录,无需重复注册"
- 幂等测试
- 使用相同的email和password连续调用接口2次,第一次返回201成功,第二次返图409状态码和提示"该邮箱已注册"
- 并发测试
- 10个用户同时调用接口注册不同email,所有请求均成功,生成10条不同的用户记录
- 10个用户同时调用接口注册相同email,只有1个请求成功,其余9个返回409状态码
```
---
## 注意事项
### 1. 需求文档分析要点
- **提取用户故事的角色和目标**:明确"谁"、"做什么"、"为什么"
- **识别边界情况和异常**:从"边界情况说明"中提取异常场景测试点
- **解析核心实体**:从字段定义中提取字段验证的规则
- **关联技术说明**:从接口定义中提取接口测试点
### 2. 测试深度把握
- **核心功能**:详细设计,覆盖正向、逆向、边界
- **辅助功能**:简化设计,只覆盖主流程
- **展示类功能**:重点验证UI和数据准确性,可省略复杂交互测试
### 3. 分层设计原则
- **业务场景层**:站在用户视角,测试端到端流程
- **页面层**:站在前端视角,测试页面完整性和交互
- **接口层**:站在后端视角,测试接口健壮性
### 4. 避免常见错误
- ❌ 不要把业务场景拆分得过于细碎(如"点击按钮"、"输入邮箱"作为独立测试点)
- ❌ 不要在页面层重复描述业务场景层已有的测试点
- ❌ 不要为没有交互的展示型页面强行设计交互测试
- ❌ 不要为简单的CRUD接口设计过多的并发测试
### 5. 输出格式要求
- 严格遵循三层测试设计架构
- 测试描述具体可执行,避免模糊表述
- 使用Markdown无序列表格式
- 严格保持缩进层级(4个空格为一级缩进)
- 可以直接复制到XMind中导入使用
- 保持"操作+数据 → 期望结果"的父子层级关系且必须成对出现
---
## 调用方式
**用户提供需求文档时,使用以下格式:**
```
请根据以下需求文档生成测试用例:
[粘贴完整的Markdown需求文档]
请严格按照测试用例模板生成完整的测试点,注意把握适度的测试深度和广度。
```
**如果需要补充测试策略信息:**
```
请根据以下需求文档生成测试用例:
[粘贴完整的Markdown需求文档]
测试策略:
- 重点测试:支付流程、数据安全
- 不测试:性能测试、兼容性测试
- 测试深度:核心功能详细测试,辅助功能简化测试
请严格按照测试用例模板生成完整的测试点。
```
---
## 持续优化建议
1. **建立需求模板规范**:确保需求文档包含必要的测试要素(用户故事、边界情况、技术说明等)
2. **团队评审机制**:定期评审生成的测试用例,优化Prompt规则
3. **测试策略文档化**:将测试深度、广度的标准文档化,作为Prompt的补充输入
4. **迭代优化模板**:根据项目实际情况调整XMind模板结构
---
## 附录:验证类型速查表
### 业务场景层 - 通过性场景
- 单人单次运行:基本正常流程
- 单人多次运行:重复操作、数据累积
- 多人单次运行:多用户并行、数据隔离
- 多人多次运行:高频操作、并发场景
### 业务场景层 - 异常场景
- 角色异常:无权限、过期、被禁用
- 数据错误:必填缺失、格式错误、超长输入、特殊字符、SQL注入
- 未授权:未登录、Token过期、跨权限访问
### 页面层 - 字段验证
- 文本长度验证:最小值、最大值、超长
- 图片类型显示:格式、尺寸、缺省图
- 数据格式校验:邮箱、手机号、身份证、日期、URL等
- 必填项校验:为空时的提示
- 特殊字符处理:HTML标签、表情符号、SQL注入
### 页面层 - 交互功能
- 筛选功能:单条件、多条件组合、清空筛选
- 按钮交互:启用/禁用、加载状态、防重复点击
- 多选框交互:全选、反选、单选
- 下拉框交互:展开、收起、搜索、分页加载
- 输入框交互:实时校验、提示信息、自动补全、字数限制
### 接口层 - 验证类型
- 跨权限测试:管理员、普通用户、游客、过期用户
- 幂等测试:多次调用结果一致(GET/PUT/DELETE)
- 并发测试:高并发下的数据一致性、响应时间、错误处理
问题就出在这份"大而全"上——AI 太能写:给每个字段堆一长串边界值、自动加并发/多笔变体,准是准,但冗余回来了。
单阶段 prompt 按不住它。根因是一次性让它从需求直接跳到具体用例,中间没有刹车。于是把生成拆成三阶段:
- 阶段 1 只出业务场景;
- 阶段 2 出测试点模板,关键是用占位标记
{模板:XXX}代替具体值,先不填; - 阶段 3 才按规则把模板受控展开成具体用例。
阶段2:
- 通知标题字段
- 文本长度验证
- {模板:边界值测试} ← 只占位
阶段3:
- 通知标题字段
- 文本长度验证
- 标题长度为100个字符 → 完整显示
- 标题长度超过100个字符 → 系统限制最大100字符
"先说测什么类型,再说测哪几个值",把这两步分开,AI 就老实多了。
收尾
到这儿,prompt 已经从一句话长成了一整套文档:策略、三层规则、三个阶段的模板、一堆从实战里抠出来的约束。
由于每次都得手动把 strategy、phase1/2/3 复制粘贴跑三遍;遇到大需求还得自己拆、生成完自己合,比较麻烦,这时又刚好遇到skill这个概念开始流行了。。。
所以下一篇就讲:干脆把这套手艺装进 Claude Code,做成能一句话触发的 skill。
(未完待续)
-- 本篇有AI润色
浙公网安备 33010602011771号