系统化、可直接落地的《边界测试 Checklist》,覆盖 数值、字符串、时间、集合、状态、文件、网络、权限 等八大核心维度,适用于 Web、App、API、后端服务等各类软件系统。
✅ 使用建议:
- 作为需求评审、用例设计、代码审查的强制检查项
- 结合具体业务规则填充“示例”列
- 高风险模块(如支付、账户)必须 100% 覆盖
软件测试《边界测试 Checklist》
一、数值类边界(Number)
| 检查项 | 说明 | 示例 |
|---|---|---|
| 最小值 - 1 | 低于允许最小值 | 金额 = -0.01(若要求 ≥0) |
| 最小值 | 边界下限 | 年龄 = 0(若允许新生儿) |
| 最小值 + 1 | 略高于下限 | 数量 = 1(若最小起订量=1) |
| 正常值 | 典型业务值 | 订单金额 = 99.9 |
| 最大值 - 1 | 略低于上限 | 文件大小 = 9.99MB(若限制 10MB) |
| 最大值 | 边界上限 | 积分 = 999999(若上限 100万) |
| 最大值 + 1 | 超出上限 | 手机号位数 = 12(标准 11 位) |
| 特殊值 | 0、负数、小数、极大数 | 余额 = 0;折扣 = -10%;数量 = 999999999 |
💡 注意:浮点数需考虑精度问题(如 0.1 + 0.2 ≠ 0.3)
二、字符串类边界(String)
| 检查项 | 说明 | 示例 |
|---|---|---|
| 空字符串 | "" | 用户名留空提交 |
| 仅空白字符 | 空格、Tab、换行 | 密码 = " " |
| 最小长度 - 1 | 低于最小字符数 | 昵称 = “A”(若要求 ≥2 字) |
| 最小长度 | 边界下限 | 验证码 = “1234”(4 位) |
| 最大长度 - 1 | 略低于上限 | 评论 = 199 字(限制 200 字) |
| 最大长度 | 边界上限 | 商品标题 = 60 字符 |
| 最大长度 + 1 | 超出上限 | 邮箱 = 255+1 字符(RFC5321 限制 254) |
| 特殊字符 | SQL/JS/XSS 注入风险 | 输入 <script>alert(1)</script> |
| 多语言字符 | 中文、Emoji、生僻字 | 昵称 = “张🎉䶮” |
⚠️ 安全重点:所有用户输入必须做 XSS/SQLi 过滤验证
三、时间与日期边界(Time/Date)
| 检查项 | 说明 | 示例 |
|---|---|---|
| 过去时间 | 早于当前时间 | 预约时间 = 昨天 10:00 |
| 当前时间 | 精确到秒/毫秒 | 创建订单时间 = now() |
| 未来时间 | 合理范围 vs 超远未来 | 预约 = 100 年后? |
| 时区边界 | 跨时区处理 | UTC+8 与 UTC-5 的订单时间对齐 |
| 闰年/闰秒 | 2月29日、夏令时 | 2024-02-29 是否有效? |
| 时间格式非法 | 非标准格式 | 输入 “2025/13/01” |
| 时间戳溢出 | 32 位系统 2038 问题 | Unix 时间戳 > 2147483647 |
四、集合与列表边界(Collection)
| 检查项 | 说明 | 示例 |
|---|---|---|
| 空集合 | 无元素 | 购物车商品列表为空 |
| 单元素 | 最小非空 | 收货地址仅 1 条 |
| 最大容量 - 1 | 接近上限 | 好友列表 = 4999(上限 5000) |
| 最大容量 | 边界上限 | 微信群人数 = 500 |
| 最大容量 + 1 | 超出限制 | 上传 11 个文件(限制 10 个) |
| 重复元素 | 是否允许重复 | 同一商品加入购物车多次 |
| 排序边界 | 首/末条记录 | 分页第一页最后一条 vs 第二页第一条 |
五、状态与流程边界(State/Workflow)
| 检查项 | 说明 | 示例 |
|---|---|---|
| 非法状态跳转 | 跳过中间状态 | 订单从“待支付”直接变“已完成” |
| 重复操作 | 多次点击同一按钮 | 连续点击“支付”生成多个订单? |
| 并发状态冲突 | 多人同时操作 | A/B 同时审批同一申请 |
| 超时状态 | 未在时限内操作 | 验证码 5 分钟后失效 |
| 状态回滚 | 撤销/取消逻辑 | 取消订单后库存是否释放? |
📌 关键:绘制状态机图,验证所有转移路径
六、文件与资源边界(File/Resource)
| 检查项 | 说明 | 示例 |
|---|---|---|
| 空文件 | 0 字节文件 | 上传空 .txt |
| 超小文件 | 1 字节 | 1B 图片 |
| 最大允许大小 | 系统限制 | 上传 100MB 视频(限制 100MB) |
| 超大文件 | 超出限制 | 上传 101MB 文件 |
| 非法格式 | 非白名单类型 | 上传 .exe 冒充 .jpg |
| 损坏文件 | 内容不完整 | ZIP 解压失败 |
| 资源耗尽 | 磁盘满、内存溢出 | 连续上传至磁盘空间不足 |
七、网络与外部依赖边界(Network/External)
| 检查项 | 说明 | 示例 |
|---|---|---|
| 网络中断 | 请求中突然断网 | 支付时拔网线 |
| 超时响应 | 第三方服务慢 | 银行接口 30s 无返回 |
| 错误响应码 | 4xx/5xx 返回 | 调用短信服务返回 500 |
| 数据格式异常 | JSON/XML 不合法 | 第三方返回 { "code": }(缺值) |
| 限流/熔断 | 被拒绝访问 | 短信接口返回 “Too Many Requests” |
💡 工具建议:使用 Chaos Engineering 工具(如 Chaos Mesh)模拟
八、权限与安全边界(Permission/Security)
| 检查项 | 说明 | 示例 |
|---|---|---|
| 未登录访问 | 匿名用户尝试敏感操作 | 未登录查看他人订单 |
| 越权操作 | 普通用户访问管理员接口 | user_id=123 → 尝试修改 user_id=124 数据 |
| 角色切换边界 | 权限变更后缓存失效 | 管理员降级后仍能删数据? |
| 敏感操作无二次验证 | 高危操作缺确认 | 直接删除账户无密码验证 |
附:边界测试执行建议
✅ 优先级排序
| 风险等级 | 覆盖要求 |
|---|---|
| P0(资金/账户/安全) | 必须覆盖全部边界 |
| P1(核心业务流程) | 覆盖数值、状态、集合边界 |
| P2(普通功能) | 覆盖最小/最大值 + 空值 |
✅ 自动化策略
- API 层:用 Postman / Pytest 参数化批量跑边界值
- UI 层:对高频输入框(如金额、数量)做自动化边界测试
- 数据层:直接写 SQL 验证数据库约束(如 CHECK、UNIQUE)
✅ 工具推荐
- 等价类 & 边界值生成:Boundary Value Analyzer
- 模糊测试:OWASP ZAP(Web)、AFL(二进制)
- 状态测试:GraphWalker(基于模型的测试)
结语:边界之外,皆是漏洞
80% 的严重缺陷,藏在边界条件里。
这份 Checklist 不是文档,而是质量防线。
每次需求评审,问一句:
“这个字段的最小值、最大值、非法值,我们都测了吗?”
——守住边界,就是守住系统的底线。
1188

被折叠的 条评论
为什么被折叠?



