边界值分析是基于”缺陷往往出现在输入边界”的经验,重点测试边界条件及其附近值。
大量缺陷发生在边界条件上:
- 程序员使用
< 而非 <=
- 数组索引从 0 还是 1 开始
- 循环条件 off-by-one 错误
边界值分析是等价类划分的补充,在等价类边界处选取测试值。
对于范围 [a,b]:
| 值 | 描述 |
|---|
| a−1 | 刚好小于下界 |
| a | 下界 |
| a+1 | 刚好大于下界 |
| 正常值 | 范围内任意值 |
| b−1 | 刚好小于上界 |
| b | 上界 |
| b+1 | 刚好大于上界 |
| 值 | 类型 | 预期结果 |
|---|
| 0 | 无效(小于下界) | 错误 |
| 1 | 边界(下界) | 有效 |
| 2 | 边界(下界+1) | 有效 |
| 60 | 正常值 | 有效 |
| 119 | 边界(上界-1) | 有效 |
| 120 | 边界(上界) | 有效 |
| 121 | 无效(大于上界) | 错误 |
在基本边界值基础上增加越界值:
| 值 | 描述 |
|---|
| a−2 | 远小于下界 |
| a−1 | 刚小于下界 |
| a | 下界 |
| a+1 | 下界内侧 |
| b−1 | 上界内侧 |
| b | 上界 |
| b+1 | 刚大于上界 |
| b+2 | 远大于上界 |
| 场景 | 边界值 |
|---|
| 范围 [0, 100] | -1, 0, 1, 99, 100, 101 |
| 整数范围 | INT_MIN, INT_MIN+1, INT_MAX-1, INT_MAX |
| 浮点数 | 0.0, 最小正值, 最大正值 |
| 场景 | 边界值 |
|---|
| 长度 1-50 | "", “a”, “ab”, 49字符, 50字符, 51字符 |
| 空字符串 | "" |
| 仅空格 | ” “ |
| 场景 | 边界值 |
|---|
| 列表索引 | 0, 1, n-2, n-1 |
| 空列表 | [] |
| 单元素 | [1] |
| 场景 | 边界值 |
|---|
| 日期 | 1月1日, 12月31日, 2月28/29日 |
| 时间 | 00:00:00, 23:59:59 |
| 时区 | UTC-12, UTC+14 |
需求:密码长度 8-32,必须包含大小写字母和数字。
| 边界 | 长度 | 是否满足 | 预期 |
|---|
| 7 字符 | 7 | 否 | 拒绝 |
| 8 字符 | 8 | 是 | 接受 |
| 9 字符 | 9 | 是 | 接受 |
| 31 字符 | 31 | 是 | 接受 |
| 32 字符 | 32 | 是 | 接受 |
| 33 字符 | 33 | 否 | 拒绝 |
需求:文件大小 1KB-10MB,仅允许 jpg/png。
| 边界 | 大小 | 预期 |
|---|
| 0 KB | 空 | 拒绝 |
| 1 KB | 下界 | 接受 |
| 10 MB | 上界 | 接受 |
| 10MB+1KB | 超上界 | 拒绝 |
| .gif | 非法类型 | 拒绝 |
| .jpg | 合法类型 | 接受 |
需求:每页 10-100 条,页码 ≥ 1。
| 参数 | 边界值 | 预期 |
|---|
| page=0 | 无效 | 错误 |
| page=1 | 有效 | 第一页 |
| page=2 | 有效 | 第二页 |
| size=9 | 无效 | 错误 |
| size=10 | 有效 | 10条 |
| size=100 | 有效 | 100条 |
| size=101 | 无效 | 错误 |
| 场景 | 边界 |
|---|
| 数组 | 空数组、单元素、满容量 |
| 栈 | 空栈、满栈、单元素 |
| 队列 | 空队列、满队列 |
| 哈希表 | 空表、冲突、扩容阈值 |
| 场景 | 边界 |
|---|
| 状态机 | 初始状态、最终状态 |
| 计数器 | 0、最大值、溢出 |
| 超时 | 刚好超时、刚好未超时 |
| 实践 | 描述 |
|---|
| 识别所有边界 | 显式+隐式边界 |
| 测试两侧 | 边界内外都测 |
| 特殊值 | 0、空、null、负数 |
| 数据类型边界 | INT_MAX、浮点精度 |
| 业务边界 | 折扣阈值、等级分界 |
| 与等价类结合 | 先划分再取边界 |
正在生成题目...
AI 服务暂不可用,显示文档预设题目