穷举测试
一次循环中,从程序入口到出口,假设有5条路径,循环次数假定为20次。
穷举测试总路径数为: \(5^{20}=9.53674E+13\)
假定每执行1次测试花费1ms,那么穷举测试时间为: 3024.1年
如何实现路径压缩、问题简化
逻辑覆盖 和 基本路径测试
逻辑覆盖
逻辑覆盖的类型
- 语句覆盖:每条可执行语句
- 判定(分支)覆盖:每条分支路径
- 条件覆盖:每个判断的每个条件的所有可能取值
- 判定/条件覆盖:每个分支路径和每个判断的每个条件的所有可能取值
- 条件组合覆盖:每个判断的所有可能的条件取值组合
- 路径覆盖:每条可能的路径
注:判定 就是选择(菱形框);条件是 选择的条件(菱形框内的条件)
由于类型容易混淆,因此需要分类设计、严卡概念
,为了方便理解,对分类在进行分类:
案例程序3.1:连锁选择结构
function js(float A,float B,float X) { if(A>1&&B==0) X=X/A; if(A==2||X>1) X=X+1; }
注意:
- 不是由程序推出的测试用例
- 测试用例没有特殊要求,随意取值
(一)、只考虑整体
-
语句覆盖:每条可执行语句
-
判定(分支)覆盖:每条分支路径
-
路径覆盖:每条可能的路径
(二)、只考虑局部
- 条件覆盖
- 条件组合覆盖
(三)、兼顾整体局部
- 判定/条件覆盖
(一)、只考虑整体
1.语句覆盖:每条可执行语句
优点:
缺点:
- 无法预测隐藏条件和分支
- 无法检查出条件语句错误
- 无法检查出逻辑运算错误
- 无法检查出循环语句错误
2. 判定覆盖:每个判定的所有可能取值
判定覆盖比语句覆盖严格,能消除隐式分支,但是仍不能保证判断条件的正确性。
对于两个连锁选择结构有两种情况:
-
同真同假(发现错误能力较弱)
-
交叉取值(发现错误能力较强)
优点
- 比语句覆盖具有更强的测试能力;
- 具有简单性,无须细分每个判定即可得到测试用例
缺点:
往往大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径
3. 路径覆盖:每条可能的路径
对于连锁选择结构就是覆盖所有的路径:
优点:根据多缺陷,覆盖完全。
缺点:效率低。
(二)、只考虑局部
1. 条件覆盖:每个判定中每个条件的所有可能取值
对于两个连锁选择结构有两种情况:
-
同真同假(发现错误能力较弱)
关注的是 D1和D2 的T和F,对于c1、c2、c3、c4取值随意。 -
交叉取值(发现错误能力较强)
优点:增加了对符合判定情况的测试,增加了测试路径
缺点:需要足够多的测试用例,但条件覆盖并不能保证分支覆盖。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果
注:条件覆盖和判定覆盖 两者不是包含关系,但是有交集;两者各有优点和缺点
标签:语句,覆盖,白盒,路径,计划,判定,测试,条件,取值 From: https://www.cnblogs.com/kingwz/p/17238776.html