02、白盒测试

上传人:豆浆 文档编号:8959453 上传时间:2017-08-11 格式:PPT 页数:69 大小:856KB
返回 下载 相关 举报
02、白盒测试_第1页
第1页 / 共69页
02、白盒测试_第2页
第2页 / 共69页
02、白盒测试_第3页
第3页 / 共69页
02、白盒测试_第4页
第4页 / 共69页
02、白盒测试_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《02、白盒测试》由会员分享,可在线阅读,更多相关《02、白盒测试(69页珍藏版)》请在金锄头文库上搜索。

1、第 2 章 白盒测试,罗 东 俊ZSUJONE126.COM,1,主要内容,2.1静态白盒测试和动态白盒测试 2.2白盒测试的重点及其对策 2.3白盒测试的测试用例设计方法 2.4白盒测试的覆盖准则 2.5白盒测试的工具 2.6代码的持续集成及其对测试的影响,2,2.1静态白盒测试和动态白盒测试,白盒测试关心软件内部设计和程序实现,主要测试依据是设计文档。根据测试方法分为静态白盒测试和动态白盒测试。静态白盒测试是指在不执行的条件下有条理地仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程。动态白盒测试是指测试运行中的程序,并利用查看代码功能和实现方式得到的信息来确定哪些需要测试、哪些不需

2、要测试、如何开展测试,从而设计和执行测试,找出软件缺陷的过程。,3,静态白盒测试,进行静态白盒测试的首要原因是尽早发现软件缺陷,以找出动态黑盒测试难以揭示或遇到的软件缺陷。独立审查代码的人越多越好,特别是在开发过程初期从底层进行。,4,代码静态质量分析,进行代码静态质量分析所依据的度量理论McCabe度量法HalStead度量法,5,McCabe度量法,McCabe度量法是由Thomas McCabe提出的一种基于程序控制流的复杂性度量方法。基于图论,进行程序复杂度度量V(G)=E-n+2p E为图G中的边数,n为节点数,p为连通分量个数 V(G)值过大(10),程序不易理解与维护,6,McC

3、abe度量法示例,7,HalStead度量法,Halstead度量法以程序中出现的操作符和操作数为计算对象, 给出源程序后,根据程序中的这些参数,按公式可求得程序功耗的估值。,8,程序的简明性,9,程序的词汇量,(2) 程序的词汇量像汉语中的字、英语中的单词一样,反映了程序员需要学习多少术语才能理解、编程和维护一个程序。采用下式度量:,10,程序的体积,11,程序的功耗,12,动态白盒测试,动态白盒测试不仅仅是查看代码,还包括直接测试和控制软件。主要包括四个部分,分别为:直接测试底层功能、过程、子程序和库。在Microsoft Windows中这称为应用程序编程接口(API)。以完整程序的方式

4、从顶层测试软件,但是根据对软件运行的了解调整测试案例。从软件获得读取变量和状态信息的访问权,以便确定测试与预期结果是否相符,同时,强制软件以正常测试难以实现的方式运行。估算执行测试时覆盖的代码量和具体代码,然后调整测试,去掉多余的,补充遗漏的。,13,动态白盒测试 vs. 调试技术,它们的目标不同:动态白盒测试的目标是寻找软件缺陷,调试的目标是修复它们。软件测试人员要把问题缩减为能够演示软件缺陷的最简化的测试案例,测试时甚至包括那些值得怀疑的代码行信息;进行调试的程序员从这里继续,判断到底是什么导致软件缺陷,并设法修复。,14,2.2白盒测试的重点及其对策,白盒测试的重点主要体现在五个方面:模

5、块接口测试模块局部数据结构测试模块边界条件测试模块执行路径测试模块出错处理测试。,15,白盒测试的重点,16,模块接口测试,模块接口测试重点检查进出模块的数据是否正确。主要检查的内容包括以下几个方面:模块的实际输入与定义的输入是否一致,包括检查参数个数、类型、顺序等。模块中对于非内部局部变量是否合理使用。使用其他模块时,是否检查该模块的可用性和处理结果。使用外部资源时,是否检查了可用性并及时释放资源,这些资源包括内存、文件、硬盘、端口等。,17,模块局部数据结构测试,模块局部数据结构测试重点检查局部数据结构能否保持完整性。主要检查的内容包括以几个方面:变量从来没有被使用,这时可能别的地方使用了

6、错误的变量名。变量没有初始化。程序中包含了错误的类型转换。程序中是否存在数组越界。程序中是否存在非法指针。程序中是否存在变量或函数名称拼写错误,以及使用了外部变量或函数。,18,模块边界条件测试,模块边界条件测试重点检查临界数据是否正确处理。主要检查的内容包括以下几个方面:普通合法数据是否正确处理。普通非法数据是否正确处理。边界内最接近边界的(合法)数据是否正确处理。边界外最接近边界的(非法)数据是否正确处理。,19,模块独立执行路径测试,模块独立执行路径测试重点检查由于计算错误、判定错误、控制流错误导致的程序错误。主要检查的内容包括以下几个方面:程序中是否存在死代码。程序中是否存在错误的计算

7、优先级。程序中是否存在精度错误,例如:比较运算错误、赋值错误。表达式使用不正确符号,例如:应该使用“”,却用了“=”或者“1) and (b=0) then x = xaIf(a=2) or (x1) then x=x+1,24,语句覆盖,语句覆盖是指设计若干测试用例,使程序中的每个可执行语句至少执行一次;针对上例,如果选择a=2,b=0,x=3,则程序按照路径ace执行,这样,程序段中的四个语句均得到执行,从而达到了语句覆盖。如果a=2,b=1,x=3,则程序按照路径abe执行,便未能达到语句覆盖。,25,语句覆盖优缺点,语句覆盖虽然使得程序中的每个语句都得到执行,但并不能全面地检验每一条语

8、句。这种覆盖测试不充分,无法发现程序中某些逻辑运算符和逻辑条件的错误。例如例2-1的第一个逻辑运算符写成了“or”,第二个逻辑运算符写成了and,使用测试用例a=2,b=0,x=3,程序仍将按照路径ace执行,虽然达到了语句覆盖,但是并没有发现程序中的错误。,26,判定覆盖,判定覆盖是指设计若干测试用例,使程序中的每个判断真假的分支至少遍历一次;,27,判定覆盖的优缺点,上边两组测试用例不仅满足了判定覆盖,而且还达到了语句覆盖,判定覆盖比语句覆盖更强一些。但是,上例若把x1错写为x1,b=0记为t1,t22)a1,b0记为t1,-t23)a=1,b=0记为-t1,t24)a=1,b0记为-t1

9、,-t25)a=2,x1记为t3,t46)a=2,x=1记为t3,-t47)a2,x1记为-t3,t48)a2,x=1记为-t3,-t4,条件组合覆盖是指选择足够的测试用例,使得程序中每一个分支判断中的每一个条件的每一种可能组合结果都至少被执行一次;,32,条件组合覆盖测试用例,上边四个测试用例虽然覆盖了条件组合和分支,但是仅覆盖了三条路径,漏掉了路径acd。,33,路径覆盖,路径覆盖是指选择足够的测试用例,使得程序中所有的可能路径都至少被执行一次。,34,路径覆盖的优缺点,路径覆盖是覆盖测试级别最高的测试,但在实际问题中,一个不太复杂的程序,其路径数都是一个庞大的数字。要在测试中覆盖这样多的

10、路径是无法实现的。为解决这一难题,需要进行路径分析,了解路径数目和基本路径(任意有向边都在路径中最多出现一次 )数目。同时,要对循环进行考虑。,35,各种覆盖准则间的关系,36,2.3.2路径测试,执行路径测试时,需要进行路径分析,了解路径数目和基本路径数目。同时,要对循环进行考虑。一般来说,循环测试的目标是检查循环结构的有效性。循环分为简单循环和嵌套循环。对于简单循环(循环最大次数n),测试时可以考虑跳过整个循环;只循环一次;循环两次;循环m次,mn;以及分别循环n-1、n、n+1次等情况。对于嵌套循环,可以考虑从内层开始,所有外层的循环次数为最小,内层循环按简单循环策略;或由内向外,外层仍

11、取最小,内层取典型值。,37,例2-2,例2-2:最多输入100个值(-999为结束标志)存储在数组value100中,计算落在指定范围 (min, max) 内的值的个数、总和、平均值。,38,例2-2程序源代码,39,例2-2的流图,40,例2-2路径分析,路径1:1-2-10-11-13路径2:1-2-10-12-13路径3:1-2-3-10-11-13路径4:1-2-3-4-5-8-9-2-.路径5:1-2-3-4-5-6-7-8-9-2-.路径6:1-2-3-4-5-6-8-9-2-.,41,例2-2测试用例,路径1:valuek=有效输入 (ki),valuei=-999 0i10

12、0期望结果:基于k的正确平均值。路径2:value0 = -999期望结果:ave = -999。路径3:试图处理101个数,前100个数有效期望结果:基于100的正确平均值。路径4:valuek最小值 (ki),valuei=有效输入i100期望结果:基于有效值的正确平均值。路径5:valuei=有效输入 (i最大值 (ki),valuei=有效输入 i100期望结果:基于有效值的正确平均值。,42,2.3.3数据流测试,数据流分析和测试主要关注变量的赋值和使用。变量的使用分为两种:分别为c-use(Computation Use)和p-use(Predicate Use)。如果在运算语句或

13、输出语句中使用变量,则称为该变量的c-use;如果在谓词语句中使用变量,则称为该变量的p-use。对于c-use而言,变量的定义-使用链是指从定义语句到包含了计算使用的语句的路径;对于p-use而言,变量的定义-使用链是指从定义语句到对该变量进行判断使用的语句的两个后继语句的路径。在数据流测试中,基于变量的定义-使用链来选择程序的测试路径,测试用例的覆盖标准可以帮助选择特定的定义-使用链作为测试用例。,43,例2-3,ebid应用中的两个页面ebid.html和bid.asp,对其进行数据流分析。,44,ebid.html的代码,45,ebid.html的代码,46,bid.asp的代码,47,例子2-3的定义-使用链,48,2.4白盒测试的覆盖准则,逻辑覆盖要做到全面而不遗漏,是不太可能的。无充足的时间即使给出足够的时间,100的语句覆盖也只能检测84.7的故障, 100的分支覆盖也只能检测93.9的故障。因此,在测试时,应该有重点地对容易发生问题的的地方设计测试用例。两个结构覆盖准则:ESTCA覆盖准则 LCSAJ覆盖准则,49,ESTCA覆盖准则,一套错误敏感测试用例分析(Errors Sensitive Test Cases Analyst)规则。K.A.Foster基于经验,找出了程序中谓词容易出错的部分。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号