白盒测试方法

上传人:wjs****19 文档编号:241812750 上传时间:2024-07-26 格式:PPT 页数:64 大小:1.17MB
返回 下载 相关 举报
白盒测试方法_第1页
第1页 / 共64页
白盒测试方法_第2页
第2页 / 共64页
白盒测试方法_第3页
第3页 / 共64页
点击查看更多>>
资源描述
SWPU 结构构测试 或或 逻辑驱动测试 基于被基于被测程序的源代程序的源代码,而不是,而不是软件的件的规格格说明。明。第第4章章 白盒测试方法白盒测试方法SWPU白盒测试的基本概念白盒测试的基本概念 1逻辑覆盖逻辑覆盖 2基于路径的测试基于路径的测试 3其它测试类型其它测试类型4主主要要内内容容SWPU白盒测试的基本概念白盒测试的基本概念v 什么是白盒什么是白盒测试把程序看成装在一个透明的白盒子里,程序的把程序看成装在一个透明的白盒子里,程序的结构和构和处理理过程完全可程完全可见,按照程序的内部,按照程序的内部逻辑测试程序,以程序,以检查程序中程序中的每条通路是否都能按照的每条通路是否都能按照预先要求正确工作。先要求正确工作。白盒白盒测试要求要求对被被测程序的程序的结构特构特性做到一定程度的覆盖,并以性做到一定程度的覆盖,并以软件中件中的某的某类成分是否都已成分是否都已经得到得到测试为准准则来判断来判断软件件测试的充分性,也称的充分性,也称为基于覆盖的基于覆盖的测试技技术。SWPU白盒测试白盒测试白盒白盒测试要求要求测试人人员对程序的程序的结构和构和处理理过程有程有完全的了解,一般由开完全的了解,一般由开发工程工程师负责实施。施。白盒白盒测试主要主要对程序模程序模块进行以下行以下检查:对程序模程序模块的所有独立的的所有独立的执行路径至少要行路径至少要测试一次。一次。对所有的所有的逻辑判定,取真或假的两种情况至少要判定,取真或假的两种情况至少要测试一次。一次。对程序程序进行行边界界检查(常(常见的如数据越界的如数据越界检验),所有所有循循环检查。检验内部数据内部数据结构的有效性。构的有效性。SWPU白盒测试的常用方法白盒测试的常用方法逻辑测试路径路径测试 程序程序结构构分析分析 其它方法其它方法1 概述概述(3/7)其它方法其它方法数据流测试循环测试域测试Z路径测试SWPU二个基本概念二个基本概念1.控制流图控制流图2.圈复杂度圈复杂度1 概述概述(4/7)v控制流控制流图(程序程序图)是流程是流程图的一种的一种简化(化(由由节点和控制点和控制边组成成),一),一个个软件程序的件程序的结构可以用构可以用控制流控制流图来描述,程序的来描述,程序的运行运行过程也可以用控制流程也可以用控制流图中的路径来刻画。中的路径来刻画。v 示例:示例:示例:示例:节点节点边边区域区域复合条件分解复合条件分解为多个多个单个条件!个条件!SWPUv 圈复圈复杂度度(环形复形复杂度度)程序程序结构复构复杂性的度量方法性的度量方法圈复圈复杂度:度:从程序的从程序的环路复路复杂性可性可导出程序基本路径出程序基本路径集合中的独立路径条数(确保所有集合中的独立路径条数(确保所有语句至句至少少执行一次)行一次)独独立立路路径径必必须包包含含一一条条在在定定义之之前前不不曾曾用用到的到的边SWPU圈(圈(环形)复形)复杂度有三种度有三种计算方法:算方法:V(G)=E-N+2,e是程序控制流图中边的数量,n是程序控制流图中结点的数量V(G)=程序中的环域数V(G)=P+1,P是流图G中判定结点的数量SWPU白黑测试动态测试方法白黑测试动态测试方法v 逻辑覆盖法覆盖法v 路径覆盖法路径覆盖法v 基本路径覆盖法基本路径覆盖法SWPU逻辑覆覆盖盖是是以以程程序序的的内内部部逻辑结构构为基基础的的测试用用例例设计技技术,属属于于白白盒盒测试。它它要要求求测试人人员十十分分清清楚楚程程序序的的逻辑结构,考构,考虑的是的是测试用例用例对程序内部程序内部逻辑覆盖的程度。覆盖的程度。逻辑覆盖逻辑覆盖语句覆盖句覆盖判定覆盖判定覆盖条件覆盖条件覆盖判定条件覆盖判定条件覆盖条件条件组合覆盖合覆盖SWPU1 语句覆盖语句覆盖 设计足足够的的测试用例,使用例,使得程序中的每个得程序中的每个语句至少句至少执行行一次。一次。SWPU1 语句覆盖语句覆盖入口入口A 1AND B=0TA=2OR X 1TX=X/AX=X+1返回返回FFABX用例1204用例2?第一个判断中的第一个判断中的逻辑运算符运算符“AND”若若错写写成了成了“OR”,能能否否测试出来?出来?SWPU2 判定覆盖判定覆盖 设计足足够的的测试用例,使用例,使得在得在语句覆盖的基句覆盖的基础上上,程序程序中每个判定的取中每个判定的取“真真”分支和分支和取取“假假”分支至少都分支至少都执行一次,行一次,判定覆盖又称分支覆盖。判定覆盖又称分支覆盖。SWPU2 判定覆盖判定覆盖(分支覆盖分支覆盖)入口入口A 1AND B=0TA=2OR X 1TX=X/AX=X+1返回返回FFABX用例1204用例2 1 1 1?判定覆盖比判定覆盖比语句覆句覆盖盖强,但是仍不能保,但是仍不能保证判断条件的正确性。例判断条件的正确性。例如:第二个判断条件中如:第二个判断条件中的的x x1 1若若错写成了写成了x x1,1,能否能否测试出来?出来?SWPU3 条件覆盖条件覆盖 设计足足够的的测试用例,在用例,在语句覆盖的基句覆盖的基础上使得程序判上使得程序判定中的每个条件能定中的每个条件能获得各种可得各种可能的能的结果。果。SWPU3 条件覆盖条件覆盖入口入口A 1AND B=0TA=2OR X 1TX=X/AX=X+1返回返回FFABX用例1204用例2 1 1 1ABX用例1103用例22 1 1?是否是否满足判定覆足判定覆盖盖?SWPU4 判定条件覆盖判定条件覆盖 设计足足够的的测试用例,使用例,使得判定中的每个条件都取到各得判定中的每个条件都取到各种可能的种可能的值,而且每个判定表,而且每个判定表达式也都取到各种可能的达式也都取到各种可能的结果。果。SWPU4 判定判定/条件覆盖条件覆盖判判定定条条件件覆覆盖盖仍仍有有缺缺陷陷。从从表表面面上上看看,它它测试了了所所有有条条件件的的所所有有可可能能结果果,但但事事实上上并并不不是是这样。因因为某某些些条条件件掩掩盖盖了了另另一一些些条条件件。例例如如,在在逻辑表表达达式式中中,如如果果“与与”表表达达式式中中某某一一条条件件为“假假”,则整整个个表表达达式式的的值为“假假”,这个个表表达达式式中中另另外外的的几几个个条条件件就就不不起起作作用用了了。同同样地地,如如果果在在“或或”表表达达式式中中,某某一一条条件件为“真真”,则整整个个表表达达式式的的值为“真真”,其其它它条条件件也也就就不不起起作作用用了了。因因此此,采采用用判判定定条条件件覆覆盖盖时,逻辑表达式中的表达式中的错误不一定能不一定能测试出来。出来。入口入口A 1AND B=0TA=2OR X 1TX=X/AX=X+1返回返回FFABX用例1204用例2 1 1 1SWPU5 条件组合覆盖条件组合覆盖 设计足足够的的测试用例,使用例,使得每个判定中的条件的各种可得每个判定中的条件的各种可能能组合都至少出合都至少出现一次。一次。SWPU5 条件组合覆盖条件组合覆盖可能的条件可能的条件组合:合:(1)A1,B0(2)A1,B0(3)A1,B0(4)A1,B0(5)A2,x1(6)A2,x1(7)A2,x1(8)A2,x1相相应的的输入数据:入数据:A2,B0,x4 满足(足(1)和()和(5)A 2,B 1,x 1 满足(足(2)和()和(6)A 1,B 0,x 2 满足(足(3)和()和(7)A 1,B 1,x 1 满足(足(4)和()和(8)显然然,满足足条条件件组合合覆覆盖盖的的测试数数据据,也也一一定定满足足判判定定覆盖、条件覆盖和判定条件覆盖覆盖、条件覆盖和判定条件覆盖标准。准。SWPUTEST CASES:A2,B0,x4A2,B1,x1A1,B0,x2A1,B1,x1入口入口A 1AND B=0TA=2OR X 1TX=X/AX=X+1返回返回FF?请写出各写出各测试用例的用例的执行路径。然后考察是行路径。然后考察是否覆盖了否覆盖了(TF)路径。路径。v语句覆盖语句覆盖运行被测试程序,使得每一条可执行运行被测试程序,使得每一条可执行语句语句至少执行一次至少执行一次v分支覆盖(又称判定覆盖)分支覆盖(又称判定覆盖)运运行行被被测测程程序序,使使程程序序中中每每个个判判断断的的取取真真分分支支和和取取假假分分支支至至少少执执行一次行一次v条件覆盖条件覆盖运运行行被被测测程程序序,使使程程序序中中每每个个判判断断的的每每个个条条件件的的每每个个可可能能取取值值至至少执行一次少执行一次v判定判定-条件覆盖条件覆盖运运行行被被测测程程序序,使使程程序序中中每每个个判判断断的的每每个个条条件件的的所所有有可可能能取取值值至至少执行一次少执行一次,并且,并且每个可能的判断结果每个可能的判断结果也至少执行一次也至少执行一次v条件组合测试条件组合测试运运行行被被测测程程序序,使使程程序序中中每每个个判判断断的的所所有有可可能能的的条条件件取取值值组组合合至至少执行一次少执行一次SWPU路径覆盖法路径覆盖法v结点覆盖点覆盖运行所测程序,要覆盖程序中所有结点v边覆盖覆盖运行所测程序,要覆盖程序中所有边v路径路径测试运行所测程序,要覆盖程序中所有可能的路径SWPU每条可能的路径都至少每条可能的路径都至少执行一次。行一次。路径路径测试:选取足取足够多多测试数据,使程序的每一条可能路数据,使程序的每一条可能路径都至少径都至少执行一次。行一次。入口入口A 1AND B=0TA=2OR X 1TX=X/AX=X+1返回返回FFTest cases:A=1,B=1,X=1 A=1,B=1,X=2 A=3,B=0,X=1 A=2,B=0,X=4v测试以下程序段:测试以下程序段:说明:明:程序段中每行开程序段中每行开头的数的数字(字(18)是)是对每条每条语句的句的编号。号。(1)画出程序的流程画出程序的流程图。(2)分分别以以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖方法方法设计测试用例,并用例,并写出每个写出每个测试用例的用例的执行路行路径(用径(用题中中给出的出的语句句编号号表示)。表示)。void Do(int X,int A,int B)1 if(A0)&(B2)2 X=X+A;3 else4 5 if(A=0)|(X0 and B2A=0 or X0,B0,B2:T1,T2 A0,B2:T1,T2 A0,B2:T1,T2 A=0,X1:T3,T4 A=0,X1:T3,T4 A0,X 0)5 6 if(0=iType)7 x=y+2;8 else9 if(1=iType)10 x=y+10;11 else12 x=y+20;13 14 SWPU第一步:画出控制流图第一步:画出控制流图SWPU第二步:计算圈复杂度第二步:计算圈复杂度v程序图的圈复杂度V(G)=10条边-8结点+2=4V(G)=3个判定结点+1=4V(G)=3个闭环+1个开环=4SWPU第三步:导出测试用例第三步:导出测试用例v根据上面的计算方法,可得出四个独立的路径:路径1:4-14路径2:4-6-7-14路径3:4-6-8-10-13-4-14路径4:4-6-8-11-13-4-14v根据上面的独立路径,设计测试用例,使程序分别执行上述的四条路径第四步:准备测试用例第四步:准备测试用例v为了确保基本路径集中的每一条路径的执行,根据判断结点给出的条件,为了确保基本路径集中的每一条路径的执行,根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测试到选择适当的数据以保证某一条路径可以被测试到v满足上面例子基本路径集的测试用例满足上面例子基本路径集的测试用例路径1:4-14输入数据:iRecordNum0,或者取iRecordNum0)2 while(i_count0)3 If(0=i_flag)3 If(0=i_flag)4 i_temp=i_count+100;4 i_temp=i_count+100;5 break;5 break;6 else6 else 7 If(1=i_flag)7 If(1=i_flag)8 i_temp=i_temp+10;8 i_temp=i_temp+10;9 else9 else 10 i_temp=i_temp+20;10 i_temp=i_temp+20;11 i_count-;11 i_count-;12 return i_temp;12 return i_temp;源程序:源程序:1.依据程序内部逻辑画出相应的控制流图134,56,789,10111222.计算环路复杂度控制流测试方法举例控制流测试方法举例3.确定独立路径组成的基本路径集合path1 1-2-3-6-7-8-11-2-12Path2 1-2-12Path3 1-2-3-4-5-12Path4 1-2-3-6-7-9-10-11-2-12 4.测试用例用例用例IDIDi_counti_counti_flagi_flag预期期输出出test 1test 11 11 11010test 2test 20 02 20 0test 3test 32 20 0102102test 4test 41 13 32020SWPU白盒测试的其它方法白盒测试的其它方法v 循循环测试v 域域测试v Z Z路径路径测试v 数据流数据流测试SWPU循环测试循环测试循环分为循环分为循环分为循环分为3 3种类型种类型种类型种类型简单循环简单循环简单循环简单循环串接循环串接循环串接循环串接循环嵌套循环嵌套循环嵌套循环嵌套循环SWPUv简单循循环测试方案(假方案(假设n是允是允许通通过循循环的最的最大次数大次数)跳跳过循循环只通只通过循循环一次一次通通过循循环两次两次通通过循循环m次,其中次,其中m n-1通通过循循环n1,n,n+1次次SWPUv嵌套循嵌套循环对最内最内层循循环做做简单循循环的全部的全部测试。所有其它。所有其它层的循的循环变量置量置为最小最小值;逐步外推,逐步外推,对其外面一其外面一层循循环进行行测试。测试时保持所有外保持所有外层循循环的循的循环变量取最小量取最小值,所有其,所有其它嵌套内它嵌套内层循循环的循的循环变量取量取“典型典型”值。反复反复进行,直到所有各行,直到所有各层循循环测试完完毕。对全部各全部各层循循环同同时取最小循取最小循环次数,或者同次数,或者同时取最大循取最大循环次数次数SWPUv串接串接循循环如果串接循如果串接循环的各个循的各个循环都彼此独立,都彼此独立,则可以使用可以使用简单循循环的方法来的方法来测试串接循串接循环。当循当循环不独立不独立时,使用,使用测试嵌套循嵌套循环的方的方法来法来测试串接循串接循环。v不不规则循循环不不能能测试,尽尽量量重重新新设计给结构构化化的的程程序序结构后再构后再进行行测试SWPUv 域域是指程序的是指程序的输入空入空间输入入空空间又又可可以以划划分分成成若若干干个个子子空空间,每每个个子子空空间对应一一种种不同的不同的计算,子空算,子空间的划分是由分支的划分是由分支语句的条件式决定的句的条件式决定的有有时将一个域称将一个域称为一个等介一个等介类v 域域测试主要是主要是针对域域错误进行的行的测试域域错误 如如果果程程序序的的控控制制流流有有错误,对于于某某些些特特定定的的正正确确输入入,可能可能执行的是一条行的是一条错误的路径,的路径,这种种错误称称为域域错误。域测试域测试SWPUv 域域测试就就是是在在分分析析输入入域域的的基基础上上,选择适适当当的的 测试点点进行行测试v 域域测试的不足的不足域测试对程序的限制较多当程序中有很多的路径时,所需的测试点太多SWPUZ路径覆盖路径覆盖Z路径覆盖路径覆盖称简化循环意义下的路径覆盖为Z路径覆盖。即无论循环的形式和实际执行循环体的次数多少,我们只考虑循环一次和零次两种情况。(a)(b)(c)Z Z路径路径测试能有效降低被能有效降低被测程序的路径数程序的路径数白盒测试综合白盒测试综合策略策略策略策略v在测试中,应先选用工具进行静态结构分析v测试中可采取先静态后动态的组合方式。先进行静态结构分析、代码检查,再进行覆盖率测试v通过代码检查和动态测试的方式对静态分析结果进行进一步的确认v覆盖率覆盖率测试是白盒是白盒测试的重点的重点,一般可使用基本路径测试法。对于重点模块,应使用多种覆盖率标准来衡量代码的覆盖率v不同的测试阶段,测试的重点不同,方法也应该有所不同SWPU面对对象的白盒测试面对对象的白盒测试v类测试一般有两种主要的方式:功能性一般有两种主要的方式:功能性测试和和结构性构性测试,即,即对应于于传统结构化构化软件的黑盒件的黑盒测试和白盒和白盒测试。v结构性构性测试对类中的方法中的方法进行行测试,它把,它把类作作为一个一个单元来元来进行行测试。测试分分为两两层:第一:第一层考考虑类中各中各独立方法的代独立方法的代码;第二;第二层考考虑方法之方法之间的相互作用。的相互作用。v对于一个于一个类的的测试要保要保证类在其状在其状态的代表集上能的代表集上能够正确工作,构造函数的参数正确工作,构造函数的参数选择以及消息序列的以及消息序列的选择都要都要满足足这一准一准则 SWPU面对对象的白盒测试面对对象的白盒测试v方法的方法的单独独测试结构性测试的第一层是考虑各独立的方法,这可以与过程的测试采用同样的方法,两者之间最大的差别在于方法改变了它所在实例的状态,这就要取得隐藏的状态信息来估算测试的结果,传给其它对象的消息被忽略,而以桩来代替,并根据所传的消息返回相应的值,测试数据要求能完全覆盖类中代码,可以用传统的测试技术来获取。SWPU面对对象的白盒测试面对对象的白盒测试v方法的方法的综合合测试第二层要考虑一个方法调用本对象类中的其它方法和从一个类向其它类发送信息的情况。单独测试一个方法时,只考虑其本身执行的情况,而没有考虑动作的顺序问题,测试用例中加入了激发这些调用的信息,以检查它们是否正确运行了。对于同一类中方法之间的调用,一般只需要极少甚至不用附加数据,因为方法都是对类进行存取,故这一类测试的准则是要求遍历类的所有主要状态。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 生活常识


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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