
简介一份面向软件测试人员与技术管理团队的单文档指南聚焦测试用例编写规范与注意点帮助解决编写凭惯性、设计逻辑固定、划分颗粒度不一、可读性差等常见问题。文档按需求分析、业务流程分析、系统设计分析、用例编写、用例完善五步展开并系统梳理测试需求与用例的路径层级、前置条件、操作步骤、预期结果、优先级、用例类型与属性等要素同时覆盖测试需求划分、用例划分、编写要求、测试类型、等价类划分、边界值分析、状态迁移等设计方法及用例维护与风险建议便于团队统一模板、补齐知识空缺并提升测试设计水平。压缩包仅含1个docx文件约494KB结构紧凑、便于查阅。已有553人学习适合需要建立测试设计规范、做用例评审或新人培训的测试从业者参考。1. 从「凭惯性写」到有章可循这份测试用例编写指南要解决的是什么同一个需求三个人写出三套用例一个按页面写一个按接口写还有一个把三个检查点塞进一条用例里。评审会上谁也说服不了谁执行时又发现该测的边界一个没覆盖。这不是能力问题是缺一把统一的尺子——测试用例编写指南要解决的正是「用例编写注意点说不清、颗粒度对不齐、新人上手全靠悟」这三件事。它把需求分析到用例维护拆成五步把测试需求压到五个字段、测试用例压到十二个字段再按测试对象给出划分依据、编写要求和设计方法。适合两类人一类是要给团队立规范的测试负责人一类是要交测试方案、课程设计或毕业设计的同学——照着这套结构填至少不会在「用例怎么划分」这一节卡住。2. 五步编写流程从需求分析到用例完善的输入输出闭环测试用例写得乱八成不是写的时候乱而是前面几步没做。这套指南把编写过程拆成五个步骤每一步都规定了输入、处理和输出输出的东西直接喂给下一步。把这条链走一遍用例的覆盖范围基本就有了骨架剩下的才是往里填肉。2.1 需求分析与业务流程分析把文档拆成可验证的检查点需求分析是第一步输入只有一样东西业务需求说明书。处理动作是按业务流程或功能模块分类输出是「测试需求 检查点清单」。这里最常见的误解是把需求条目原样抄一遍就当测试需求——需求写「支持用户注册备案」用例写「验证用户注册备案」这条用例等于没写。真正要做的是把每一个需求细节拆成可判定的检查点输入项有哪些、必填哪几个、长度上限多少、重复注册怎么提示、成功后落到哪张表哪个字段。拆到这一层用例还没开始写但测试设计已经完成了一半。我一般会要求检查点必须能用「是/否」回答写不成判断句的说明还没想清楚。第二步是业务流程分析输入是业务背景知识和被测系统、模块的实际业务流程。很多系统里都存在需求文档没写、但实际操作必须走的路径比如某后台管理系统里「用户注册备案」这个菜单需求只写了新增和查询实际业务里还有一条「备案被驳回后重新提交」的支线这条支线不测上线后就是第一个投诉点。所以这一步的处理重点是整理主流程、备选流程、数据流向、关键判断条件以及完成该操作的非必要条件。输出作为对测试需求的补充检查点。这几条补充需求覆盖不到但业务上绕不开恰恰是最容易漏的部分。步骤输入处理输出需求分析业务需求说明书按流程或功能分类逐条拆细节测试需求与检查点清单业务流程分析业务背景知识、系统业务流程梳理主流程、备选流程、数据流向、关键判断条件需求未提及但需覆盖的补充检查点系统设计分析概要设计、详细设计、接口设计、数据库设计分析改动点与影响范围逻辑分支检查点、回归范围用例编写测试需求覆盖业务流程场景与系统逻辑分支功能、边界、异常、接口、信息安全用例用例完善评审意见、变更、执行反馈、生产问题判断是否触发更新修订后的用例集这张表建议直接放进方案文档评审时对着它问「这一步的输出在哪」比空谈流程有效得多。2.2 系统设计分析与用例编写盯住改动点和影响范围第三步系统设计分析是整套流程里最容易被跳过、也最容易出事的一步。输入是系统设计、接口设计和数据库设计文档处理动作是针对系统为实现业务需求所做的主要改动点及影响范围做全面分析输出是把改动功能支持的所有逻辑分支、以及影响范围的回归测试一并加入测试需求检查点。举个具体场景某系统把「登录接口」的入参校验从后端校验改成前端加后端双重校验。需求文档只会写「提升登录安全性」但设计文档里写着手机号字段新增了格式校验、验证码有效期从 5 分钟调整为 10 分钟、连续失败 5 次锁定账户。这三条如果不从设计文档里挖出来用例就只会覆盖「账号密码正确能登录」这一条正向路径。这一步还有一层价值是划回归范围。改动点定了依赖它的上游调用方、下游数据表、关联的定时任务都要进回归清单。我的习惯做法是画出「改动点—调用方—数据表」三列改一行填一行填不满说明设计文档没读透。第四步才是真正动笔写用例。输入是前面攒下来的测试需求处理原则是尽量覆盖生产上的所有业务流程场景和系统逻辑分支除了正向测试要加大对边界、异常的关注。输出要求用例类型至少覆盖功能正确性测试、边界测试、异常测试、接口测试、信息安全测试。这里有个排序技巧先写业务流程类用例把主流程和每条备选流程跑通再补功能点类逐个输入项做有效性和边界最后补异常和信息安全。顺序反了很容易在细节里泡一天回头发现主流程还缺一条。2.3 用例完善四类必须回写更新的触发场景用例写完不等于结束。这套指南明确列了四种必须触发更新维护的场景我认为这是整份文档最该被抄进团队规范的部分评审过程中发现测试用例存在问题系统新增功能或需求变更测试过程中发现设计用例时考虑不周存在遗漏点系统出现生产问题经分析确认属于测试遗漏。第四条尤其关键。生产上出的每一个问题都是一次免费的用例补充机会但多数团队只改代码不改用例于是同一个坑第二年再踩一次。通常的做法是生产问题定位完成后必须同步提一条用例补充单写清楚「原有用例为什么没覆盖」「新增哪个检查点」并且在修订记录里留痕。修订记录本身也要规范。文档头部有版本、修订日期、修订人、修订内容、审核人五列版本号按 V1.0、V1.1 递进每次修订内容写清改了哪一章哪一条。看起来很形式但等到半年后有人问「这条规则什么时候加的、为什么加」这份记录就是唯一的后悔药。3. 要素与粒度测试需求五字段、测试用例十二字段与两级划分原则用例模板字段越多越难填越少越说不清。这套指南的做法是把「测试需求」和「测试用例」分成两层需求层管「测什么」用例层管「怎么测」。两层字段各自固定不允许多人多套模板这是可读性的底线。3.1 测试需求五个字段与路径层级怎么定测试需求固定五个字段需求路径层级、需求名称、需求描述、设计人、关联系统。需求路径是结构目录通常写成「/项目名称/一级需求/二级需求/……/N 级需求」的形式。它的作用是让几千条用例挂在一棵树上执行时能按模块整体拉起出问题时能快速定位影响面。需求名称是对测试对象的简短描述控制在能一眼看懂的粒度。需求描述是重点要把针对这个测试对象的检查点一条条列出来而不是复述需求文档。设计人写编写者关联系统写被影响的系统名。关联系统这个字段常被忽略但在多系统联调的项目里它是判断回归范围的直接依据。粒度上有个判断标准一个需求描述里的检查点应该能在一个执行轮次内全部验证完。如果一条测试需求挂着二十几个检查点、涉及三个模块说明它该往下拆一层。3.2 测试用例十二个字段里哪些是硬约束测试用例的十二个字段是用例路径、测试名称、用例描述、前置条件、操作步骤、预期结果、设计人、优先级、用例类型、用例属性、测试方式、执行次数。用例路径在需求路径基础上追加需求名称即「/项目名称/一级需求/……/N 级需求/需求名称/」这样一条用例既能顺着需求树找到也能反查出它覆盖了哪个检查点。前置条件是执行前提操作步骤是执行动作预期结果是执行完之后的程序表现——这三个字段是用例的主体也是最容易写歪的地方下一章单独展开。优先级分高、中、低三级。高对应系统基本功能和关键路径比如正常流程、页面元素的正常输入中对应功能完善类比如异常流程、异常输入低对应体验类、少用功能、辅助功能比如纯页面元素显示。三级足够了再细分没人会在执行时看。用例类型按测试对象分类取值包括流程类、功能点类、报表统计类、界面类、报文接口类、批处理、其他类。用例属性只有正常和异常两种标的是这条用例检测的方向。测试方式分手式和自动化。执行次数一般按轮次约定用在需要反复执行的场景比如回归轮次或压测重复次数。这十二个字段里有几个是可以留空或填默认值的比如报表统计类的用例、纯界面检查的用例操作步骤可能就一步。但测试名称、前置条件、操作步骤、预期结果、优先级这五个不能空空一条就退回去重写。3.3 划分原则按测试对象分类定颗粒度颗粒度过粗会漏测过细会让维护成本翻倍这套指南的解法是先给测试对象分类再对每一类给出划分方式。核心原则一句话尽量做到一个测试需求检查点对应一条用例。测试对象分类测试对象用例划分方式前端功能新增菜单、菜单功能修改一个检查点一条用例页面要素检查、列表查询分页删除、表单输入项检查输入项多时可按输入区拆分业务流程全业务流程一个检查点一条用例主流程分支、备选分支各自独立成条后台功能单功能、接口原则上一个检查点一条用例入参有效性等同类校验可合并批处理批处理节点一个检查点一条用例按查询范围、分页处理、数据转移结果拆分后台流程全流程、步骤分解全流程一条、每个步骤分解一条数据埋点页面埋点每个页面一条用例兼容性全流程兼容按指定测试维度划分每个细分项一条如操作系统维度、机型维度、浏览器维度配套还有几条说明值得抄进规范同一项目要区分多系统或多需求时可以把系统名称或需求名称作为一级需求需求描述要把末级需求的检查点全部列出检查点太多就继续细分同一功能的不同入口可以合并成一个需求一个功能的正常流程对应一个检查点一个功能里有多个正常场景或多个异常流程要分别列多个检查点同一功能需要多份不同数据时原则上分别列检查点如果这些数据必须一次操作同时处理才单独列一个组合检查点。最后这条划清了「拆分」和「合并」的边界合并的前提是逻辑上不可分而不是写起来省事。3.4 步骤与预期结果的对应关系一对一、多对一、多对多怎么落同一条用例里操作步骤和预期结果的分支数量可能对不上这套指南给了三种允许的组合和一个明确不建议的组合。一对一最简单一步操作对应一个预期结果分支分支里只有一个检查点。这是最推荐的写法。多对一多种操作对应同一个预期结果分支。比如分别删除只有一级的分类目录、多级分类的根目录、多级目录下的子目录预期结果都是「可成功删除未挂用例的执行集」。这种写法成立的前提是几个操作的行为完全等价。多对多多个操作对应多个预期结果分支用相同的编号建立映射。比如添加分类时分别输入空值、超长值、重复值对应五条不同的提示信息步骤编 1 到 5预期结果也编 1 到 5一一对应。明确不建议的是两种一个操作对应多个预期结果分支以及一个预期结果分支里塞多个检查点。前者会让执行人不知道以哪个分支判定通过后者一旦中间某个检查点失败整条用例判失败缺陷定位就得靠人肉回溯。遇到这种结构正确做法是按预期结果分支拆成多条用例。一条具体的对照删除测试执行集的用例如果预期结果写「可成功删除执行集包括目录和其下所有执行记录用例管理列表数据仍存在且状态不变」这就是一个分支两个检查点拆开写会清晰得多——一条验证执行集删除一条验证用例数据不受影响。4. 编写要求与设计方法让用例可读、可执行、可回归4.1 名称、前置条件、操作步骤、预期结果的硬性要求测试名称要简洁易懂直接通过名称就能识别测试对象和检查点不能包含具体操作步骤和逻辑。好的写法是「放款失败-合同冻结」这种「场景-结果」结构坏写法是「输入合同号点击查询按钮后检查列表是否返回数据」——把步骤写进名称等于把用例写了两遍。前置条件有三条硬规矩有特殊账号权限要求、需要数据准备或前置操作的必须完整列出用例之间不允许相互依赖不能把其他用例当作前置条件前置条件要写到别人拿着就能复现的程度。操作步骤要清楚描述操作入口、与测试点相关的输入要素、按钮、运行的任务以及操作顺序。步骤和预期结果的分支对应关系按上一节的一对一、多对一、多对多处理原则上不允许一对多。还有一条最容易被违反操作步骤里不能包含检查结果。「点击删除检查是否删除成功」这种写法把检查动作混进了操作里执行时到底算步骤还是算结果说不清。预期结果要把检查点完整列出。前端操作成功或失败应包含页面显示、提示信息、后台数据存储、前后端数据一致性检查涉及后台数据存储或变更的要明确具体数据表记录和关键字段取值变化提示信息要写清关键检查内容而不是笼统写「系统给出合理提示」后台系统测试和涉及信息安全的前端操作必须包含输出日志和后台数据存储结果的检查。如果一条预期结果分支包含多个步骤先把步骤按序列出再用编号把检查点和它依赖的前置步骤关联起来。同样预期结果里不能包含操作步骤。前后端一致性这条我要多说一句。很多用例只写「页面提示添加成功」不写数据库校验结果前端展示正常、后台根本没落库的问题一路漏到生产。凡是涉及新增、修改、删除的操作预期结果里都应该有一句「检查前端展示数据与后台对应表新增记录一致」。4.2 测试类型与用例类型两套分类别混着用指南里列了十二类测试类型功能测试、接口间测试、信息安全测试、关联性测试、回归测试、数据库测试、压力测试、操作友好性测试、效率测试、兼容性测试、数据移植测试、安装测试。这十二类是「测什么维度」而用例类型那七类流程类、功能点类、报表统计类、界面类、报文接口类、批处理、其他类是「挂在哪个对象上」。两套分类经常被混用写出来的用例类型五花八门起不到筛选作用。我的处理方式是用例类型只从七类里选测试维度写进用例描述或用例属性里需要筛选时按标签查。其中几个类型在方案里容易被写空。关联性测试针对的是不涉及代码改动、但与被改动功能有依赖或调用关系的功能判断依据就是前面系统设计分析里画的那张影响范围表。数据移植测试关注迁移前后数据量一致性、数据库表结构变化以及迁移后数据的业务逻辑回归。安装测试要覆盖首次安装、升级安装、完整安装和自定义安装以及异常情况下的安装表现。这三类如果方案里只写名字不写检查点答辩时基本一问就露。4.3 六种设计方法的适用边界指南列了六种设计方法每一种都有它擅长的场景也都有被滥用的风险。功能正确性测试是打底输入用户实际数据验证系统是否满足需求规格说明书的要求用例首先要保证业务需求说明书里的各项功能正常实现。没有这一层后面所有方法都是空中楼阁。异常测试的思路是模拟一个不了解产品操作的客户执行任意操作。典型场景是所有输入框都输入特殊字符或者前端限制长度与数据库字段长度不一致时会发生什么。这条最容易翻车的地方在于只测前端提示、不测后台是否真的拦截。边界值测试取刚刚小于、稍小于、等于、刚刚大于、稍大于五个点数据集中在边界附近选取。像利率管理里「利率浮动比例值边界值 0」这种0 就是必须单独立一条用例的点。等价类划分把所有可能的有效和无效输入数据划分成若干等价类每类取一个代表值。它省事但前提是等价类划对了划错等于批量漏测。错误推测依赖经验和直觉参照以往系统出过错的地方做同类验证。典型场景是分页查询分页、文件分页和金额四舍五入。这类用例在方案里不好写因为说不出推导过程我的做法是把它单独归到「历史缺陷回归」一类标注来源缺陷编号评审时反而更有说服力。因果图分析针对输入条件的组合、约束关系和输出条件的因果关系适合检查输入条件涉及多种组合的情况。登录页面就是经典例子验证码、身份证号、姓名、密码几个条件的组合靠人脑穷举很容易漏。六种方法不是六选一是针对不同测试对象组合使用。流程类用例以功能正确性为主功能点类用例以等价类加边界值为主接口类用例以异常加因果图为主。5. 避坑用例评审里被退回最多的五个问题评审会上被打回来的用例原因基本集中在五类。这几条是我踩过的坑写出来供参考。5.1 结构与依赖类问题用例之间互相做前置条件。现象是执行时 A 用例没跑通B 用例直接卡住无法执行。原因通常是图省事把「先创建一条数据」这件事写成了「前置条件执行用例 XXX」。解决方式是把数据准备独立出来能通过接口或脚本造数的写清造数规则必须手工造的把操作步骤完整写进前置条件而不是指向另一条用例。用例之间一旦有依赖执行顺序就被锁死后面想并行执行或者挑着跑都不可能。操作步骤里混进了检查结果。现象是步骤一栏写着「点击保存检查是否保存成功」预期结果一栏空着或者写「保存成功」。原因是写的时候边想边写没有区分动作和判断。解决方式是先写完所有动作再统一补检查点检查点一律下沉到预期结果。步骤只描述「点哪里、输什么、按什么顺序」判断全部留给预期结果这样执行人才能明确知道在哪一步做判断、判断标准是什么。一个预期结果分支塞多个检查点。现象是执行时前面的检查点通过了、后面的没通过整条用例判失败提缺陷时说不清是哪一块出的问题。原因还是图省事把「删除成功」「目录及其下用例记录一并删除」「用例管理列表数据不受影响」三件事写成一条。解决方式是按预期结果分支拆成多条用例一条只验证一件事。拆完用例数量会涨但缺陷定位速度和回归时的可维护性会明显好转。5.2 覆盖与维护类问题颗粒度失控要么太粗要么太细。太粗的表现是一条用例覆盖一个模块执行时全靠执行人自由发挥不同人跑出不同结果太细的表现是一个页面拆出几十条用例改一个字段名要改二十处。根因是没有按测试对象分类套用划分原则全凭手感。解决方式是先判定这条用例属于哪一类测试对象再对照划分表定颗粒度前端功能按检查点拆业务流程按分支拆数据埋点按页面拆兼容性按维度拆。分类定了颗粒度自然就定了。需求变更后用例不回写。现象是版本上线前跑了一轮回归全绿结果新逻辑上线当天就出问题——因为回归跑的是三个月前的用例集。原因是团队只规定「要维护」没规定「什么时候必须维护」。解决方式是把四类触发场景变成硬性流程节点评审有问题、需求变更、执行中发现遗漏、生产问题确认遗漏任意一条触发就必须提用例修订并同步更新版本号和修订记录。这条规矩定下来以后最直接的变化是每次生产问题复盘都会多出一个动作——翻用例看为什么没覆盖。6. 验收与答辩一套用例算不算合格怎么判用例集交上去怎么证明它合格我的做法是不看总量看四件事需求覆盖率、字段完整率、划分一致性、可执行性。这四项都能抽样验证评审会上十分钟就能出结论。检查项合格标准判定方式需求覆盖测试需求检查点与用例一一对应无孤儿检查点随机抽 10 条测试需求反查是否有用例覆盖字段完整名称、前置条件、步骤、预期结果、优先级五项无空缺全量筛空值字段划分一致同类测试对象的用例颗粒度无明显差异抽同类对象各 5 条对比结构可执行执行人仅凭用例可复现无需口头补充换一个人试跑 3 条用例答辩或评审时最容易被追问的两个点是「颗粒度怎么定的」和「覆盖怎么证明的」。第一个问题用第 3 章的划分表和「一个检查点一条用例」原则回答说清哪类对象按什么维度拆。第二个问题不要答「都覆盖了」而是现场抽一条测试需求把它的检查点清单和对应用例逐条对上对上几条比说十句都管用。还有一个加分动作是讲一个闭环案例某次生产问题暴露了某个检查点没覆盖复盘后补了哪条用例并在修订记录里留了痕。这个故事能同时证明三件事——流程是活的、维护机制在跑、团队真的在从缺陷里学习。比任何覆盖率数字都有说服力。血泪经验是评审前一定自己先抽 10% 的用例反查需求把那些「需求写了但没对应用例」的检查点找出来。这一步花不了半小时但能挡掉评审会上最尴尬的沉默。从那以后我每次交付用例集之前都强制走一遍抽检和反查宁可自己先难堪一次。希望帮到你。本文还有配套的精品资源点击获取