测试规范
公开教程 · 无需登录

测试规范

测试规范回答四个问题:写什么测试、放在哪里、怎么运行、怎样算通过。它的输入是规约里的场景(Scenario)——用例清单应当是场景清单的镜像,规约改了,用例必须跟着改;两者脱节时,测试通过与否就不能说明任何问题。

1这一页管什么

测试的范围、组织与通过判定写在这里;断言怎么写、框架怎么用不属于这里。

  1. 管测试的来源、组织与通过判定。层次划分、用例来源、三类组织方式、数据隔离、一键运行、通过门槛。
  2. 不交由这一页。断言如何书写、框架如何使用属所选语言的通行做法;越权类用例的内容在安全开发规范页。
  3. 两种落法。目录、命名、通过门槛这类常驻约束写进规则;「按规范补测试」是一个按场景执行的流程,写成技能。
对应的课程知识点:测试金字塔与测试层次划分、需求到用例的可追溯矩阵(traceability matrix)、等价类划分与边界值分析、测试替身(test double)、变异测试的思想,以及持续集成中的质量门禁(quality gate)。本页是五类中唯一明确要求「规则 + 技能」配合的:规则保证放对位置,技能保证每次变更都补得上。

2规范条目

十二条,重点是数据隔离、缺陷判定口径与通过判定——这三条决定测试结果是否可以被信任。

条目要写清什么,为什么这样规定怎么检查
测试层次单元测试覆盖业务规则,接口测试覆盖每条能力的正常与失败路径,端到端只覆盖主路径。层次错位会让反馈周期随规模线性变长统计各层用例数量;主路径之外出现端到端用例即为层次错位
用例来源每个场景至少对应一组用例,用例与场景之间可双向追溯。写不出来源的用例通常是顺手写的形状检查场景清单与用例文件逐一比对
三类组织用例按正常路径 / 失败路径 / 边界归组;失败路径的数量不少于规约列出的条数。边界值来自等价类划分的两端目录结构与命名核对;缺一类即判未完成
数据隔离测试使用独立的数据实例或模式(schema);每条用例运行前后自行清理;不依赖执行顺序与残留数据随机化执行顺序,结果应保持一致
外部依赖外部服务与时钟用可注入的测试替身;不访问真实外部服务,不依赖真实时间断开网络后测试仍应全部通过
一键运行命令、所需环境变量、退出码、报告位置写进 README;一次命令执行完全部测试。不能被复现的执行过程无法作为验收依据新成员按 README 执行一次
通过判定失败即以非零退出码阻断;不得保留「已知失败」清单;跳过用例必须写明理由并登记构建结果含失败用例时判定未通过;跳过用例数只减不增
断言有效性的判据判据只有一句:改坏被测逻辑,这个用例会不会变红。这是变异测试思想的轻量用法——只断言形状(不报错、长度相等)的用例在缺陷面前保持沉默对被测逻辑做一次等价的破坏,检查用例是否失败
缺陷判定的信号口径先写明本系统用哪套信号——响应中是否有独立于 HTTP 码的业务码;有业务码时成败只看业务码,不套「失败必须 4xx」这类 HTTP 惯例;无业务码时按接口文档写明的 HTTP 码判,文档没写才用兜底表。为什么:把 HTTP 惯例当判据,会把「HTTP 200 且业务码已拒绝」的正确实现误判为不通过取一条 HTTP 200 但业务已拒绝的响应,核对该用例是否被误判为不通过
缺陷的四个判定词写清「被当成成功」「被放行」「被误拒」「未处理故障」各自的含义;响应中出现堆栈或「系统错误」这类无信息量的文案即算未处理故障。为什么:没有统一的判定词,「用例通过」就无法说明是否存在缺陷,评审也无从比较随机抽五条不通过的用例,两人各自判定是否构成缺陷,结论应一致
响应时间阈值正向用例的端到端耗时设两档——超过 50 ms 标记,超过 100 ms 判不通过(阈值按项目自定,此处为示例值);只考核正向用例,负向用例不计入。为什么:单阈值会把「偏慢」与「不可接受」混为一谈,前者应当被看见而不是被阻断每条正向用例记录耗时;落在两档之间的应被标记而不判不通过
变更要求每次变更至少补写与其场景对应的用例;修复缺陷先补一条能复现该缺陷的用例变更说明与新增用例对照

3本课先写到哪

下列四件完成,测试即可作为后续课次的回归基础。

  1. 最小集合三件。一键运行命令写入 README、一条能力的一组三类用例、数据隔离的基本约定。
  2. 先给骨架补测试。健康检查端点必须有用例——后续课次的验收都从它开始,它失效要能立刻发现。
  3. 定通过门槛。明确「失败即阻断」,并约定谁负责修复当天失败的用例。
  4. 把补测试写成技能。让 Harness 每次实现一组任务后,按技能自动补齐对应用例,避免事后补写。
覆盖率口径要写清:以「能力的失败路径是否被覆盖」为准,不以代码行数百分比为门槛——后者容易在无关处凑数,却漏掉真正会出问题的分支。