- 1、本文档共53页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
白盒的测试技术
第6章 白盒测试技术
白盒测试白盒测试又称为逻辑驱动测试根据软件说明文档生成用于白盒测试的测试用例A(B||C),A||(B||C)
A=T,B=T,C=T
A=F,B=F,C=F
可以满足语句覆盖
缺点:主要对整个表达式最终取值进行度量,忽略了表达式内部取值
条件覆盖(CC)
设计足够多的测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次。
如:A(B||C),A||(B||C)
A=T,B=F,C=T
A=F,B=T,C=F
不能够满足判定覆盖。
条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。
条件判定组合覆盖(CDC)
设计足够多的测试用例,使得判定中的每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的判定结果也至少出现一次
如:A(B||C),A||(B||C)
A=T,B=T,C=T
A=F,B=F,C=F
缺点:没有考虑单个判定对整体结果的影响,无法发现逻辑错误
多条件覆盖(MCC)
也称条件组合覆盖,设计足够多的测试用例,使得每个判定中条件的各种可能组合都至少出现一次(以数轴形式划分区域,提取交集,建立最少的测试用例)
A(B||C),A||(B||C)
A------B--------C
T------T--------T
T----- T------- F
T------F--------T
T------F--------F
F------F--------F
F------F--------T
F------T--------F
F------T--------T
满足条件覆盖一定满足判定覆盖、条件覆盖、条件判定组合覆盖
缺点:判定语句较多时,条件组合值比较多
修正条件判定覆盖(MCDC)
每一个程序模块的入口和出口点都要考虑至少要被调用一次,每个程序的判定到所有可能的结果值要至少转换一次
程序的判定被分解为通过逻辑操作符(and,or)连接的bool条件,每个条件对于判定的结果值是独立的
练习1:采用多条件覆盖方法,对下程序进行白盒测试用例设计
if ((a 1 )( b= = 0))
{
x=x/a;
}
if (( a = = 2)|| (x 1 ))
{
x=x+1;
}
六种逻辑覆盖的强弱关系
在外面很多的教程都认为这六种逻辑覆盖从弱到强的排列顺序是:
语句覆盖-判定覆盖-条件覆盖-判定-条件覆盖-条件组合覆盖-路径覆盖
但经过上面的分析,它们之间的关系实际上可以用下图表示:
达到100%CDC要求就一定能够满足100%DC的要求达到100%DC要求就一定能够满足100%C的要达到100%CDC要求就一定能够满足100%C的要达到100%MCDC要求就一定能够满足100%DC的要求达到100%路径覆盖要求就一定能够满足100%DC的要求而路径覆盖很难在该图表示出来。
覆盖是一种白盒测试方法,测试人员必须拥有程序的规格说明和程序清单,以程序的内部结构为基础,来设计测试案例。其基本准则是则测试案例来尽可能多地覆盖程序的内部逻辑结构,发现其中的错误和问题。所以,覆盖测试一般应用在软件测试的早期,即单元测试阶段。
覆盖的几种方法或策略如表1所列。表1 几种典型的覆盖策略
覆盖策略 定????? 义 语句覆盖在制定测试案例时,使程序中的每个语句都至少执行1次。其缺点是不能发现某些逻辑错误 判定覆盖 执行足够的测试案例,使得程序中每个判定都获得一次“真”值和“假”值,或者说使每一个分支都至少通过1次 条件覆盖 执行足够的测试案例,使得判定中的每个条件获得各种可能的结果 判定/条件覆盖 执行足够的测试案例,使得判定中的每个条件取得各种可能的值,并使得每个判定取得各种可能的结果 条件组合覆盖 执行足够的测试案例,使得每个判定中的条件的各种组合都至少出现1次。其特点是覆盖较充分,满足条件组合覆盖的测试案例也一定满足判定覆盖、条件覆盖和判定/条件覆盖。 修改的条件/判断覆盖(MCDC) 从以上简要介绍可看出,这几种覆盖策略的严格程序有如下趋势:??? 其它一些覆盖策略还包括:修改的条件/判断覆盖(通常简称为MCDC)、路径覆盖、函数覆盖、调用覆盖、线性代码顺序和跳转覆盖、数据流覆盖、目标代码分支覆盖、循环覆盖、关系操作符覆盖等。随着软件规模的增长,实现全面的覆盖所需的测试案例的数目也越来越庞大,因此根据被测软件对象的特点选择适当的覆盖策略是非常重要的;同时,要确定合理测试目标,达到100%的覆盖往往要付出很大的代价,应该同形式化评审等方法结合,以发现更多的软件故障。
覆盖测试工具要取得较好的覆盖测试效果,需要借助一定的工具软件。这些工具软件一般具备如下的功能特点,可弥补人为测试的缺陷:
分析软件内部结构,帮助制定覆盖策略及设
文档评论(0)