10个步骤掌握测试用例模板完整版:从新手到专家的进阶指南
很多测试用例并不是“写得不够多”,而是写完之后没人能稳定执行:前置条件不清楚,测试数据无法复现,步骤里充满“正常输入”“按要求操作”,预期结果只写一句“测试通过”。我在项目评审中反复看到这种情况:一份登录模块用例看起来有几十条,真正覆盖异常、边界、权限和状态变化的却不到一半。掌握测试用例模板的关键,不是把表格字段填满,而是把需求转换成可执行、可判断、可追踪的验证动作。
本文会用一个登录模块作为主案例,完整拆解从需求阅读、测试点提取、场景设计,到用例评审、缺陷关联和持续维护的10个步骤。你将获得一份可以复制到表格、测试管理系统或某项目管理平台中的模板,也会看到“看似完整”和“真正可用”的用例到底差在哪里。
一、先讲核心结论:好用的模板不是字段越多越好
1. 测试用例真正要解决的三个问题
一条测试用例至少要回答三个问题:验证什么、在什么条件下验证、出现什么结果才算通过。如果这三个问题无法被清楚回答,即使表格中有编号、优先级、模块、版本等十几个字段,也只是文档看起来规范,执行时仍然会依赖个人理解。
我通常把测试用例质量归纳为三个维度:可识别、可执行、可判定。可识别意味着能知道它属于哪个需求和功能;可执行意味着另一名测试人员不需要口头补充就能完成操作;可判定意味着执行者可以依据明确结果判断通过、失败或阻塞。
| 质量维度 | 低质量表现 | 合格表现 |
|---|---|---|
| 可识别 | 标题写成“验证登录功能” | 标题写成“有效账号和正确密码登录成功” |
| 可执行 | 步骤写成“正常输入并提交” | 明确账号、密码、按钮和操作顺序 |
| 可判定 | 预期结果写成“登录成功” | 写清页面跳转、用户状态和提示信息 |
2. 一份模板应当分成四类字段
模板字段可以分成四组。第一组是识别字段,用于定位用例,例如用例编号、标题、所属模块和关联需求;第二组是执行字段,用于说明前置条件、环境、数据和操作步骤;第三组是判断字段,用于记录预期结果、实际结果和执行状态;第四组是管理字段,用于维护优先级、缺陷编号、版本和负责人。
不同团队不需要照搬同一套字段。小型项目可以把环境、测试数据和前置条件合并;多人协作、版本周期较长的项目,则应保留需求关联、缺陷关联、优先级和维护状态。字段的价值取决于它是否帮助团队减少沟通成本,而不是字段数量本身。
3. 可直接复制的测试用例模板
| 字段 | 填写说明 | 登录案例示例 |
|---|---|---|
| 用例编号 | 保持唯一,建议包含模块缩写 | LOGIN-001 |
| 用例标题 | 用一句话说明验证目标 | 有效账号和正确密码登录成功 |
| 所属模块 | 填写功能或业务模块 | 用户登录 |
| 关联需求 | 关联需求编号、验收标准或用户故事 | REQ-LOGIN-001 |
| 优先级 | 按业务影响和失败风险分级 | P0 |
| 测试类型 | 功能、接口、兼容性、权限等 | 功能测试 |
| 环境 | 记录必要的版本、设备和浏览器 | Web测试环境、Chrome最新版 |
| 前置条件 | 执行前必须已经成立的条件 | 账号已注册且状态正常 |
| 测试数据 | 填写可复现的具体数据 | 账号:test001;密码:符合规则的正确密码 |
| 操作步骤 | 按执行顺序列出具体动作 | 输入账号、输入密码、点击登录 |
| 预期结果 | 写成可观察、可判断的结果 | 跳转首页,显示用户名称,登录状态保持 |
| 实际结果 | 执行时填写实际表现 | 执行时记录 |
| 执行状态 | 通过、失败、阻塞或未执行 | 执行时选择 |
| 缺陷编号 | 失败时关联对应缺陷 | 执行失败后填写 |
| 备注 | 补充特殊环境或风险说明 | 需验证刷新后的登录状态 |

二、为什么“写了很多用例”仍然会漏测
1. 需求只写了主流程,测试却不能只测主流程
产品需求经常只描述理想路径,例如“用户输入账号和密码后登录系统”。但真正影响质量的规则可能藏在补充说明、接口约束或历史缺陷里:账号是否区分大小写,密码错误几次后锁定,账号被禁用时显示什么,网络中断时是否允许重复提交,登录成功后是否建立会话。
如果测试人员只把需求原句改写成操作步骤,得到的通常是一条“正确账号加正确密码登录成功”的用例。这条用例有价值,但它只能证明主流程可走通,不能证明功能在异常条件下仍然符合业务预期。
2. 测试用例常见的四种假完整
- 字段完整:每一列都有内容,但内容都是“准备数据”“正常操作”“符合预期”。
- 数量完整:用例数量很多,却把同一条主流程拆成多个近似版本,关键边界没有增加。
- 流程完整:只覆盖从开始到结束的顺利路径,没有考虑中断、回退、重复提交和状态过期。
- 工具完整:用例已经录入测试管理工具,但没有关联需求、版本和缺陷,无法形成追踪链路。
在评审时,我不会先问“这份用例有多少条”,而会先抽查四类风险:一个边界值、一个错误输入、一个权限变化、一个外部依赖异常。如果这四类场景都写不清楚,继续增加用例数量通常只会扩大维护负担。
3. 用例数量和覆盖质量不是线性关系
下面的数据是一个登录模块的情景模拟,用于说明用例数量与风险覆盖之间的关系,并非某个企业的公开统计。第一版用例有28条,主要来自页面字段和主流程拆分;第二版经过等价类、边界值和权限分析后只有24条,但关键风险覆盖明显更完整。
| 版本 | 用例数量 | 正常流程占比 | 异常与边界场景 | 可直接回归用例 |
|---|---|---|---|---|
| 初版 | 28条 | 71% | 8条 | 15条 |
| 评审后 | 24条 | 42% | 14条 | 20条 |

三、10个步骤把需求写成可执行用例
1. 阅读需求并提取验收条件
第一步不是打开表格,而是把需求改写成可验证条件。以“用户输入有效账号和密码后可以登录”为例,我会继续追问:有效账号的定义是什么,密码长度范围是多少,错误密码是否有次数限制,登录成功后跳转到哪里,登录状态需要保持多久。
对于需求中没有明确的规则,不要擅自猜测后直接写入用例。应将其标记为待确认项,并在用例备注或需求评论中提出问题。没有被确认的业务规则,不应伪装成测试结论。
2. 明确测试对象和范围
登录功能可能涉及页面、认证接口、会话服务、权限服务和日志服务。测试用例需要先明确本轮验证范围。例如本轮只验证Web登录页面,那么数据库字段的内部实现不一定需要写成页面用例;如果本轮同时验证认证接口,就应单独设计接口响应码、字段和异常超时场景。
| 范围内 | 范围外或需另行验证 |
|---|---|
| 账号密码输入和提交 | 注册流程 |
| 错误提示和跳转行为 | 第三方账号注册 |
| 登录态建立和过期 | 完整渗透测试 |
| 普通用户访问受限页面 | 后台账号批量创建 |
3. 列出测试场景而不是马上写步骤
场景是对风险的分类,步骤是对场景的执行描述。先列场景,可以避免一上来只写“打开页面、输入内容、点击按钮”。登录模块至少应分为正常输入、空值、错误输入、账号状态、边界长度、网络异常、重复提交、权限和会话状态九类。
- 正常场景:有效账号与正确密码登录。
- 输入校验:账号为空、密码为空、两者同时为空。
- 身份校验:账号不存在、密码错误、账号被禁用。
- 边界场景:最小长度、最大长度、超长输入、前后空格和特殊字符。
- 状态场景:登录态过期、退出后返回受限页面、重复点击登录。
- 依赖异常:认证服务超时、网络断开、接口返回异常。
4. 使用等价类划分输入
等价类的作用,是把大量输入划分成具有相同处理逻辑的区域。例如密码长度要求为8至20位,可以先划分为小于8位、8至20位、大于20位三类。每类至少选择一个代表值,再结合边界值进行补充。
等价类不能脱离业务规则。若需求只说“密码必须符合复杂度要求”,却没有说明长度、大小写或特殊字符规则,测试人员应该先推动需求澄清,而不是自行定义一套规则并据此判断产品缺陷。
5. 使用边界值检查最容易出错的分界线
边界值通常比普通值更容易暴露实现错误。假设账号长度要求为6至20个字符,建议至少验证5、6、7、19、20和21个字符。若系统还涉及中文、表情、全角字符或字节长度,还要确认“字符数”和“存储长度”是否是同一个口径。
| 规则 | 代表值 | 应关注的结果 |
|---|---|---|
| 最小长度6位 | 5、6、7位 | 提示是否准确,6位是否被错误拦截 |
| 最大长度20位 | 19、20、21位 | 超长内容是否截断、报错或被错误提交 |
| 密码特殊字符 | 无、单个、多个特殊字符 | 校验规则是否与提示一致 |
| 前后空格 | 账号前后各增加空格 | 系统是自动清除还是按原值校验 |

6. 补充权限、兼容性和安全场景
功能测试不应与安全测试混为一谈,但基础权限和常见安全风险仍然需要纳入测试范围。未登录用户访问受限页面、普通用户访问管理员页面、会话过期后继续提交操作,都是功能与权限交界处的典型场景。
- 未登录访问受限页面时,是否跳转登录页并保留原访问地址。
- 普通用户访问管理功能时,是否被拒绝而不是仅隐藏按钮。
- 密码输入框是否默认隐藏敏感内容。
- 连续错误登录达到规则次数后,账号是否进入正确状态。
- 登录成功后复制受限地址到新窗口,权限状态是否一致。
- 网络恢复后重复点击提交,是否产生重复会话或异常记录。
如果产品属于金融、医疗、政务或高权限后台,建议将基础功能用例与专业安全测试分开管理。前者验证用户可见行为和业务权限,后者可能还需要进行接口鉴权、越权、暴力破解防护和敏感信息暴露等专项测试。
7. 填写可复现的前置条件和测试数据
“准备一个正常用户”不是合格的前置条件,因为执行者不知道这个用户是否验证过邮箱、是否绑定多因素认证、是否被限制异地登录。更可执行的写法应说明账号状态、密码状态、权限角色和必要的依赖服务。
我建议测试数据至少包含四个要素:数据值、数据状态、生成方式和清理方式。例如登录成功用例可以注明“创建一个状态正常、未锁定、拥有普通用户角色的账号;执行后保留账号用于回归;测试结束后清除登录会话”。
8. 把操作步骤写成单动作句
每个步骤最好只表达一个主要动作,避免把多个行为塞进同一句。这样做有两个好处:失败时可以准确定位发生在哪一步,也更容易将步骤转化为自动化脚本或可复用组件。
不建议写“正常输入账号密码并登录”。建议拆成“在账号输入框输入有效账号”“在密码输入框输入正确密码”“点击登录按钮”“观察页面跳转和登录状态”四个步骤。对于复杂业务,可以在步骤中增加输入值,但不要把预期结果混入操作步骤。
步骤1:打开登录页面。
步骤2:在账号输入框输入已注册且状态正常的账号 test001。
步骤3:在密码输入框输入与账号匹配的正确密码。
步骤4:点击“登录”按钮。
步骤5:刷新当前页面,检查登录状态是否保持。
9. 把预期结果写成可观察条件
“登录成功”只是结论,不足以指导判断。更好的预期结果应拆成页面、状态和业务数据三个层面:页面跳转到首页,右上角显示当前用户名称;刷新页面后仍保持登录;如果需求要求记录登录行为,则登录记录中应出现对应时间和账号。
是否需要验证数据库,取决于测试层级和需求要求。页面功能用例不必把所有内部实现都写进去,但对于接口测试、数据一致性测试或审计要求较高的系统,关键字段和返回码应单独列入预期结果。
10. 设置优先级并进入评审、执行和维护
优先级应基于业务影响、失败概率和发现成本,而不是凭感觉分配。核心登录链路、权限绕过和账号锁定通常属于高优先级;低频提示文案和非核心兼容性问题可以安排在较低优先级,但不能因此完全不测。
用例写完后,还需要经过评审、执行和维护。需求改变时,不能只修改页面步骤,还要重新检查测试数据、边界条件、接口依赖和关联缺陷。长期不维护的用例会变成“看起来覆盖很全,实际执行全部失败”的历史负债。

四、完整案例:登录模块测试用例怎么写
1. 先建立登录模块的需求假设
为了让案例能够完整覆盖多个测试维度,本文采用以下情景规则:账号长度为6至20个字符,密码长度为8至20个字符;账号和密码均不能为空;连续5次密码错误后账号锁定15分钟;登录成功后进入首页;未登录用户访问受限页面时跳转登录页;网络异常时页面提示提交失败,用户可以重新发起登录。
这些规则只是案例前提,不是所有系统的通用标准。实际项目中,锁定次数、锁定时长、密码规则和跳转逻辑必须以需求、接口协议及安全策略为准。
2. 正常和基础校验用例
| 编号 | 测试场景 | 前置条件与数据 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| LOGIN-001 | 有效账号和正确密码登录 | 账号状态正常,密码正确 | 输入账号;输入密码;点击登录 | 进入首页,显示用户名称,登录状态建立 | P0 |
| LOGIN-002 | 账号为空 | 打开登录页 | 不输入账号;输入合法密码;点击登录 | 阻止提交,提示账号不能为空 | P1 |
| LOGIN-003 | 密码为空 | 账号已注册且状态正常 | 输入有效账号;不输入密码;点击登录 | 阻止提交,提示密码不能为空 | P1 |
| LOGIN-004 | 账号和密码均为空 | 打开登录页 | 不输入任何内容;点击登录 | 页面不提交,并分别显示必要校验提示 | P1 |
| LOGIN-005 | 账号不存在 | 准备系统中不存在的账号 | 输入不存在账号;输入任意合法密码;点击登录 | 登录失败,提示信息符合安全和产品规则 | P1 |
| LOGIN-006 | 密码错误 | 账号存在且状态正常 | 输入有效账号;输入错误密码;点击登录 | 登录失败,账号不建立登录态,错误次数按规则累计 | P1 |
3. 边界、状态和异常用例
| 编号 | 测试场景 | 关键数据 | 预期结果 | 风险说明 |
|---|---|---|---|---|
| LOGIN-007 | 账号长度下限 | 6个合法字符 | 前端和接口均接受输入并进入身份校验 | 防止边界值被错误拦截 |
| LOGIN-008 | 账号长度超限 | 21个字符 | 阻止提交并显示长度限制提示 | 检查前后端限制是否一致 |
| LOGIN-009 | 连续错误达到锁定阈值 | 同一账号连续输入5次错误密码 | 账号进入锁定状态,提示内容符合规则 | 避免暴力尝试和状态更新错误 |
| LOGIN-010 | 锁定期间输入正确密码 | 已被锁定的账号和正确密码 | 仍不能登录,提示账号处于锁定状态 | 检查锁定规则是否真正生效 |
| LOGIN-011 | 网络中断后提交 | 提交前断开网络 | 页面提示请求失败,按钮状态可恢复,不产生错误登录态 | 检查异常恢复和重复提交 |
| LOGIN-012 | 登录态过期后访问受限页面 | 已登录账号,使会话过期 | 访问受限页面时跳转登录页,原地址按需求处理 | 验证会话失效后的权限边界 |
4. 一个错误用例和一个改进用例
错误用例通常看起来很简洁,但无法支持复现。例如:“验证登录功能,正常输入账号密码,预期登录成功。”执行者不知道账号是什么、密码是否过期、环境是否有验证码,也不知道登录成功要通过页面跳转还是接口返回来判断。
改进后的写法如下:
| 字段 | 改进内容 |
|---|---|
| 标题 | 状态正常的有效账号使用正确密码登录成功 |
| 前置条件 | 账号test001已注册,账号未锁定,测试环境认证服务可用 |
| 测试数据 | 账号test001;匹配的正确密码;浏览器为Chrome最新版 |
| 步骤 | 打开登录页;输入账号;输入密码;点击登录;刷新首页 |
| 预期结果 | 进入首页;显示test001对应用户名称;刷新后仍保持登录;无错误提示 |

五、如何判断一条测试用例是否真的合格
1. 用“别人能否独立执行”做第一轮检查
把用例交给没有参与编写的人执行,是非常有效的评审方法。如果对方频繁问“账号用哪个”“正常密码是什么”“这里的成功具体指什么”,说明用例缺少关键上下文。用例不是写给作者自己看的,它应该能够承载必要信息,减少口头传递。
对于复杂流程,不必把所有背景都塞进每条用例。可以把共用的环境、账号、数据和业务规则放在测试数据说明或公共前置条件中,但必须保证执行者能够快速找到它们。
2. 用“结果能否判定”做第二轮检查
预期结果应该尽量包含可观察对象和判断条件。例如“按钮置灰”“页面跳转”“返回错误码”“列表新增一条记录”“短信发送成功”等,都比“系统正常”“符合要求”更容易验证。
如果一个预期结果包含多个独立判断,建议拆成多项。例如登录成功不仅是页面跳转,还可能包含用户名称显示、权限菜单加载、刷新后会话保持。拆分后,失败定位会更准确,缺陷描述也更完整。
3. 用“变更后是否容易维护”做第三轮检查
测试用例不是一次性文档。页面按钮从“登录”改成“进入系统”,通常只需更新操作步骤;但如果账号规则从6至20位改成8至30位,就不仅要改一条边界用例,还要检查所有等价类、接口校验、错误提示和回归数据。
| 变更类型 | 需要重新检查的内容 | 常见遗漏 |
|---|---|---|
| 页面文案变化 | 步骤、提示语、截图或定位信息 | 预期结果仍保留旧文案 |
| 输入规则变化 | 等价类、边界值、前后端校验 | 只更新正常用例 |
| 登录流程变化 | 验证码、跳转、会话和异常恢复 | 遗漏回退和重复提交 |
| 权限规则变化 | 角色、菜单、接口和直接地址访问 | 只测试页面按钮隐藏 |
4. 建立需求、用例、缺陷和版本的追踪关系
当项目规模扩大到100人以上,测试用例如果只保存在个人表格中,很快会出现版本冲突、重复维护和缺陷无法回溯的问题。此时可以使用具备需求、测试、缺陷和版本关联能力的管理平台,统一维护测试资产。
以PingCode这类面向中大型企业及100人以上组织的研发管理平台为例,团队可以将需求与测试用例、执行结果和缺陷建立关联;对于有数据隔离要求的企业,也可以评估私有化部署方案。如果原团队已经使用Jira,还应在迁移前确认字段映射、历史执行记录、附件和权限模型是否能够平滑迁移,而不是只导入用例标题。
工具选型不是测试设计的替代品。平台能够帮助团队追踪关系、分配任务和统计执行状态,但无法自动判断“错误密码达到锁定阈值”是否是关键场景。管理工具解决的是协作与可追踪问题,测试方法解决的是覆盖与判断问题。

六、不同项目情况下,模板应该怎样取舍
1. 小型项目:先保证能执行,不要追求字段齐全
如果项目只有一两名测试人员、版本变化快,建议保留编号、标题、前置条件、数据、步骤、预期结果、状态和缺陷编号。环境可以放在测试任务级别,避免每条用例重复填写。
小团队最常见的问题不是字段少,而是没有统一的预期结果写法。即使模板只有八列,只要每条用例都能复现和判定,也比十几列都填写“无”更有价值。
2. 中大型项目:增加追踪、版本和责任边界
多人协作时,建议增加关联需求、负责人、优先级、测试类型、版本、执行批次和缺陷编号。不同模块可以拥有不同模板,但核心字段名称和优先级规则应尽量统一,否则跨团队统计时会产生口径偏差。
当团队使用PingCode等平台管理研发过程时,可以根据组织权限、部署方式、现有工具和迁移成本进行评估。私有化部署适合对数据隔离、访问控制或合规要求较高的组织;Jira迁移场景则应重点核对历史数据、字段、工作流和权限是否完整,而不能只看导入速度。
3. 高风险系统:把风险和证据写进用例
金融、医疗、能源、政务和企业核心交易系统,需要重点关注权限、审计、数据一致性、异常恢复和操作留痕。此类项目的用例不应只记录页面操作,还应明确接口响应、关键数据变化、日志记录和权限角色。
高风险项目可以增加“风险说明”“验证证据”“审计要求”“回滚条件”等字段,但这些字段必须有实际用途。若执行人员没有权限查看数据库或日志,应提前约定可替代的验证方式,而不是在模板中留下无法执行的检查项。
4. 自动化项目:优先选择稳定、重复、高价值的用例
不是所有手工用例都适合自动化。适合自动化的通常具备以下特征:执行频率高、规则稳定、数据准备可控、结果容易判定、失败后需要反复回归。登录主流程、权限矩阵、关键接口和核心交易链路往往比低频文案检查更适合自动化。
自动化前应先清理用例。步骤模糊、数据不稳定、依赖人工判断的用例,直接转成脚本后只会把混乱固化。一个实用做法是先把用例拆成“数据准备、执行动作、结果断言、清理动作”四部分,再评估脚本实现成本。
5. 需求频繁变化的项目:减少重复,强化风险清单
敏捷项目不适合维护大量与页面细节强绑定的长用例。可以用较短的场景用例描述核心行为,再通过公共步骤、数据模板或检查清单复用内容。每次迭代只更新受影响场景,避免因为按钮文案变化而大面积重写。

七、从新手到专家,能力升级不在于写更多
1. 新手阶段:先写清楚、写得能执行
新手最重要的目标不是掌握所有测试理论,而是能够独立完成一条完整用例。建议先练习输入、步骤、预期结果三部分,并刻意消除“正常”“合理”“符合要求”等模糊词。
每写完一条用例,可以问自己三个问题:别人是否知道用什么数据执行,别人是否知道每一步做什么,失败时是否能准确知道哪一项不符合预期。如果其中一个问题回答不清,就先修改用例,不要急着继续扩展数量。
2. 熟练阶段:开始系统覆盖异常和边界
当能够稳定编写主流程后,应学习等价类、边界值、判定表、状态迁移和错误推测等方法。不同方法适用于不同问题:输入范围适合边界值,角色权限适合判定表,订单状态变化适合状态迁移。
熟练测试人员的明显特征,是不会只围绕页面控件写用例,而是会观察业务状态和系统依赖。例如订单支付不仅要验证“点击支付后成功”,还要验证支付超时、重复回调、金额变化、库存扣减失败和支付后返回页面等场景。
3. 进阶阶段:基于风险安排测试资源
专家级用例设计更关心风险优先级和验证成本。一个核心链路的失败影响可能远高于十个低频页面问题,因此测试资源应该优先投入业务影响大、失败概率高、发现成本高的区域。
风险可以用一个简单模型辅助讨论:风险优先级 = 业务影响分 × 发生可能性分 × 发现困难分。这个公式不是行业统一标准,但有助于团队把“我觉得重要”转化为可讨论的依据。
4. 负责人阶段:建立可持续的用例治理机制
测试负责人需要关注的不只是单条用例质量,还包括重复率、失效率、维护耗时、需求覆盖、缺陷发现能力和回归执行成本。可以按版本或迭代周期做一次轻量复盘,删除长期未执行、重复或已经失效的用例。
我建议团队每个迭代至少检查四项:新增需求是否有对应场景,严重缺陷是否补充回归用例,失败用例是否关联缺陷,变更需求是否更新旧用例。治理不需要复杂会议,但必须形成固定动作。

八、发布前与执行前的两套检查清单
1. 测试用例发布前检查清单
- 每条用例是否有唯一编号和清晰标题。
- 标题是否准确描述验证目标,而不是泛泛写“测试某功能”。
- 是否明确关联需求、用户故事或验收条件。
- 前置条件是否具体到账号状态、角色、环境和依赖服务。
- 测试数据是否可以复现,是否说明生成和清理方式。
- 操作步骤是否按顺序描述,每一步是否只有一个主要动作。
- 是否删除“正常操作”“按要求填写”“符合预期”等模糊表达。
- 预期结果是否包含页面、数据、状态或接口层面的可判断条件。
- 是否覆盖正常、异常、边界、权限和外部依赖场景。
- 优先级是否根据业务影响和风险确定。
- 是否存在重复用例或只改变数据、但验证目标完全相同的用例。
2. 测试执行前检查清单
- 待测版本是否与用例适配,是否存在未同步的需求变更。
- 测试环境是否可用,依赖服务是否已部署。
- 测试账号是否正常、未锁定、权限正确。
- 测试数据是否已经初始化,执行后是否会影响其他用例。
- 高优先级用例是否排在核心回归批次中。
- 失败后是否有明确的缺陷记录方式和严重级别规则。
- 阻塞、未执行和失败是否严格区分。
- 是否保留必要的截图、接口响应、日志或录屏证据。
3. 用例评审时最值得问的五个问题
- 如果输入为空,系统会怎样处理?
- 如果输入刚好位于规则边界,结果是否明确?
- 如果用户没有权限或登录态已经失效,系统是否安全地拒绝?
- 如果接口超时、网络中断或用户重复点击,系统能否恢复?
- 需求改变后,这条用例是否能快速定位需要修改的部分?
九、常见误区与专业取舍
1. 误区一:把测试用例写成用户操作说明
用户操作说明强调“怎么使用功能”,测试用例强调“如何验证功能在不同条件下是否满足要求”。两者都包含步骤,但目的不同。操作说明通常只描述正确路径,测试用例必须包含失败路径、边界和判断标准。
如果一份用例完全可以直接复制到产品帮助中心,它很可能缺少测试所需要的异常和判定信息。测试用例需要记录系统面对不同输入和状态时的行为,而不是只教用户怎么点按钮。
2. 误区二:所有字段都强制填写
强制填写字段过多,会导致测试人员为了提交记录而填入大量“无”“不涉及”或重复内容。结果是表格变得冗长,却没有提供更多证据。
更合理的做法是区分必填字段和条件必填字段。编号、标题、前置条件、步骤、预期结果通常是必填;缺陷编号只在失败时必填;接口返回字段只在接口测试中必填;数据库校验只在需求或测试目标明确要求时必填。
3. 误区三:用例写得越细越专业
过度细化会造成另一个问题:页面一个按钮移动位置,几十条用例都需要修改。对于稳定且通用的步骤,可以通过公共步骤或前置条件复用;对于风险高、容易出错的步骤,则应该保留足够细节。
细化程度应由三个因素决定:执行者是否熟悉系统、步骤失败后定位成本有多高、该步骤是否可能影响后续判断。新团队或关键交易流程可以写得更细,熟悉系统的低风险回归场景则可以适当压缩。
4. 误区四:把P0、P1、P2当成统一标准
P0、P1、P2只是常见分级方式,不是所有组织都必须采用的行业标准。有的团队使用高、中、低,有的团队按照阻断级、核心级、一般级划分。关键是定义一致,并让执行顺序与业务风险匹配。
| 取舍问题 | 优先选择 | 不建议选择 |
|---|---|---|
| 字段太多还是太少 | 保留能改变执行和判断的字段 | 为了形式统一强制填无关字段 |
| 步骤太细还是太粗 | 对高风险、易失败步骤写细 | 所有页面动作都拆成相同粒度 |
| 用例多还是少 | 保留独立风险和独立判断 | 用数量证明测试充分 |
| 手工还是自动化 | 按稳定性、频率和收益决定 | 把所有用例机械自动化 |
| 工具还是表格 | 按协作规模、追踪需求和合规要求决定 | 先买工具再想测试方法 |

十、下一步怎么把模板真正用起来
1. 先选一个真实模块完成试写
不要一开始就试图为整个系统建立完美模板。建议选择登录、订单创建、文件上传或商品搜索等边界清晰的模块,使用本文字段完成10至20条用例,再邀请产品、开发和另一名测试人员共同评审。
评审时重点记录三类反馈:执行者缺少什么信息,产品认为哪些场景不属于需求,开发认为哪些预期结果无法从当前测试层级验证。经过一次真实执行后再调整模板,通常比闭门设计表格更有效。
2. 建立最小可用测试模板
第一版建议只保留以下字段:编号、标题、模块、关联需求、优先级、前置条件、测试数据、步骤、预期结果、实际结果、状态和缺陷编号。等团队确实遇到版本追踪、环境差异或审计问题时,再增加相应字段。
模板上线后,统计的重点不应是填写完成率,而是执行失败原因、用例重复率、回归耗时和缺陷发现位置。如果用例填写率很高,但执行时仍然大量依赖口头说明,说明模板需要继续改进。
3. 用一轮回归验证模板价值
可以选择一次版本回归做前后对比,记录四项数据:执行总耗时、因信息不清产生的询问次数、无法复现的失败次数、执行后新增的遗漏场景。数据不需要复杂,关键是保持统计口径一致。
| 观察指标 | 记录方式 | 改进信号 |
|---|---|---|
| 人工澄清次数 | 记录执行期间因用例不清产生的询问 | 次数下降说明可执行性提升 |
| 回归耗时 | 统计同一范围内的实际执行小时数 | 耗时下降但风险覆盖不下降 |
| 阻塞用例数量 | 区分环境、数据和需求阻塞原因 | 数据与环境问题减少 |
| 遗漏场景数量 | 记录测试后补充的新场景 | 边界和异常遗漏减少 |
| 历史用例失效率 | 统计因版本变化而失效的用例 | 维护机制更及时 |
4. 什么时候应该引入测试管理平台
当团队出现以下情况时,单纯使用个人表格往往不够:同一需求被多个团队重复测试,版本执行结果无法统一,缺陷与用例关联困难,私有数据不能放在公共环境,或者组织需要审计和权限分级。
这时可以评估PingCode等研发管理平台,重点查看需求、测试用例、执行批次、缺陷和版本之间的关联能力,以及私有化部署、权限管理和现有工具迁移能力。对于计划从Jira迁移的团队,应先做小范围试迁移,验证字段、附件、历史记录、工作流和权限,而不是只依据产品宣传判断“能否迁移”。
5. 形成团队自己的用例规范
最终应沉淀一页到三页的团队规范,说明字段定义、优先级规则、命名方式、异常场景最低覆盖要求、缺陷关联方式和需求变更后的维护责任。规范越短越容易执行,但必须包含团队真正需要统一的内容。
我更建议把规范写成“判断规则”,而不是长篇口号。例如“预期结果必须包含至少一个可观察对象”“P0用例必须覆盖核心业务成功路径和关键失败路径”“需求边界未确认时不得直接判定缺陷”。这样的规则更容易被评审和执行。

十一、常见问题解答
1. 测试用例和测试点有什么区别
测试点是需要关注的验证方向,例如“验证密码错误处理”;测试用例是可以直接执行和判断的具体记录,例如“输入有效账号和错误密码,点击登录,检查错误提示、登录态和错误次数是否符合规则”。一个测试点通常可以拆成多条测试用例。
2. 一条测试用例应该写多长
没有统一字数标准。只要执行者能够独立完成操作并判断结果即可。主流程较短时可以写成四五步;复杂交易流程应按业务节点拆分,并通过前置条件、公共步骤或数据说明减少重复。
3. 是否每条用例都要写数据库校验
不需要。页面功能用例重点验证用户可感知行为和需求结果;接口或数据一致性测试可以增加数据库、消息或日志校验。是否写内部数据,应根据测试目标、权限和验收要求决定。
4. 测试用例越多,覆盖率越高吗
不一定。重复用例会增加数量,却不会增加风险覆盖。更有价值的是统计需求覆盖、场景覆盖、边界覆盖、权限覆盖和高风险链路覆盖,并结合缺陷发现能力和维护成本进行判断。
5. 测试用例可以直接转成自动化脚本吗
部分可以。稳定、重复、高频、结果容易断言的用例更适合自动化;依赖视觉判断、规则频繁变化或数据准备成本很高的用例,通常需要保留手工验证或先改造测试设计。
6. 什么时候应该删除旧用例
功能下线、需求完全重写、用例与其他用例重复、执行结果长期无法复现或验证目标已经不存在时,可以标记废弃。建议保留历史版本和废弃原因,不要直接无痕删除,以免后续审计或缺陷追溯时失去依据。
十二、结语:测试用例的上限,是团队的判断力
测试用例模板只是外壳,真正决定质量的是背后的判断逻辑:你能否从一句需求中识别出输入规则、状态变化、权限边界和外部依赖;能否把风险转化为可执行步骤;能否用明确结果判断系统是否满足预期。
我的建议是先不要追求“专家级模板”。今天选择一个真实模块,按照本文10个步骤写出一组用例;明天找一名没有参与编写的人执行;下一次迭代统计澄清次数、回归耗时和遗漏场景。经过两三轮反馈,你会得到一套真正适合自己团队的模板。
一份好用的测试用例,不是把所有可能性都写进去,而是在可接受的成本内,让最重要的风险被准确验证、被清楚记录,并能在下一次版本变化时快速复用。这也是从新手走向专家最可靠的路径。
常见问题解答(FAQ)
1. 测试用例模板中哪些字段是必填的?
我刚开始写测试用例时,曾经把编号、标题、步骤、预期结果全部填上,却还是被同事指出“执行不了”。我想知道,测试用例到底哪些字段真正影响执行质量,哪些字段只是团队管理需要,是否有必要把表格做得很复杂?
我在评审登录、订单和文件上传模块时,发现最容易被忽略的不是字段数量,而是字段之间能不能形成完整的执行链。最小可用模板至少应包含:用例编号、用例标题、前置条件、测试数据、操作步骤、预期结果和执行状态。缺少其中任何一项,后续复现或判断都可能出现分歧。建议把字段分成“执行字段”和“管理字段”。
执行字段直接决定测试能否完成;管理字段用于需求追踪、优先级、版本和缺陷关联。小团队可以先使用前7个核心字段,等项目开始多人协作或需要回归统计时,再增加需求编号、优先级、环境、缺陷编号等字段。
字段类别建议字段判断标准 执行字段前置条件、测试数据、步骤、预期结果其他人能否独立执行并判断通过 识别字段编号、标题、所属模块能否快速定位和沟通 管理字段优先级、版本、需求、缺陷编号能否支持回归和追踪 我不建议一开始就设计二十多个字段。
字段越多,维护成本越高,测试人员越容易为了“填完整”而复制无效信息。更稳妥的做法是先用一条登录用例试填:如果新同事只看表格就能复现,并且能明确判断成功或失败,这套模板才算合格。
2. 如何按照10个步骤从需求中设计出完整测试用例?
我以前拿到需求后,通常直接从“输入正确数据,点击提交”开始写,结果测试执行时才发现遗漏了空值、边界、权限和网络异常。我想知道,怎样把一段看似简单的需求,系统地转换成一组覆盖正常、异常和边界场景的测试用例?
我实际拆解需求时,不会先写操作步骤,而是先把需求改写成“条件,动作,结果”。例如“用户输入有效账号和密码后可以登录”,至少要继续追问:有效账号如何定义、密码错误怎么处理、账号被禁用是否允许登录、连续失败是否锁定、登录成功后跳转哪里。完整流程可以压缩为10步:阅读需求并提取验收条件;明确测试范围;
拆分测试场景;设计等价类和边界值;补充权限、兼容性和安全场景;准备前置条件与数据;编写操作步骤;明确可判定的预期结果;设置优先级并评审;执行后关联缺陷并维护。先列出业务规则,而不是页面动作。把规则拆成正常、异常、边界和依赖场景。为每个场景补充可复现的数据。最后才把场景写成独立用例。
以密码长度要求8至20位为例,不能只写一条“输入合法密码”。至少应覆盖7、8、9、19、20、21位,并根据需求确认空格、特殊字符和中文字符的处理方式。这里的关键不是机械增加数量,而是测试规则发生变化的位置。
我通常会在写完第一版后做一次“反向检查”:逐条对照需求中的每个动词和限制条件,确认它们是否至少对应一条可执行用例。这个方法比单纯凭经验补场景更可靠,也更容易在评审会上解释为什么要测某一条。
3. 怎样判断一条测试用例写得好不好?
我见过一些测试用例步骤写得很长,执行人员却仍然需要反复询问;也见过预期结果只写“符合预期”,导致失败后无法判断责任边界。我想知道,除了看字段是否齐全,还有没有一套更实际的标准来判断用例质量?
我判断用例质量时,主要看三个问题:别人能不能执行、执行后能不能判定、需求变化后能不能维护。字段齐全只是起点,如果步骤依赖作者脑中的背景知识,或者预期结果无法观察,这条用例仍然不具备真正的测试价值。可以用下面的“六项检查法”做评审:目标是否唯一;前置条件是否可验证;数据是否可复现;
每一步是否只有一个主要动作;预期结果是否具体;失败后是否能关联到需求或缺陷。六项中有两项以上回答“不确定”,我通常会要求修改,而不是直接进入执行阶段。
低质量写法问题改进方向 正常输入并提交数据和动作不明确写明输入值、控件和提交动作 系统提示成功无法判断成功表现说明提示文案、跳转和状态变化 检查数据正确检查对象不清楚明确页面、接口或记录中的字段 我还会特别关注“步骤粒度”。步骤太粗,新人无法复现;
步骤太细,又会把页面上每次鼠标移动都记录下来,导致维护成本暴涨。通常一个步骤应对应一个有测试意义的动作,像“输入账号”“输入密码”“点击登录”可以分开,但“移动鼠标到按钮上”通常没有必要记录。如果团队想量化评审结果,可以给每条用例按六项各打0或1分。
总分4分以下优先返工,4至5分可执行但需要观察,6分说明结构较完整。不过这个分数只是辅助工具,不能替代测试人员对业务风险的判断。
4. 测试用例模板应该用Excel,还是用测试管理工具?
我目前用表格维护测试用例,开始时很方便,但需求和版本一多,就出现重复用例、缺陷编号丢失和执行状态混乱的问题。团队规模不大,我不确定什么时候值得迁移到某项目管理工具,也担心工具字段太复杂反而降低效率。
我的判断标准不是“哪个工具更专业”,而是当前协作成本是否已经超过手工维护成本。单人或两三人的短期项目,用表格快速验证模板通常更划算;当用例需要多人并行执行、反复回归、关联需求和缺陷,或者每周都要统计版本结果时,继续靠表格往往会把时间消耗在查找和同步上。
使用方式适合场景主要风险 Excel或在线表格小团队、一次性测试、模板设计阶段版本冲突、状态覆盖、关联关系弱 某项目管理工具多人协作、持续迭代、需求与缺陷联动初始配置复杂、字段过多 自动化测试平台稳定回归、接口或重复执行场景维护脚本成本高,不能覆盖探索性测试 我踩过的一个坑是过早迁移:团队还没有统一用例写法,就先配置了大量字段和流程,结果大家只是把表格内容原样搬进去,缺陷并没有减少,填写时间却增加了。
正确顺序应是先用10至20条真实用例验证字段,再确定哪些字段必须保留,最后配置工具和权限。无论选择哪种方式,都建议保留一条“变更规则”:页面文案变化只更新预期结果,输入规则变化要重做边界用例,流程变化则重新评估整组用例。工具只能帮助追踪和协作,不能替代需求分析与风险判断。
核心关键词
原创文章,作者:飞飞,如若转载,请注明出处:https://worktile.com/solution-1/archives/42777
读者评论
文章把“用例写得多”和“覆盖得好”区分得比较清楚,尤其是边界、权限、会话过期和网络异常这些场景,对登录模块评审有实际参考价值。
模板字段和登录案例较完整,适合新手建立基本框架。不过不同团队的流程、工具和系统复杂度差异较大,落地时仍需按项目范围适当删减字段。
文中强调需求不明确时先确认,而不是自行假设,这一点很重要。等价类和边界值的示例也比较直观,但后续自动化维护和接口用例部分还可以进一步展开。