数值边界是什么
数值边界测试在业务范围之外还要覆盖数据类型自身的极限:int32 到 2147483647 就溢出,int64 上限是 9223372036854775807,浮点无法精确表示多数十进制小数。业务上下限、类型极值与运算精度要分开列,三者出错方式不同:业务校验管不住类型溢出,类型校验也防不住精度误差。
基本信息
| 取值清单 | 0、正负 1、业务上下限,两侧各取一档 |
|---|---|
| 类型极限 | int32:2147483647 / -2147483648;int64:9223372036854775807 |
| 浮点现象 | 0.1 加 0.2 结果为 0.30000000000000004 |
| 断言方式 | 边界附近用容差比较,避免等号断言 |
| 平台提醒 | Java、C 系语言会溢出;Python 整数不溢出,但跨语言或落库仍可能被截断 |
典型取值
典型取值
# 业务上下限两侧各取一档
-1、0、下限、上限、上限加一
# 类型极限(Java/C 系先溢出)
int32: 2147483647、-2147483648
int64: 9223372036854775807
# 浮点精度(0.1 加 0.2 现象)
0.30000000000000004 不等于 0.3典型使用场景
- 金额与计费:验证分币、折扣相乘后的舍入规则。
- 跨语言对接:Java、C 与 Python 传输同一字段,验证极值不截断。
- 计数器与序号:批量操作后主键、总数字段临近上限的行为。
- 导入导出:Excel 与 CSV 中大数不被转成科学计数。
- 查询边界:筛选条件取上下限时记录不遗漏、不重复。
- 对账场景:累加大量小数后总额与明细对平。
三个层次分开测
| 层次 | 关注点 | 典型缺陷 |
|---|---|---|
| 业务范围 | 上下限与超界校验 | 超界数据被静默截断 |
| 类型极限 | 溢出与最小值取负 | int32 溢出变负数,金额符号翻转 |
| 运算精度 | 舍入与进位 | 累加结果差一分钱,报表对不平 |
金额类计算不要用二进制浮点:用最小货币单位整数或十进制类型(Java BigDecimal、Python Decimal),测试用 0.01、0.005 验证舍入是否符合业务约定。
把边界取值固化成用例表:每条边界一行,注明来源(业务规则或类型极限)与预期结果,评审与回归都按表执行。
浮点比较不要用等号:边界附近用容差(如绝对误差小于 1e-9),否则精度误差会造成偶发失败。