白盒测试课件.ppt

上传人:飞****2 文档编号:69727971 上传时间:2023-01-08 格式:PPT 页数:72 大小:2.44MB
返回 下载 相关 举报
白盒测试课件.ppt_第1页
第1页 / 共72页
白盒测试课件.ppt_第2页
第2页 / 共72页
点击查看更多>>
资源描述

《白盒测试课件.ppt》由会员分享,可在线阅读,更多相关《白盒测试课件.ppt(72页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、2023/1/7白盒测试白盒测试NIIT1 教研室 王涛单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-2 2/XX-/XX-引言引言n静态测试和动态测试静态测试是指不运行程序进行的测试只是检查和审阅。n白盒测试和黑盒测试测试用例的设计中,通常会把白盒测试和黑盒测试结合起来使用单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-3 3/XX-/XX-本章主要内容本章主要内容4.1静态测试技术4.2白盒测试技术单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-4 4/XX-/XX-4.1静态测试技术静态测试技术 n4.1.1代码检

2、查n4.1.2静态结构分析n4.1.3代码质量度量单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-5 5/XX-/XX-4.1.1 代码检查代码检查n代码检查包括代码走查、代码审查等单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-6 6/XX-/XX-代码走查代码走查n有组织的代码走查在编码阶段去除错误的成本是在软件发布阶段去除错误成本的1/92n全部的代码是否都需要走查n最大的问题是劝说开发者要遵循一定的标准单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-7 7/XX-/XX-编码风格与规范编码风格与规范n好的风格对于好

3、的程序设计具有关键性作用n代码应该是清楚的和简单的具有直截了当的逻辑、自然的表达式、通行的语言使用方式单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-8 8/XX-/XX-代码审查代码审查 n代码审查和代码走查比较n代码审查是提高代码质量的良药1.消除开发员的心理抵触2.代码审查要有目标n代码审查清单单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-9 9/XX-/XX-4.1.2静态结构分析静态结构分析静态结构分析主要是以图形的方式表现程序的内部结构,例如函数调用关系图、函数内部控制流图。其中,函数调用关系图以直观的图形方式描述一个应用程序中各个

4、函数的调用和被调用关系;控制流图显示一个函数的逻辑结构,它由许多节点组成,一个节点代表一条语句或数条语句,连接结点的叫边,边表示节点间的控制流向。单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-1010/XX-/XX-4.1.3 代码质量度量代码质量度量 ISO/IEC9126国际标准所定义的软件质量包括六个方面:功能性、可靠性、易用性、效率、可维护性和可移植性。软件的质量是软件属性的各种标准度量的组合。单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-1111/XX-/XX-4.2白盒测试方法白盒测试方法 n白盒测试,也称为结构化测试、基于代码的

5、测试,是一种测试用例设计方法,它从程序的控制结构导出测试用例。3581322.293419985680302829734315250*(1+0.015)*(1+0.015)360-1)/0.015白盒测试 带上X光眼镜测试单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-1212/XX-/XX-4.2白盒测试方法白盒测试方法这个流程图,其中包括了一个执行达20次的循环。那么它所包含的不同执行路径数高达520条,若要对它进行穷举测试,覆盖所有的路径。假使测试程序对每一条路径进行测试需要1毫秒,同样假定一天工作24小时,一年工作365天,那么要想把如图所示的小程序的所有路径测

6、试完,则需要3170年。单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-1313/XX-/XX-4.2白盒测试方法白盒测试方法n由于对于不同复杂度的代码逻辑,可以衍生出许多种执行路径,只有选择适当的测试方法,才能帮助我们从代码的迷雾森林中找到正确的方向。单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-1414/XX-/XX-4.2.1 逻辑覆盖法逻辑覆盖法n白盒测试中的逻辑覆盖方法有以下6种:1.语句覆盖2.判定覆盖3.条件覆盖4.判定条件覆盖5.条件组合覆盖6.路径覆盖单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-15

7、15/XX-/XX-例:实现一个简单的数学运算例:实现一个简单的数学运算1.Dima,bAsInteger2.DimcAsDouble3.If(a0Andb0)Then4.c=c/a5.Endif6.If(a1orc1)Then7.c=c+18.Endif9.c=b+c单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-1616/XX-/XX-1.语句覆盖语句覆盖n基本思想是:设计若干测试用例,运行被测程序,使程序中每个可执行语句至少执行一次。1单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-1717/XX-/XX-1.语句覆盖语句覆盖续续1只需设计

8、一个测试用例:a=2,b=1,c=6;即达到了语句覆盖。单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-1818/XX-/XX-1.语句覆盖语句覆盖续续2n【优点优点】:可以很直观地从源代码得到测试用例,无须细分每条判定表达式。n【缺点缺点】:由于这种测试方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件是无法测试的。如在多分支的逻辑运算中无法全面的考虑。语句覆盖是最弱的逻辑覆盖。单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-1919/XX-/XX-2.判定覆盖判定覆盖n基本思想是:设计若干测试用例,运行被测程序,使得程序中每个判断的取真分

9、支和取假分支至少经历一次,即判断真假值均曾被满足。1单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-2020/XX-/XX-2.判定覆盖判定覆盖续续1a=2,b=1,c=6可覆盖判断M的Y分支和判断Q的Y分支;a=2,b=1,c=3可覆盖判断M的N分支和判断Q的N分支。这两组测试用例可覆盖所有判定的真假分支。判断M判断Q单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-2121/XX-/XX-2.判定覆盖判定覆盖续续2a=1,b=1,c=3可覆盖判断M的Y分支和判断Q的N分支;a=1,b=2,c=3可覆盖判断M的N分支和判断Q的Y分支;同样的这两组

10、测试用例也可覆盖所有判定的真假分支。判断M判断Q单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-2222/XX-/XX-2.判定覆盖判定覆盖续续3n【优点优点】:判定覆盖具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。n【缺点缺点】:往往大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。判定覆盖仍是弱的逻辑覆盖。单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-2323/XX-/XX-3.条件覆盖条件覆盖n基本思想是:设计

11、若干测试用例,执行被测程序以后要使每个判断中每个条件的可能取值至少满足一次。1单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-2424/XX-/XX-3.条件覆盖条件覆盖续续1n判断M表达式:设条件a0取真记为T1假F1条件b0取真记为T2假F2n判断Q表达式:设条件a1取真记为T3假F3条件c1取真记为T4假F4判断M判断Q单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-2525/XX-/XX-3.条件覆盖条件覆盖续续2测试用例覆盖条件具体取值条件a=2,b=1,c=2T1,F2,T3,F4a0,b1,c=1a=1,b=2,c=3F1,T2,F

12、3,T4a0,a1它覆盖了判定它覆盖了判定M M的的N分支和判断分支和判断Q Q的的Y分支。分支。我们用条件覆盖设计的思想就是让测试用例能覆盖T1、T2、T3、T4、F1、F2、F3、F4判断M判断Q单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-2626/XX-/XX-3.条件覆盖条件覆盖续续3n【优点优点】:增加了对条件判定情况的测试,增加了测试路径。n【缺点缺点】:条件覆盖不一定包含判定覆盖。例如,我们刚才设计的用例就没有覆盖判断M的Y分支和判断Q的N分支。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。单击此处编辑母版标题样式单击此处编辑母版标题

13、样式规范 标准 专业 高效-2727/XX-/XX-4.判定条件覆盖判定条件覆盖n基本思想是:设计足够的测试用例,使得判断条件中的所有条件可能至少执行一次取值,同时,所有判断的可能结果至少执行一次。1单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-2828/XX-/XX-判断M判断Q4.判定条件覆盖判定条件覆盖续续1按照判定条件覆盖的要求,我们设计的测试用例要满足如下条件:1.所有条件可能至少执行一次取值;2.所有判断的可能结所有判断的可能结果至少执行一次。果至少执行一次。要满足要满足T1、T2、T3、T4F1、F2、F3、F4单击此处编辑母版标题样式单击此处编辑母版标

14、题样式规范 标准 专业 高效-2929/XX-/XX-4.判定条件覆盖判定条件覆盖续续2测试用例覆盖条件覆盖判断a=2,b=1,c=6T1,T2,T3,T4M的Y分支和Q的Y分支a=1,b=2,c=3F1,F2,F3,F4M的N分支和Q的N分支判断M判断Q要满足要满足T1、T2、T3、T4F1、F2、F3、F4单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-3030/XX-/XX-4.判定条件覆盖判定条件覆盖续续3n【优点优点】:能同时满足判定、条件两种覆盖标准。n【缺点缺点】:判定/条件覆盖准则的缺点是未考虑条件的组合情况。单击此处编辑母版标题样式单击此处编辑母版标题

15、样式规范 标准 专业 高效-3131/XX-/XX-5.条件组合覆盖条件组合覆盖n基本思想是:设计足够的测试用例,基本思想是:设计足够的测试用例,使得所有可能的条件取值组合使得所有可能的条件取值组合至少执行一次至少执行一次1单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-3232/XX-/XX-5.条件组合覆盖条件组合覆盖续续1n按照条件组合覆盖的基本思想,对于前面的例子,我们把每个判断中的所有条件进行组合,设计组合条件如表所示,而我们设计的测试用例就要包括所有的组合条件。编号覆盖条件取值判定条件取值具体条件取值1 T1,T2M取Y a0,b02 T1,F2M取N a0

16、,b=03 F1,T2M取N a04 F1,F2M取N a=0,b1,c16 T3,F4Q取Y a1,c=17 F3,T4Q取Y a18 F3,F4Q取N a=1,c=2或者出度=2;n由一个节点组成,入度=1并且出度=1;n长度=的最大链。单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-5656/XX-/XX-DD-路径测试路径测试续续2n为了便于理解,我们用图34三角形伪代码映射成的控制流图来说明这五种情况。单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-5757/XX-/XX-节点 DD-路径名称 定义情况 4第一15-8A59B310C4

17、11D412E313F314H315I416J317K418L419M320N321G422O323最后2单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-5858/XX-/XX-DD-路径测试路径测试续续3n提出DD路径的目的很多质量机构都把DD路径覆盖作为测试覆盖的最低可接受级别。E.F.Miller发现,当通过一组测试用例满足DD路径覆盖要求时,可以发现全部缺陷中的大约85%(Miller1991)。n如果每一条DD路径都被遍历,则我们知道每个判断分支都被执行,其实就是遍历DD路径图中每条边。对于if类的语句,这意味着真、假分支都要覆盖。对于CASE语句,则每个子句

18、都要覆盖。单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-5959/XX-/XX-基本路径测试基本路径测试n基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-6060/XX-/XX-基本路径测试基本路径测试续续基本路径测试法包括以下5个方面:1.程序的控制流图:描述程序控制流的一种图示方法。2.程序环境复杂性:环形复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该

19、度量用于计算程序的基本独立路径数目边。3.导出测试用例:通过程序的控制流图导出基本路径集,列出程序的独立路径。4.准备测试用例,确保基本路径集中的每一条路径的执行。5.图形矩阵:是在基本路径测试中起辅助作用的软件工具,利用它可以实现自动地确定一个基本路径集。单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-6161/XX-/XX-基本路径测试基本路径测试举例举例n下面我们通过一个实例来说明基本路径测试。n例:请看以下代码,它由C+语言书写。,把它转化成图形矩阵,最后请使用基本路径测试法为变量temp设计测试用例,使之满足基本路径覆盖要求。单击此处编辑母版标题样式单击此处编

20、辑母版标题样式规范 标准 专业 高效-6262/XX-/XX-基本路径测试基本路径测试举例举例1.voidReadPara(CStringtemp)2.3.if(temp=)4.m_oper.SetCurSel(0);5.else6.7.if(temp=)8.m_oper.SetCurSel(1);9.else10.11.if(temp=)12.m_oper.SetCurSel(2);13.else14.15.if(temp=)16.m_oper.SetCurSel(3);17.else18.19.if(temp=”)m_oper.SetCurSel(0)Path 2ReadPara(”)m_

21、oper.SetCurSel(1)Path 3ReadPara(”=”)m_oper.SetCurSel(2)Path 4ReadPara(”)m_oper.SetCurSel(3)Path 5ReadPara(”=”)m_oper.SetCurSel(4)Path 6ReadPara(”+”)m_oper.SetCurSel(5)单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-6565/XX-/XX-4.2.5 程序插桩程序插桩n在软件测试中,常常要用到一种“插桩”技术,通过在源代码中加入记录信息语句,以便进行运行信息的追踪和调试,统计有关的运行资源状况。单击此处编辑

22、母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-6666/XX-/XX-程序插桩程序插桩续续n想做插桩,可以思考以下几点:(1)如果出现在语句中包含了return语句,怎么在它前面插入指定语句?同时保证语句的语法合法性?例如:for(j=0;j10000;j+)if(j=k)return;不能直接在之前插入,否则意义全变了;单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-6767/XX-/XX-程序插桩程序插桩续续2(2)当出现需要在for循环语句、while循环语句中进行插入信息时候,很可能会导致程序运行时间非常长,是否有办法改进“插桩”机制?(3)是否可

23、以由用户进行指定,比如for语句、while语句或者指定的语句前不允许进行“插桩”,怎么实现?(4)如果对于一个庞大的系统软件,我们需要进行对所运行的程序的每个函数记录其运行的有关参数,如:运行开始时间、退出时间、运行总时间、调用次数等等的统计,您有什么更好的建议与想法呢?单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-6868/XX-/XX-本章小结本章小结1.白盒测试是软件测试技术中最基本的方法之一,白盒测试的核心是针对被测单元内部是如何进行工作的测试,是以覆盖测试与路径测试为基本策略。2.白盒测试是一种被广泛使用的逻辑测试方法,是由程序内部逻辑驱动的一种单元测试方

24、法。只有对程序内部十分了解才能进行适度有效的白盒测试。但是贯穿在程序内部的逻辑存在着不确定性和无穷性,尤其对于大规模复杂软件。因此我们不能穷举所有的逻辑路径,即使穷举也未必会带来好运(穷举不能查出程序逻辑规则错误,不能查出数据相关错误,不能查出程序遗漏的路径)。3.那么正确使用白盒测试,就要先从代码分析入手,根据不同的代码逻辑规则、语句执行情况,选用适合的覆盖方法。任何一个高效的测试用例,都是针对具体测试场景的。逻辑测试不是片面的测试正确的结果或是测试错误的结果,而是尽可能全面地覆盖每一个逻辑路径。单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-6969/XX-/XX-

25、作业作业1请把下面的程序流程图转化成控制流图。单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-7070/XX-/XX-作业作业2请把第2章的NextDate问题的伪代码转换成为控制流图,并简化。3为伪代码三角形程序开发条件组合覆盖的测试用例。4重新编写程序片断1420,用嵌套ifthenelse语句替代复合条件。14.if(a=b)AND(b=c)15.ThenOutput(“Equilateral”)16.ElseIf(ab)AND(ac)AND(bc)17.ThenOutput(“Scalence”)18.ElseOutput(“Isosecles”)19.EndI

26、f20.EndIf比较你改写后的程序和上面程序片断的圈复杂度。单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-7171/XX-/XX-作业作业5根据第4题的程序片断。对于a=c测试用例(例如a=4,b=5,c=4)会出现什么情况?第14行中的条件利用等式的传递性去掉了a=c这个条件,这样会出现问题吗?6如果我们仔细研究NextDate的实现,就看出一个问题。请看1个月有30天(4、6、9、11月)的CASE子句。没有day=31的特别行为,讨论这种行为是否正确。请就2月对应得day=29取值处理的CASE子句进行类似的讨论。单击此处编辑母版标题样式单击此处编辑母版标题样式规范 标准 专业 高效-7272/XX-/XX-Q&A

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com