在基本的程序结构中,循环结构是最为复杂的一种,程序执行路径的膨胀主要是由循环结构引起的,循环次数不同,就会形成不同的执行路径。
基本的循环结构有两种形式:
复合的循环结构有三种形式:
1、 简单循环的测试
对基本的简单循环进行测试的方法一般采用循环边界条件测试法 相当于对循环次数变量进行边界值测试,一般覆盖 7 个边界值点。
示例:
例子:
2、复合循环结构测试
3、非结构循环的测试
4、程序插装
程序插装就是借助往被测程序中插入操作来实现测试的目的 (1)插入打印语句 (2)插入计数语句。
插装的作用: 统计覆盖率、 记录变量的动态特性
补充:白盒测试方法运用示例
5、程序插桩设计步骤
1.运用基本路径或主路径测试方法设计相关测试用例
2.运用逻辑覆盖测试方法设计相关测试用例
3.运用循环测试方法设计相关测试用例
综合上面三个结果,并去除冗余 根据程序的特点增加相应的测试用例
a.基本路径:
环复杂度 :二值判定节点个数 + 1 =3+1=4
边的数目-节点的数目 + 2 = 14-12+2=4
1. 6-10->11->12-13->14->16-18->20->21->11->23->24->27 相应的测试用例: 测试输入 = ((10,-999),0,100) 预期结果= 10
2. 6-10->11->12-13->14->19->23 ->24->27 相应的测试用例: 测试输入 = ((-10,-999),0,100) 预期结果= -999
3. 6-10->11->23->25-26>27 相应的测试用例: 测试输入 = ((-999),0,100) 预期结果= -999
b、逻辑覆盖——以分支-条件覆盖为例
分支相应的测试用例 while (( value[i]!=-999) &&(inputNumber<100))
相应的测试用例:
测试输入 = ((10,-999),0,100) 预期结果= 10
测试输入 = ((-999),0,100) 预期结果= -999
测试输入 = ((0…100,-999),0,100) 预期结果= 49
分支和相应的测试用例 if ((value[i]>=minimum) && (value[i]<=maximum))
相应的测试用例:
测试输入 = ((10,-999),0,100) 预期结果= 10
测试输入 = ((-10,-999),0,100) 预期结果= -999
测试输入 = ((150,-999),0,100) 预期结果= -999
分支和相应的测试用例 if validNumber > 0
相应的测试用例:
测试输入 = ((10,-999),0,100) 预期结果= 10
测试输入 = ((-10,-999),0,100) 预期结果= -999
C、循环测试——测试用例
while (( value[i]!=-999) &&(inputNumber<100))
相应的测试用例:
不执行循环 测试输入 = ((-999),0,100) 预期结果= -999
只执行一遍循环体 测试输入 = ((10,-999),0,100) 预期结果= 10
执行两遍循环体 测试输入 = ((10,20,-999),0,100) 预期结果= 15
m (m=50) 遍循环体 测试输入 = ((0..49,-999),0,100) 预期结果= 24
n-1(99)遍循环体:测试输入 = ((0..98,-999),0,100) 预期结果= 49
n (100)遍循环体 测试输入 = ((0..99,-999),0,100) 预期结果= 49
n + 1(101)遍循环体 测试输入 = ((0..100,-999),0,100) 预期结果= 49
d、整合:并集、去除冗余、必要时额外补充