1.白盒测试之逻辑覆盖
逻辑覆盖分为:语句覆盖,判定覆盖,条件覆盖,判定条件覆盖,条件组合覆盖,点覆盖,边覆盖,路径覆盖
下面举例说明:
如下程序段:判断1:A>1 and B=0;判断2:A=2,X>1
语句覆盖:所有语句执行一遍,执行s,a,c,b,e,d,例如A=2,B=0,X=3
判定覆盖:将判断看出一个整体:判断1为真,为假,判断2为真,为假各执行一遍。例如A=2,B=0,X=3以及A=-1。
条件覆盖:将每个判断拆开,其中每个判断表达式的真假均遍历一遍,如A>1,A=2,B=0,X>1为一组,A<1,A≠2,B≠0,X<=1为一组,测试样例为A:2,B:0,X:2;以及A=0,B=1,X=0;
注意:
条件覆盖通常比判定覆盖强 ,但也可能满足条件覆盖标准而并不满足判定覆盖标准
例如上述例子:条件覆盖A=2,B=1,X=2;A=1,B=0,X=0.判断一恒为假。
判定/条件覆盖:结合两者。有可能退化成条件覆盖,不一定比条件覆盖强
条件组合覆盖:最强,但也不能测试全部路径。列出所有条件组合
A>1,B=0
A<=1,B=0
A>1,B!=0
A<=1,B!=0
第二个同理
然后组合,条件组合覆盖包括语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖
点覆盖:在MC流图中,点表示语句,因此点覆盖=语句覆盖
边覆盖:通常等于判定覆盖
路径覆盖:程序每条路径执行一次。有环则环至少执行一次。
2.软件调试
调试是发现错误位置并修改
常见方法有:
1.蛮干法:设置断点,打印内存,自动调试工具
2.回溯法:小程序
3.原因排除法:对半查找法(前半部分输出正确,则在后半部分;否则在前半部分),归纳法(从数据出发,研究数据之间的关系,提出假设,证明假设),演绎法(从原因出发,列举可能的原因,排除原因,证明假设)
3.几种常见的软件过程