找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1310

积分

0

好友

168

主题
发表于 11 小时前 | 查看: 0| 回复: 0

你可能有过这样的经历:把需求文档或产品原型一股脑丢给AI,让它直接“生成一份测试用例表格”。乍一看效率很高,但到了用例评审会上,同事几句追问就会让你陷入尴尬:“这条规则的依据是什么?”“P0级别的卡口点在哪里?”“权限覆盖全了吗?”——你会发现,AI生成的更像是“一段关于用例的文字”,而非真正可执行、可验证的测试设计。

我在企业级CRM系统的测试与自动化落地工作中,踩过不少类似的坑。我的结论很直接:AI最适合的角色是“逻辑整理员”和“覆盖检查器”,而不是“凭空生成用例的机器”

下面分享一套我目前稳定使用的方法,并附上一个完整的“线索认领”链路案例。这套方法包含可直接复用的模板、清单和提示词,帮助你高效产出高质量用例。

为什么直接让AI生成用例表容易“翻车”?

1. 输入是“故事”,输出就会是“作文”
需求文档往往是描述性的,包含背景、目标、页面截图以及业务同学的口头补充。AI会把这些“叙事”扩展成看似完整的用例,但常常缺少可验证的“预期结果”断言,更无法明确每条规则的来源。评审时,一旦问到“状态机如何流转?”或“哪些字段是强校验?”,生成的用例就会哑口无言。

2. P0/P1/P2没有明确标准,覆盖率就会“漂移”
企业级CRM系统的风险核心,往往不在于“功能是否存在”,而在于权限、数据一致性、幂等性、并发、流程状态、多端一致性和审计日志等方面。AI直接生成的用例表,一个常见问题是堆砌大量低风险的UI校验,却漏掉了真正可能引发线上事故的核心卡口点。

3. 缺乏“系统约束”,用例无法落地
例如:线索认领是否允许并发抢占?是否有冷却期?跨部门是否可见?是否有回收机制?这些“系统约束”通常不会体现在原型图中。AI不知道这些约束,就会基于“理想世界”生成用例,导致用例可读但不可执行。

4. 忽略“数据与环境”准备,用例无法复现
CRM系统的许多缺陷只在特定数据形态下才会暴露,比如:重复线索、黑名单客户、跨组织数据、历史状态迁移、审批流中断重试等。AI直接生成的用例,很少会清晰描述“前置数据准备、环境开关设置、可复现路径”,最终导致用例根本跑不起来。


我的方法论:逻辑材料 → 定标(P0/P1/P2) → 用例骨架 → 落地成表

核心思路是:先将AI“喂养”成熟知规则的专家,再让它基于规则生成可执行的用例,而不是让它从零开始创造。

第一步:将需求改写成“结构化逻辑材料”
不要只给AI原型链接。你应该花15分钟左右,整理一份结构化的输入材料,涵盖:影响范围、业务规则、状态定义、权限点、异常场景、接口及日志点位。使用一个固定模板,将零散的信息收拢到一页(下文提供案例)。

第二步:基于“事故代价”进行用例定标
P0/P1/P2的划分不应凭感觉,而应根据问题发生后的实际代价来定义:

  • P0:会导致资金损失、数据错乱、越权访问、流程卡死、审计缺失或大面积服务不可用。
  • P1:核心链路功能可用,但用户体验或局部数据正确性受损(通常可补救)。
  • P2:提示文案、非关键UI、边角体验类问题。
    定标的关键是产出“卡口点清单”,而不是简单地给“用例条数”贴标签。

第三步:固定用例骨架,再填充内容变体
我的用例骨架固定包含6个部分:前置数据、前置权限、操作步骤、期望结果(含数据断言)、日志/埋点验证、回滚/清理。骨架一旦固定,AI生成的内容就不会偏离主线。

第四步:落地成表,人机协同
让AI负责在既定规则和骨架下,补齐各种变体场景(如并发、权限矩阵、状态机、幂等、多端一致)。而你,则需要人工验收每一条用例的可执行性、可验证性及可复现性


完整案例:CRM系统「线索认领」链路实战

背景
CRM系统中的线索从“公海”流入销售池。多个销售同时盯上一批线索时,容易出现越权认领、重复认领、状态不一致、移动端与Web端展示不一致,以及认领后触发异常审批/分配链路等事故。

目标
在不依赖“AI直接生成用例表”的前提下,1小时内跑通一轮P0级别核心用例,并产出可复用的模板,包括:结构化逻辑材料、P0卡口清单、用例样例、控制AI的提示词。

执行步骤

  1. 收集需求与口头规则,整理为“结构化逻辑材料”。
  2. 根据事故代价完成P0/P1/P2定标,优先锁定P0卡口点。
  3. 固定用例骨架,并手工编写3条样例作为“标杆”。
  4. 使用提示词驱动AI,基于逻辑材料扩写变体用例(覆盖并发、权限、状态、幂等、多端一致)。
  5. 人工验收每条用例的可执行性、可验证断言及数据准备与清理步骤。
  6. 输出物:P0卡口清单 + 5条高质量样例用例 + 1小时试跑路径。

可直接复用的「结构化逻辑材料」样例

模块:CRM系统 - 线索认领

影响范围:
- 公海线索列表(Web/移动端)
- 线索详情页(认领按钮/状态展示)
- 线索归属字段(owner_id / owner_org)
- 认领审计日志(操作人/时间/来源端/前后归属)
- 线索相关联对象:跟进记录、待办、提醒(若有触发)
- 事件/消息:认领成功通知、分配规则触发(若有)

核心规则:
R1 认领前置:线索状态=“公海可认领”;若状态=“已认领/冻结/作废”则禁止
R2 并发规则:同一线索同一时刻只允许成功一次;其余返回“已被认领”并不写入归属
R3 幂等规则:同一用户对同一线索重复点击认领,结果应一致(成功后再次点击应提示已归属本人,不产生重复日志)
R4 权限规则:
  - P_A 公海可见:用户必须具备“公海查看”权限
  - P_B 可认领:用户必须具备“认领”权限,且线索所属公海在其可认领范围内(组织/区域)
  - P_C 线索已被他人认领后:无“查看已认领线索”权限则不可见/不可访问
R5 状态机:
  - 公海可认领 -> 已认领
  - 已认领 ->(转移/回收/作废)由其他流程触发;认领流程不允许回退
R6 数据一致性:
  - owner_id、owner_org、认领时间字段、状态字段必须同事务一致写入
  - Web/移动端展示在 3 秒内一致(允许短暂缓存,但最终一致必须可验证)
R7 审计与日志:
  - 成功认领必须写入审计日志(含操作端、request_id)
  - 失败认领不写归属、不写成功日志,但可写失败事件(可选)

异常与边界:
- E1 网络超时/重试:不得造成重复认领或重复日志
- E2 线索在认领瞬间被回收/冻结:按最新状态拒绝并提示
- E3 跨组织越权:任何情况下不得写入越权归属

P0 卡口清单(12条,需具备可执行动作与可验证结果)

  1. 有认领权限的用户A认领公海线索L → L状态变“已认领”,owner_id=A,审计日志写入1条成功记录。
  2. 无“认领”权限的用户B点击认领 → 操作被拒绝(403或无权限提示),owner_id不变,不产生成功审计日志。
  3. 无“公海查看”权限的用户C访问公海列表/线索详情 → 不可见或访问被拒绝,接口不返回敏感字段。
  4. 并发:用户A与用户D同时认领同一线索L → 仅1人成功;失败方提示“已被认领”,owner_id只写入一次。
  5. 幂等:用户A在成功后重复点击认领(含连点) → 最终owner_id仍为A,成功审计日志不重复(最多1条)。
  6. 状态拦截:线索L状态=冻结/作废时尝试认领 → 拒绝,状态/owner不变。
  7. 一致性:认领成功后Web详情页与移动端详情页展示一致 → 同一字段(状态/归属/时间)一致,且在约定时间内收敛。
  8. 事务一致性:认领成功后owner_id、owner_org、认领时间、状态字段同时更新 → 不允许出现部分字段更新。
  9. 越权拦截:用户A不在可认领范围(组织/区域) → 拒绝,owner不变,记录越权失败日志(若有)。
  10. 重试场景:认领请求超时后客户端重试 → 只允许产生一次成功效果;重复请求返回一致结果。
  11. 列表刷新:认领成功后公海列表中L消失/状态更新 → 列表与详情一致,不出现“已认领仍在公海”的情况。
  12. 审计完整性:成功认领必须包含request_id/来源端/操作者 → 信息可用于问题追溯。

用例样例(5条,覆盖核心场景)

用例 1(权限-P0):无认领权限禁止认领
前置数据:线索 L 在“公海可认领”,owner_id 为空
前置权限:用户 B 具备公海查看,无认领权限
步骤:
1. 用户 B 进入公海列表,打开 L 详情
2. 点击“认领”
期望:
- 前端提示无权限/操作失败
- 接口返回 403 或业务错误码(记录错误码)
- L 的 owner_id/状态/认领时间均不变化
- 不产生“成功认领”审计日志(可校验日志/审计表)

用例 2(并发-P0):两人同时认领同一线索,只能成功一次
前置数据:线索 L 在“公海可认领”
前置权限:用户 A、用户 D 均具备可认领权限且在范围内
步骤:
1. A、D 分别在各自端同时点击“认领”(可用并发脚本/手工倒计时)
2. 刷新详情与列表
期望:
- 只有一方成功(记录成功方)
- 失败方提示“已被认领/状态已变化”
- owner_id 最终只指向成功方
- 审计日志仅 1 条成功认领记录(可用 request_id 去重验证)

用例 3(幂等-P0):同一用户重复点击/重试不产生重复效果
前置数据:线索 L 在“公海可认领”
前置权限:用户 A 可认领
步骤:
1. 用户 A 点击认领并成功
2. 立即重复点击认领 5 次(或模拟网络重试同一请求)
期望:
- L 归属始终为 A
- 认领成功日志最多 1 条(同一线索同一归属不重复)
- 后续点击返回“已归属本人/无需重复认领”或等价提示

用例 4(状态一致-P0):认领瞬间状态变更的竞争条件
前置数据:线索 L 在“公海可认领”
前置权限:用户 A 可认领;另有系统动作可将 L 置为“冻结”(由管理员或定时任务模拟)
步骤:
1. A 准备点击认领
2. 在同一时间窗口将 L 状态改为“冻结”
3. A 发起认领请求
期望:
- 系统按最新状态处理:若冻结先落库,则认领必须失败
- owner_id 不得写入 A
- 返回明确错误码/提示(便于前端展示与排查)

用例 5(端间一致-P0):Web 与移动端展示收敛一致
前置数据:线索 L 在“公海可认领”
前置权限:用户 A 可认领
步骤:
1. A 在 Web 端认领成功
2. 3 秒内在移动端打开 L(或刷新)
3. 对比字段:状态、归属人、认领时间、按钮可用性
期望:
- 两端最终展示一致
- 若存在缓存,允许短暂不一致,但在约定时间内必须收敛
- 不允许出现:Web 已认领但移动端仍可认领

可复用模板与提示词(控制AI输出的关键)

用例骨架模板(建议团队统一)

【用例名称】(优先写风险点:权限/并发/幂等/一致性/状态机)
【级别】P0/P1/P2
【前置数据】(具体到字段/状态)
【前置权限】(角色/权限点/组织范围)
【操作步骤】(可执行、可复现)
【期望结果】
  - 页面反馈(提示/按钮状态)
  - 接口/数据断言(字段变化、不变化)
  - 日志/审计(成功/失败是否记录,关键字段)
【清理/回滚】(恢复数据,避免污染)

用于约束AI的提示词

你是资深软件测试工程师,负责 CRM系统 的测试设计。
我会提供“结构化逻辑材料”和“用例骨架模板”,你只能基于材料生成用例,不允许编造不存在的规则/页面/字段。

输出要求:
1. 先给出 P0 用例列表(只列名称+覆盖点),再给出详细用例
2. 每条用例必须包含:前置数据、前置权限、步骤、期望结果(含数据断言/日志审计断言)、清理
3. 必须覆盖:并发、幂等、权限矩阵、状态机竞争条件、端间一致
4. 若材料缺失导致无法写断言,必须在对应位置标记【缺口:需要确认X】,不要自行补全

这是结构化逻辑材料:
<<<在这里粘贴上面的逻辑材料>>>

这是用例骨架模板:
<<<在这里粘贴用例骨架模板>>>

常见“坑点”与规避方法

  1. 坑:AI生成的“期望结果”过于笼统,无法验证。
    规避:强制要求每条用例的期望结果必须包含“数据断言”和“日志断言”。没有明确断言的用例不得进入评审环节,并在提示词中要求AI对缺失信息进行标记。

  2. 坑:编写的并发用例缺乏可执行方案,最终流于形式。
    规避:并发用例必须明确写出“触发方式”(如双人倒计时、并发测试脚本、压测工具调用)和“判定方式”(如审计日志条数、owner_id最终值、错误码)。

  3. 坑:权限用例仅检查前端提示,未覆盖数据层面的越权访问。
    规避:权限测试必须包含“接口返回是否泄露敏感字段”以及“越权请求是否能错误写入数据”。至少覆盖:无查看权限、无操作权限、操作范围外、数据已被他人操作后不可见等场景。

  4. 坑:多端一致性测试只检查页面,未验证最终一致性和收敛时间。
    规避:明确约定一致性收敛的时间窗口(如3秒),并要求验证“最终一致性”时,必须能通过接口或数据库查询进行核对,不能仅仅依赖UI观察。

  5. 坑:用例经AI扩写后数量膨胀,导致核心的P0用例被稀释。
    规避:严格遵守“先锁定P0卡口清单,再基于清单扩写”的流程。任何新增用例都必须说明其对应哪个P0卡口或哪条核心规则。


1 小时快速试跑方案(按步骤执行)

0-10 分钟:整理逻辑材料
- 按模板写:影响范围/规则/状态/权限/异常
- 把口头规则补进“核心规则”区

10-20 分钟:定标与卡口
- 只做 P0:列出 10~12 条“动作+可验证结果”的卡口清单
- 每条卡口绑定对应规则编号(R1/R2/...)

20-35 分钟:写 3 条标杆用例(手工)
- 必选:权限 1 条 + 并发 1 条 + 幂等/重试 1 条
- 每条写清:数据断言/日志断言/清理

35-50 分钟:用提示词让 AI 扩写到 8~12 条 P0
- 输出先要“列表+覆盖点”,再要详细用例
- 对缺口标记出来,别让 AI 自己补

50-60 分钟:快速验收可执行性
- 随机抽 3 条当场走一遍:是否能准备数据、是否能验证、是否能回滚
- 把不可执行的用例当场改成“缺口问题”,回到需求方确认

总结

AI在测试用例设计中的真正价值,不在于“帮我们把表格填满”,而在于“协助我们理清逻辑材料、暴露覆盖缺口、并高效补齐规则下的各种变体”。你提供给AI的输入越是结构化的规则与约束,它的输出就越接近可执行的测试设计,而非一堆华而不实的文字。

如果只是带着原型图去让AI生成用例表,“翻车”几乎是必然的:优先级漂移、断言模糊、并发、幂等、数据一致性等关键场景缺失,最终无法通过严苛的评审。按照本文的方法实践一轮,你至少能得到一份可落地的P0卡口清单和一组可复现、可验证的样例用例。在此基础上,再利用AI进行扩写和覆盖检查,整个测试设计过程会稳定、高效得多。

立即行动的可执行路径:参照“1小时试跑方案”,从撰写逻辑材料开始,逐步锁定P0卡口、编写标杆用例、利用提示词扩写,最后进行抽样验收。希望这套在实战中沉淀的方法,能帮助你更高效地应对企业级系统的测试挑战。欢迎在云栈社区交流更多测试实战细节。




上一篇:IBM CCA严重加密漏洞CVE-2025-13375(CVSS 9.8)威胁HSM安全
下一篇:LLM、RAG、LangChain都是什么?一文搞懂AI应用核心概念与架构
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-9 21:14 , Processed in 0.331107 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表