测评样例:单接口
一份接口验收表最难的不是列出测评点,而是先说清「什么算缺陷」。这一页给出判定口径:先确定本系统用哪一套信号,再用统一的词下结论。样例取自一份真实项目的单接口验收表,为教学做了删减,其中与具体项目绑定的阈值已换成示例值。
1这一页管什么
管判定依据,不管测评点清单。
- 管判定的依据与用词。先确定本系统用哪套信号,再规定「被当成成功」「被放行」「被误拒」「未处理故障」各自的含义。
- 不交由这一页。具体的测评点清单在后两页;用例怎么组织、放在哪里,写在测试规范页。
- 落法。口径写进测试规范与评审表。它是评审时共同的语言,不是某一个人的经验。
对应的课程知识点:软件测试中的故障(fault)与失效(failure)之分、错误猜测法与判定覆盖的差别、评审结论的可复现性。判定口径要解决的是同一个结果两个人判出两种结论——没有它,测试通过率说明不了任何问题。
2先确定用哪套信号
以被测系统为单位确定,测试之前写明它属于哪一种。
| 系统形态 | 长什么样 | 怎么判 |
|---|---|---|
| 已区分 | 响应体里有独立于 HTTP 状态码的错误码,两者各走各的。典型情况是 HTTP 多为 200,成败与错误类别看响应体里的错误码。 | 成败与错误类别只看错误码,加上数据有没有变化、有没有返回不该看的数据。不套用 HTTP 协议惯例——不要求「失败必须 4xx」「未登录必须 401」 |
| 未区分 | 响应体里没有错误码,或者体里的 code / status 始终等于 HTTP 状态码,只是把它抄一遍。 | 按接口文档写明的 HTTP 状态码判;文档没写这个场景时,才用下一节的兜底表 |
两处例外:已区分的系统里,网关或认证中间件直接拦截的响应(如 405、415、413,以及没有响应体的 204)按「未区分」处理;文档没写这个场景的错误码时,不套惯例也不自己编一个,按底线断言——错误码不是成功码、数据未变、没有越权数据,满足即通过,具体错误码另记待确认。
3四个判定词
这四个词写不进规范,「用例不通过」就无法说明是否存在缺陷。
| 判定词 | 用在 | 含义 |
|---|---|---|
| 被当成成功 | 负向用例 | 以下任一即构成缺陷:成功信号为成功;数据发生了约定外的变化;返回了不该返回的数据。仅 HTTP 2xx、错误码已拒绝、数据未变,不算被当成成功 |
| 被放行 | 权限类负向用例 | 拿到了不该拿到的数据,或写操作实际生效。仅 HTTP 2xx 且错误码已拒绝、数据未变,不算被放行 |
| 被误拒 | 正向用例 | 合法请求没有得到成功信号,或约定的副作用没有发生 |
| 未处理故障 | 任意用例 | 出现未捕获的异常、响应里带堆栈,或只返回「系统错误」这类无信息量的文案。通用系统错误码即使写在错误码表里,也算未处理故障;已区分的系统里 HTTP 500 本身不算 |
最容易判错的一句:「仅 HTTP 2xx、错误码已拒绝、数据未变」既不算被当成成功,也不算被放行。把协议层的成功当成业务层的成功,是误判的主要来源。
4HTTP 状态码兜底表
只在「未区分」且文档没写明时使用。
| 情形 | 兜底 |
|---|---|
| 成功 | 2xx(200 / 201 / 204) |
| 参数不合法 | 400 或 422 |
| 未登录 | 401 |
| 无权限 | 403;跨端令牌 401 或 403 |
| 他人数据、不属于本人的数据 | 403 或 404 |
| 查无此数据 | 404 |
| 数据冲突 | 409 |
| 未处理故障 | 500 |
错误类别以该接口错误码表里写明的错误码为准;表里把多种情况收成同一个错误码时,不算类别用错。没有错误码表时,按「文档没写这个场景」处理。