测试条件要写到能直接照着执行:在什么前提下、对哪个对象、输入什么数据、按什么步骤操作、看到什么结果算通过。本文给出一份完整填写的登录测试条件示例,逐项解释字段取舍与常见含糊写法,并示范迁移到支付金额校验场景。示例为演示情景,不对应真实项目。
要点总览(TL;DR)
- 测试条件示例要写清六项:前置条件、测试对象与入口、输入数据、操作步骤、预期结果、判定依据,执行人拿到即可独立复现。
- 合格标准有三条:可执行(无需追问环境与数据)、可复现(换人换天结果一致)、可判定(通过与否有明确观察对象和比对规则)。
- 常见含糊写法集中在三处:次数与取值不具体、准备动作混进前置条件、预期结果与判定依据合并成一句。
- 写法可迁移:一条条件一个判定,前提只写状态、动作只写步骤,数据写到可照抄,边界值取两侧,异常条件单独成条。
- 多步骤串联、主观评价、依赖外部系统、性能并发等场景需调整写法;跨项目资产复用与脚本实现不在本文范围。
示例要解决什么问题:测试条件写到什么程度算清楚
测试条件是用例中描述“验证什么、在什么条件下验证”的部分,它决定了执行人能否独立复现一次验证,也决定了结果出现分歧时能否判断通过与否。一条测试条件写得是否清楚,可以用三条合格线衡量。
- 可执行:执行人拿到条件后,不需要再向设计者追问环境、账号、入口或数据,就能开始操作。
- 可复现:换一个人、换一天执行,只要前提和数据一致,操作路径和观察点一致,结果应当一致。
- 可判定:预期结果有明确的观察对象和比对依据,通过与否不依赖执行人的主观理解。
这三条线同时约束写法:条件太粗,执行人自由发挥,复现性丢失;条件太细,把环境搭建、脚本逻辑都塞进来,用例变得难以维护。合适的粒度是覆盖一次独立判断所需的全部信息,并把多个判断拆成多条条件。本文示例为演示情景,用于说明写法,不代表任何真实项目的用例内容。
完整示例:一条登录测试条件从前提写到判定
以下示例设定一个演示情景:某系统提供账号密码登录入口,密码连续输错达到阈值后触发账号锁定。示例只描述这一条测试条件,不涉及注册、找回密码等其他流程。
| 字段 | 填写内容 |
|---|---|
| 条件编号与名称 | TC-LOGIN-003 密码连续错误达到阈值后账号锁定 |
| 前置条件 | 演示环境可访问登录页;存在测试账号 demo_user,状态为正常,密码已确认为初始值;该账号当日无失败登录记录;锁定阈值按演示配置为连续 5 次 |
| 测试对象与入口 | 登录页的账号、密码输入框与“登录”按钮;入口为演示环境登录地址 |
| 输入数据 | 账号:demo_user;密码:错误密码 wrong_pwd_01,连续使用 5 次;第 6 次使用正确密码 |
| 操作步骤 | 1. 打开登录页;2. 输入账号与错误密码,点击登录;3. 重复步骤 2 共 5 次;4. 第 6 次输入正确密码并点击登录 |
| 预期结果 | 前 4 次登录失败并提示账号或密码错误;第 5 次失败后提示账号已锁定;第 6 次使用正确密码仍无法登录,提示账号已锁定 |
| 判定依据 | 以页面提示文案与登录是否成功为准;第 5 次出现锁定提示、第 6 次正确密码被拒绝,两项同时满足判为通过;任一项不符判为不通过并记录实际提示 |
这条条件把“锁定”这一判断拆成了两个观察点:触发时的提示,以及锁定后正确密码是否被拒绝。执行人不需要猜测锁定是提示层面还是实际拦截,判定依据已经写明两项同时满足才算通过。
逐项解释:每个字段为什么这样填
示例中的字段各有分工,混填会直接削弱可执行性和可判定性。下面按字段说明填写取舍,并给出常见含糊写法与改写对照。
前置条件与操作步骤的边界
前置条件描述“开始操作之前已经成立的状态”,操作步骤描述“执行人主动做的动作”。示例中“账号状态正常、当日无失败记录、阈值为 5 次”属于前提,放在前置条件;“输入错误密码并点击登录”属于动作,放在步骤。常见错误是把准备动作写进前置条件,例如“先登录失败几次”,这会让执行人无法判断从第几次开始计数。改写方式是:把准备动作移入步骤并标明次数,前置条件只保留结果状态。
输入数据的具体化程度
输入数据要写到执行人可以直接照抄的程度。示例给出了账号名、错误密码的具体取值和连续使用次数,并说明第 6 次切换为正确密码。只写“输入错误密码若干次”会让次数和取值都不可控。具体化不等于穷举,一条条件围绕一个判断,数据取能触发该判断的最小集合即可。
预期结果与判定依据的区分
预期结果回答“应该看到什么”,判定依据回答“凭什么说通过”。示例的预期结果列出两次关键观察:第 5 次出现锁定提示、第 6 次正确密码被拒绝;判定依据则规定两项同时满足才判通过,并说明不符时记录实际提示。把两者合并成一句“锁定生效”会丢失观察点和比对规则。
含糊写法与改写对照
| 常见含糊写法 | 问题 | 改写示例 |
|---|---|---|
| “多次输错密码后账号被锁定” | 次数、观察点、判定规则都缺失 | “连续 5 次错误密码后提示锁定,第 6 次正确密码仍被拒绝,两项同时满足判通过” |
| “输入合法数据,系统正常响应” | 数据不具体,正常响应无观察对象 | “输入账号 demo_user 与正确密码,页面跳转至工作台首页,地址栏变为工作台路径” |
| “前置条件:已登录并完成若干次失败尝试” | 准备动作混入前提,计数起点不明 | 前置条件写“账号当日无失败记录”,失败尝试写入步骤并标明次数 |
| “结果符合预期即可” | 判定依据缺失,依赖执行人理解 | “以页面提示文案与是否跳转为准,提示文案与需求一致且跳转成功判通过” |
这些改写的共同点是把模糊限定词换成可观察的对象和可计数的动作。测试条件作为用例字段进入评审时,评审人也可以按同样口径检查:前提是否只含状态、数据是否可照抄、判定是否可复核。
可迁移规律:把示例方法用到其他测试条件
示例的写法可以提炼为几条可复用规律,换到其他功能时按规律改写字段即可。
- 一条条件一个判定:把“锁定生效”拆成触发提示与拦截效果两个观察点,仍归为一条条件,因为它们共同服务于同一个判断;若换成“锁定后能否通过找回密码解锁”,则应另立一条条件。
- 前提只写状态,动作只写步骤:凡是执行人需要主动做的准备,都放进步骤并标明次数或顺序。
- 数据写到可照抄:给出具体取值、数量和切换时点,避免“若干”“合法”“异常”这类无法执行的描述。
- 判定依据写比对规则:说明以什么为准、几项同时满足算通过、不符时记录什么。
- 边界与异常单独成条:边界值写明取值的两侧,例如金额上限取“上限值”和“上限值加 0.01”;异常条件写明触发方式与期望的拒绝或提示。
迁移示例:支付金额校验
把上述规律用到支付金额输入场景,可写成如下条件:前置条件为演示环境已进入支付页、账户余额充足、单笔限额配置为 10000 元;测试对象为金额输入框与“确认支付”按钮;输入数据为 10000.00 与 10000.01 两个取值,分别提交;操作步骤为依次输入两个金额并点击确认支付;预期结果为 10000.00 提交成功并进入支付确认页,10000.01 被拒绝并提示超出单笔限额;判定依据为以页面提示与是否进入确认页为准,两个取值的结果均符合描述判为通过。这条条件沿用同一结构,把边界值写成可照抄的两个取值,判定规则也保持可复核。
当测试条件数量增多,字段是否齐全、判定是否可复核会直接影响评审效率。ONES 测试管理支持自定义用例属性,可把前置条件、输入数据、判定依据等作为字段承载,适配不同团队的用例模板;用例库中所有用例属性都支持筛选,便于按条件类型或覆盖范围查找待评审的用例;用例模块支持树状结构与拖拽排序,可按功能模块组织条件。测试用例还可与需求、任务关联,测试计划与迭代关联,使条件从设计到执行处于同一条流程中。以上为产品能力说明,具体字段配置以团队实际设置为准。
适用边界:哪些情况需要调整写法
本文示例适合功能明确、判断标准可观察的单点验证,例如登录、金额校验、状态流转中的单个节点。这类条件的共同特征是:前提可以列举、数据可以给定、结果可以观察。
以下情形需要调整写法。涉及多步骤业务串联的场景,单条条件难以承载完整判断,应按关键节点拆成多条条件并注明先后依赖;结果依赖人工主观评价的场景,例如界面观感或文案语气,判定依据需要补充评审人或比对基准,不能只写“符合预期”;依赖外部系统或第三方返回的场景,前置条件要写明外部状态与模拟方式,否则复现性无法保证;性能、并发等需要专门测量手段的验证,条件中应写明测量口径与观察工具,本文示例的字段结构不足以覆盖。
跨项目复用测试条件、建设用例库分类体系,属于测试资产管理的范畴,本文只讨论单条条件的写法,不展开组织方式。把条件转化为自动化脚本、编写断言代码,属于脚本实现层面,同样不在本文范围。团队在评审用例时,可先按本文三条合格线检查单条条件,再决定是否进入资产沉淀环节。
常见问题
前置条件里能不能写“先登录失败几次”这类准备动作?
建议把准备动作移入操作步骤,并标明次数和顺序。前置条件只保留开始操作前已经成立的状态,例如“账号当日无失败登录记录”“锁定阈值为连续 5 次”。这样执行人才能确定计数起点,换人执行时结果也一致。若把准备动作写进前置条件,容易出现从第几次开始计数、是否算入本次验证的分歧。
一条测试条件里包含多个观察点,是否必须拆成多条?
看这些观察点是否服务于同一个判断。示例中“第 5 次出现锁定提示”和“第 6 次正确密码被拒绝”共同验证“锁定生效”,可以留在一条条件里,判定依据写明两项同时满足才算通过。若观察点对应不同判断,例如“锁定后能否通过找回密码解锁”,则应另立一条条件,避免一条条件承担多个结论。
输入数据写到什么程度算具体,会不会让用例变得冗长?
写到执行人可以直接照抄即可:给出具体取值、数量和切换时点,例如“错误密码 wrong_pwd_01 连续使用 5 次,第 6 次使用正确密码”。具体化不等于穷举,一条条件围绕一个判断,数据取能触发该判断的最小集合。把“若干次”“合法数据”这类描述替换成可计数的动作,通常不会显著增加篇幅,反而减少执行时的追问。
预期结果和判定依据有什么区别,能否合并成一句?
预期结果回答“应该看到什么”,判定依据回答“凭什么说通过”。合并成“锁定生效”会丢失观察点和比对规则,执行人只能凭理解判断。建议预期结果列出关键观察,判定依据写明以什么为准、几项同时满足算通过、不符时记录什么,例如记录实际提示文案,便于后续复核与缺陷描述。
测试条件写好后,在评审和用例管理中怎么落地?
评审时可先按三条合格线检查单条条件:前提是否只含状态、数据是否可照抄、判定是否可复核。字段承载上,ONES 测试管理支持自定义用例属性,可把前置条件、输入数据、判定依据作为字段纳入用例模板;用例库中所有用例属性都支持筛选,便于按条件类型查找待评审用例;用例模块支持树状结构与拖拽排序,可按功能模块组织。测试用例还可与需求、任务关联,测试计划与迭代关联。具体字段配置以团队实际设置为准。
