- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第一部分:软件测试基础3韦庆杰;软件测试基本概念
软件测试方法的分类
软件测试技术基础
软件测试流程
软件测试过程
性能;白盒测试/黑盒测试;什么是白盒测试
已知产品的详细设计过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经通过检查。又称Structure Based Testing或Structural Testing
;白盒测试的主要方法
静态方法:
代码审查
静态结构分析法
动态方法:
逻辑覆盖方法
基本路径覆盖
域测试
符号测试、Z路径覆盖
程序变异
;是通过对程序逻辑结构的遍历实现程序的覆盖
从覆盖源代码的不同程度可以分为以下六个标准:
语句覆盖
判定覆盖(又称为分支覆盖)
条件覆盖
判定-条件覆盖(又称为分支-条件覆盖)
条件组合覆盖
路径覆盖
;int?logicExample(int?x,?int?y)
{
????int?magic=0;
????if(x0??y0)
????{
????????magic?=?x+y+10;?//?语句块1?
????}
????else
????{
????????magic?=?x+y-10;?//?语句块2
????}
????
????if(magic??0)
????{
????????magic?=?0;???????? //?语句块3
????}
????return?magic;???????//?语句块4
}
;源代码的流程图;语句覆盖是指选择足够多的测试用例,使得程序中的每一条可执行语句至少被执行一次。它以程序中每条可执行语句是否都执行到为测试终止的标准
语句覆盖可以很直观地从源代码得到测试用例,无须细分每条判定表达式。由于这种测试方法仅仅针对程序逻辑中显式存在的语句,对于隐藏的条件和可能到达的隐式逻辑分支是无法测试的
语句覆盖对于多分支的逻辑运算是无法全面反映的;测试用例:
{x=3, y=3}可以执行到语句块1和语句块4,所走的路径:a-b-e-f
{x=-3, y=0}可以执行到语句块2、语句块3和语句块4,所走的路径:a-c-d-f
这样,通过两个测试用例即达到了语句覆盖的标准,当然,测试用例(测试用例组)并不是唯一的
测试的充分性:
假设第一个判断语句if(x0 y0)中的“”被程序员错误地写成了“||”,即if(x0?|| y0),使用上面设计出来的一组测试用例来进行测试,仍然可以达到100%的语句覆盖,所以语句覆盖无法发现上述的逻辑错误
在六种逻辑覆盖标准中,语句覆盖标准是最弱的。
;判定覆盖也叫分支覆盖,即设计若干测试用例,使得程序中的每个判定至少都获得一次“真”值和“假”值,也就是使程序中的每个取“真”分支和“假”分支至少均执行一次
判定覆盖比语句覆盖要多几乎一倍的测试路径,当然也就具有比语句覆盖更强的测试能力
同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例;源代码的流程图;数据;条件覆盖是指设计足够多的测试用例,使得程序中每个判定中包含的每一个条件的可能取值(真/假)都至少被执行一次
条件覆盖与判定覆盖相比较,增加了对符合判定情况的测试,增加了测试路径。要达到条件覆盖,需要足够多的测试用例,但条件覆盖并不能保证判定覆盖;源代码的流程图;测试用例:
三个条件的各种可能取值都满足了一次,因此,达到了100%条件覆盖的标准。
测试的充分性:
上面的测试用例同时也到达了100%判定覆盖的标准,但并不能保证达到100%条件覆盖标准的测试用例(组)都能到达100%的判定覆盖标准,看下面的例子:
既然条件覆盖标准不能100%达到判定覆盖的标准,也就不一定能够达到100%的语句覆盖标准
;设计足够多的测试用例,使得被测试程序中的每个判断本身的判定结果(真假)至少满足一次,同时,每个逻辑条件的可能值也至少被满足一次。即同时满足100%判定覆盖和100%条件覆盖的标准
;源代码的流程图;判定-条件覆盖;设计足够多的测试用例,使得被测试程序中的每个判断的所有可能条件取值的组合至少被满足一次
注意:
a、条件组合只针对同一个判断语句内存在多个条件的情况,让这些条件的取值进行笛卡尔乘积组合。
b、不同的判断语句内的条件取值之间无需组合。
c、对于单条件的判断语句,只需要满足自己的所有取值即可。
;源代码的流程图;条件组合覆盖;设计足够多的测试用例,使得被测试程序中的每条路径至少被覆盖一次
;源代码的流程图;路径组合覆盖;普遍认为这六种逻辑覆盖从弱到强的排列顺序是:
语句覆盖-判定覆盖-条件覆盖-判定-条件覆盖-条件组合覆盖-路径覆盖
但经过上面的分析,它们之间的关系实际上可以用下图表示:(路径覆盖很难在下图表示出来);使用控制流图的圈复杂度导出的独立路径数作为程序的逻辑复杂度的度量
文档评论(0)