白盒测试:覆盖方式

来源:互联网 发布:花店管理系统数据库 编辑:程序博客网 时间:2024/05/17 08:36

注:整理自http://blog.csdn.net/ffeiffei/article/details/6579280

语句覆盖(statement coverage):语句覆盖是指程序的每一行代码是否都被覆盖到;语句覆盖是最常用的一种代码覆盖率指标,也非常简单。但是对一些控制结构的代码而言,它不能真正表示是否完全覆盖到。

决策覆盖(decision coverage):又叫分支覆盖决策覆盖是指在控制结构的代码块,如if, while中的整个bool表达式是否在false和true条件下,各被执行一次。决策覆盖不考虑组成该条件表达式的各个子条件是否被完全覆盖到。于是,通常对于c/c++/java语言,由于short circuit operators,对于一个由多个条件以与关系组成的一个条件表达式,当出现第一个条件被检测为false时,其后所有的条件都不会被执行了。

条件覆盖(condition coverage):条件覆盖是指每个条件都必须有true和false的情况,这里一个条件是一个逻辑操作符的操作数,但是不含该逻辑操作符。注意和决策覆盖的区别,如

bool f(bool e){    return false;    }bool a[2]={false, false};if(f(a&&b)) ...if(a[int(a&&b)]) ...if((a&&b)?false:false) ...
该代码块的3个if条件中,一共包含2个条件a,b;共四种情况a=true, a=false, b=true, b=false;我们只需取a,b分别为true和false的组合(a=true, b=false和a=false, b=true)即可使条件覆盖为100%;而实际上,无论a,b取什么值,3个if语句的分支始终都返回false。而分支覆盖只看每个if语句的整体是否是true忽然false。

多重条件覆盖(multiple condition coverage):多重条件覆盖是指各个条件的每个可能的组合是否被检查到。多重条件覆盖中的各个条件组合是一种排列关系,而不是组合。通常多重条件覆盖的测试案例设计都非常复杂,因为在考虑到各个条件之间的排列关系时,其数量本身就多,而且还要考虑关系之间的相互影响,剔除无效的排列。

 

条件/决策覆盖(condition/decision coverage):条件决策覆盖是条件覆盖和决策覆盖的联合运算,它具有比多重条件覆盖简单的优势,同时又没有条件覆盖和决策覆盖的缺点。

 

改进的条件/决策覆盖(modified condition/decision coverage):其定义是程序中的每个入口和出口都至少被调用一次,一个决策的每个条件都至少有一次所有可能的输出,程序中的每个决策都至少有一次所有可能的输出,一个决策中的每个条件都能独立的影响该决策的输出(该条件改变,而其他条件保持不变)。

 

路径覆盖(path coverage):路径决策指示函数中的每个可能的路径是否被执行到。一条路径是一个唯一的从函数入口到出口的分支序列。路径覆盖通常能比较彻底的进行测试,但是它也有两个非常严重的缺陷:其一,路径的数量是分支数量的几何级数。例如,一个具有10个if语句的函数,需要1024个路径测试;而我们再加一条if语句,则有2048个路径需要测试。


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 胳膊上的筋拉伤怎么办 肩周炎胳膊抬不起来怎么办 脖子上的筋拉伤怎么办 脚踝骨扭伤肿了怎么办 脚扭伤肿起来了怎么办 月经量特别少该怎么办 月经血沾床单上怎么办 月经弄到棉被上怎么办 血弄床单上干了怎么办 不小心吃了指甲怎么办 月经没有干净同房了怎么办 撞红了怎么办要吃药吗 自己长得太丑怎么办 长得丑特别自卑怎么办 手挤了有淤血怎么办 手指肚夹淤血了怎么办 指甲被夹了变黑怎么办 孩子手指夹肿了怎么办 指甲压了有淤血怎么办 挤到手指有淤血怎么办 指甲上有黑线是怎么办 指甲被压了要掉怎么办 脚趾肿了有脓怎么办 手指甲上的死皮怎么办 手被东西砸肿了怎么办 手被夹住有淤血怎么办 指头被车门夹了怎么办 手背夹伤了肿了怎么办 剪完指甲边肿了怎么办 手心长水泡又痒怎么办 指甲肿了有脓怎么办 手指肿了有脓包怎么办 手指头肿了有脓怎么办 指甲弄肿了很痛怎么办 小孩手夹了肿了怎么办 宝宝夹到手肿了怎么办 小孩手指夹紫了怎么办 手指被夹了,没力怎么办 手指被车门夹了怎么办 被夹了个黑血泡怎么办 手上夹的黑血泡怎么办