Postman传数值型边界值需在raw+JSON中去掉引号,如{"age":0,"limit":-1};form-data等格式无法传数字类型;批量测试用CSV数据文件驱动Collection Runner,变量{{age}}不加引号;断言须校验具体错误码而非仅状态码;limit=0易被忽略但危害大,需单独测试。

Postman里怎么传数值型边界值(比如 age=0 或 limit=-1)
Postman默认把请求体里的数字当字符串处理,尤其在 raw + JSON 模式下,如果写成 "age": "0",后端收到的就是字符串 "0",不是数值 0,校验可能直接跳过或报类型错误。
正确做法是去掉引号,让 JSON 解析器识别为数字类型:
{
"age": 0,
"limit": -1,
"score": 100.5
}
常见踩坑点:
- 用
form-data或x-www-form-urlencoded时,所有字段都是字符串,age=0传过去永远是字符串,无法触发数值型边界校验 —— 这类接口必须改用raw+JSON - 前端传了数字但后端用了宽松解析(如 Spring 的
@RequestParam),可能自动转成 int 却不报错,掩盖了类型不一致问题 - 某些老系统要求
limit为字符串(如"limit": "10"),这时要以接口文档为准,不能硬套“去引号”规则
用 Collection Runner 批量跑 min/max/min-1/max+1 四组值
手动改请求体太慢,也容易漏。Collection Runner 配合 CSV 数据文件是最稳的批量方案。
准备一个 boundary_test.csv:
age 17 18 65 66
然后在请求体里写:
{
"age": {{age}}
}
注意:{{age}} 不加引号,Postman 会原样替换为 CSV 里的纯数字(不是字符串)。
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
关键细节:
- CSV 第一行必须是变量名,且和
{{xxx}}里的一致,大小写敏感 - CSV 文件编码必须是 UTF-8,否则中文或特殊符号读取会乱码
- 如果某行数据为空(比如
age列留空),Postman 会传null,适合测试空值场景 - 不要用 Excel 直接另存为 CSV —— 它可能加 BOM 头或转义双引号,建议用 VS Code 或记事本另存
断言里怎么验证返回的是“超出范围”而不是“格式错误”
边界值测试失败时,后端响应状态码和错误码必须能区分语义。比如 age=17 应该返回 400 Bad Request + 错误码 "ERR_AGE_UNDER_MIN",而不是笼统的 "INVALID_INPUT"。
在 Postman 的 Tests 标签页写断言:
pm.test("返回 age 范围错误", function () {
const res = pm.response.json();
pm.expect(pm.response.code).to.equal(400);
pm.expect(res.code).to.equal("ERR_AGE_UNDER_MIN");
});
容易忽略的点:
- 别只断言状态码
400—— 很多系统所有校验失败都返回400,掩盖了业务逻辑缺陷 - 如果后端用
message字段返回提示文字(如"年龄不能小于18"),断言时要用正则匹配关键词,避免因措辞微调导致断言失败 - 某些框架(如 Django REST Framework)默认把校验错误放在
detail字段里,而不是code,得先看响应结构再写断言路径
为什么 limit=0 经常被忽略,但恰恰最危险
limit=0 是典型的“合法但无意义”边界值。很多后端代码写成 if (limit > 0) 就放行,结果 limit=0 被当成有效值传给数据库 LIMIT 0,查出空列表却不报错 —— 用户以为没数据,其实是逻辑绕过了。
真实案例中,这种问题会导致:
- 分页接口返回空数组,前端无限加载(因为没
hasMore字段) - 导出功能生成空文件,用户反复重试以为系统卡住
- 权限校验绕过(如
role_level=0被当成游客,但实际应拒绝)
所以边界测试清单里,0 必须单列一项,不能只测正数极值。它不像 -1 那样一眼看出非法,而是静默失效,最难排查。

















