循环结构测试策略是什么
循环结构测试(loop testing)是白盒测试的经典策略,针对循环体执行次数设计用例:跳过整个循环(0 次)、只执行一次、执行两次、典型次数、上限次数以及越界次数。边界次数——0 次、1 次、上限与上限加一——是缺陷最集中的位置;循环常与集合处理一起出现,空集合与单元素场景要单独覆盖。
基本信息
| 测试对象 | while / for / do-while 循环与集合遍历 |
|---|---|
| 核心次数 | 0 次、1 次、2 次、典型次数、上限 N、N+1 |
| 边界重点 | 0 次(不进循环体)与上限附近 |
| 嵌套循环 | 从内层开始逐步向外层叠加覆盖 |
| 配套场景 | 空集合、单元素、超大集合与遍历中修改 |
| 典型缺陷 | off-by-one、循环变量初值错误、退出条件失效 |
次数序列与含义
次数序列与含义
次数序列:0 / 1 / 2 / 典型(如 3 页)/ N(上限)/ N+1(越界)
0 次:空集合,验证循环体完全不执行时的行为
1 次:单元素,验证初始化与退出路径
2 次:区分 0/1/多 的语义分界
N+1:请求越界页或注入超限输入,验证防御逻辑典型使用场景
- 分页与列表功能:空列表、单条、多页、最后一页与越界页码。
- 白盒单测:按覆盖率要求补齐循环边界用例。
- 缺陷定位:怀疑 off-by-one 时,用精确次数控制验证。
- 批处理任务:0 条任务、1 条、满批次与超过批大小。
- 数据导入:空文件、单行、恰好达到行数上限与超出。
- 嵌套循环组合:内层边界固定后逐层向外层扩展覆盖。
场景与次数对照
| 场景 | 次数 | 关注点 |
|---|---|---|
| 空集合 | 0 次(不进循环体) | 初始化与返回值是否正常 |
| 单元素 | 1 次 | 进入与退出路径、变量初值 |
| 一般情况 | 2 次至 N-1 次(含典型 3 页) | 中间轮次的状态累积 |
| 满集合 | N 次(上限) | 资源与性能边界 |
| 越界 | N+1 次或请求越界页 | 防御与报错是否友好 |
优先测边界与刚越过边界的一步:中间次数通常被相邻边界覆盖,重复测试收益有限。
嵌套循环从最内层开始覆盖边界,再逐层向外;直接做全组合会产生数量爆炸,也没有必要。
注意循环变量初值与步长:不少 off-by-one 不是次数问题,而是初值从 0 还是 1 开始。