- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
白盒测试方法覆盖.doc
白盒测试方法
逻辑覆盖
一、语句覆盖
二、判定覆盖
三、条件覆盖
四、判定-条件覆盖
五、路径覆盖
逻辑覆盖
结构测试是依据被测程序的逻辑结构设计测试用例,驱动被测程序运行完成的测
试。结构测试中的一个重要问题是,测试进行到什么地步就达到要求,可以结束测试
了。这就是说需要给出结构测试的覆盖准则。
以下给出的几种逻辑覆盖测试方法都是从各自不同的方面出发,为设计测试用例
提出依据的。
IF((A1)AND(B=0))THEN X=X/A
IF((A=2)OR(X1)THEN X=X+1
其中“AND”和“OR”是两个逻辑运算符。图1给出了它的流程图。a、b、c、
d和e是控制流上的若干程序点。
一、语句覆盖
语句覆盖的含意是,在测试时,首先设计若干个测试用例,然后运行被测程序,
使程序中的每个可执行语句至少执行一次。这时所谓“若干个”,自然是越少越好。
在上述程序段中,我们如果选用的测试用例是:
A=2
B=0………………CASE1
X=3
则程序按路径ace执行。这样该程序段的4个语句均得到执行,从而作到了语句覆
盖。但如果选用的测试用例是:
A=2
B=1………………CASE2
X=3
程序按路径abe执行,便未能达到语句覆盖。
从程序中每个语句都得到执行这一点来看,语句覆盖的方法似乎能够比较全面地
检验每一个语句。但它也绝不是完美无缺的。假如这一程序段中两个判断的逻辑运算
有问题,例如,第一个判断的运算符“AND”错成运算符“OR”或是第二个判断中的
运算符“OR”错成了运算符“AND”。这时仍使用上述前一个测试用例CASE1,程序
仍将按路径ace执行。这说明虽然也作到了语句覆盖,却发现不了判断中逻辑运算的错
误。
此外,我们还可以很容易地找出已经满足了语句覆盖,却仍然存在错误的例子。
如有一程序段:
…
IF(I≥0)
THEN I=J
…
如果错写成:
…
IF(I0)
THEN I=J
…
假定给出的测试数据确使执行该程序段时I的值大于0,则I被赋予J的值,这样
虽然作到了语句覆盖,然而掩盖了其中的错误。
实际上,和后面介绍的其它几种逻辑覆盖比较起来,语句覆盖是比较弱的覆盖原
则。作到了语句覆盖可能给人们一种心理的满足,以为每个语句都经历过,似乎可以
放心了。其实这仍然是不十分可靠的。语句覆盖在测试被测程序中,除去对检查不可
执行语句有一定作用外,并没有排除被测程序包含错误的风险。
二、判定覆盖
按判定覆盖准则进行测试是指,设计若干测试用例,运行被侧程序,使得程序中
每个判断的取真分支和取假分支至少经历一次,即判断的真假值均曾被满足。判定覆
盖又称为分支覆盖。
仍以上述程序段为例,若选用的两组测试用例是:
A=2
B=0………………CASE1
X=3
A=1
B=0………………CASE3
X=1
则可分别执行路径ace和abd,从而使两个判断的4个分支c、e和b、d分别得到覆盖。
当然,我们也可以选用另外两组测试用例:
A=3
B=0………………CASE4
X=3
A=2
B=1………………CASE5
X=1
分别路径acd及abe,同样也可覆盖4个分支。
我们注意到,上述两组测试用例不仅满足了判定覆盖,同时还做到语句覆盖。从
这一点看似乎判定覆盖比语句覆盖更强一些,但让我们设想,在此程序段中的第2个判
断条件X1如果错写成X1,使用上述测试用例CASE5,照样能按原路径执行(abe
),而不影响结果。这个事实说明,只作到判定覆盖仍无法确定判断内部条件的错
误。因此,需要有更强的逻辑覆盖准则去检验判断内的条件。
以上仅考虑了两出口的判断,我们还应把判定覆盖准则扩充到多出口判断(如
CASE语句)的情况。
三、条件覆盖
条件覆盖是指,设计若干测试用例,执行被测程序以后,要使每个判断中每个条
件的可能取值至少满足一次。
在上述程序段中,第一个判断应考虑到:
A>1,取真值,记为T1
A>1,取假值,即A≤1,记为F1
B=0,取真值,记为T2
B=0,取假值,即B≠0,记为F2
第2个判断应考虑到:
A=2,取真值,记为T3
A=2,取假值,即A≠2,记为F3
X>1,取真值,记为T4
X>1,取假值,即X≤1,记为F4
我们给出3个测试用例:CASE6,CASE7,CASE8,执行该程序段所走路径及覆
盖条件是:
从这个表中可以看到,3个测试用例把4个条件的8种情况均作了覆盖。
进一步分析上表,覆盖了4个条件的8种情况的同时,把两个判断的4个分支b、c、
d和e似乎也被覆盖。这样我们是否可以说,做到了条件覆盖,也就必然实现了判定覆
盖呢?让我们来分析另一情况,假定选用两组测试用例是CASE 9和CASE 8,执行程序
段的覆盖情况是:
这一覆盖情况表明,覆盖了条件的测试用例不一定覆盖了分支。事实上,它只覆
盖了4个分
文档评论(0)