白盒测试PPT演示课件_第1页
白盒测试PPT演示课件_第2页
白盒测试PPT演示课件_第3页
白盒测试PPT演示课件_第4页
白盒测试PPT演示课件_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件测试技术,主讲人:刘伟,1,第3章白盒测试,白盒测试(WhiteBoxTesting)结构测试(StructuredTesting)逻辑驱动测试(Logic-DrivenTesting)基于程序的测试(Code-BasedTesting)基于覆盖的测试,2,第3章白盒测试,控制流测试数据流测试程序插桩程序变异测试白盒测试工具软件缺陷分析,3,控制流测试,基本概念控制流图有向图路径、完整路径可达、简单路径、基本路径、子路径回路、无回路路径A连接B路径A覆盖路径B,4,控制流覆盖准则,覆盖率:测试的完全程度如何?,5,覆盖率概念,如:一个程序总代码为100行,使用测试用例运行一次,执行了75行代码,则代码覆盖率75,6,控制流覆盖准则,逻辑覆盖:常见的六种覆盖方法语句覆盖判定覆盖(也称分支覆盖)条件覆盖(也称谓词覆盖)判定/条件覆盖条件组合覆盖路径覆盖,7,语句覆盖,设计若干测试用例,使得程序中每条语句至少被执行一次。,设计原则:测试用例尽量少,覆盖率尽量高,8,举例,测试用例设计:,红色字母代表程序执行路径,9,测试用例设计:,10,例3-2,测试用例设计:,11,语句覆盖,优点:直观、简单、易自动化缺点:发现错误能力很“弱”对隐藏的条件和可能到达的隐式逻辑分支,无法测试,12,语句覆盖,例:ifelse结构,如右例所示:当A=2B=0X=3时,满足语句覆盖要求,但abd分支未测试。,13,控制流覆盖准则,逻辑覆盖:常见的六种覆盖方法语句覆盖判定覆盖(也称分支覆盖)条件覆盖(也称谓词覆盖)判定/条件覆盖条件组合覆盖路径覆盖,14,判定覆盖,设计若干测试用例,使得程序中每个判定至少有一次为真值,有一次为假值,程序中的每个分支至少执行一次,15,判定覆盖,测试用例设计:,(O),(A),(B),(D),16,当A=2B=0X=3时,即可满足语句覆盖要求,但abd分支未测试,判定覆盖测试用例设计:,判定覆盖,17,测试用例设计:,18,例3-2,测试用例设计:,19,判定覆盖,优点:发现错误能力比语句覆盖强缺点:对复合条件判断,只判定整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。,20,控制流覆盖准则,逻辑覆盖:常见的六种覆盖方法语句覆盖判定覆盖(也称分支覆盖)条件覆盖(也称谓词覆盖)判定/条件覆盖条件组合覆盖路径覆盖,21,条件覆盖,设计若干测试用例,使得判定中的每个条件的可能取值至少满足一次。,22,条件覆盖,测试用例设计:,(O),(A),(B),(D),23,判定覆盖测试用例设计未有B!=0的取值,条件覆盖,条件覆盖测试用例设计:,24,测试用例设计:,25,例3-2,测试用例设计:,26,例3-4,1、列出所有的原子条件:i=0j=0k=0i+j=ki+k=jj+k=Ii=ji=kj=k2、设计测试用例,使得每个条件取一次真值和一次假值,27,例3-4,设计测试用例如下表所示,28,条件覆盖,优点:发现错误能力比语句覆盖强缺点:条件覆盖并不能保证判定覆盖。对复合条件,条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。,29,控制流覆盖准则,逻辑覆盖:常见的六种覆盖方法语句覆盖判定覆盖(也称分支覆盖)条件覆盖(也称谓词覆盖)判定/条件覆盖条件组合覆盖路径覆盖,30,判定条件覆盖,设计若干测试用例,使得判定中的每个条件的可能取值至少出现一次,且每个判断本身的判定结果也至少出现一次。,31,判定条件覆盖,测试用例设计:,(O),(A),(B),(D),32,判定条件覆盖,条件覆盖测试用例设计也满足判定条件覆盖的要求:,判定覆盖测试用例设计未有B!=0的取值,33,测试用例设计:,34,例3-2,测试用例设计:,35,例3-4,1、列出所有的原子条件:i=0j=0k=0i+j=ki+k=jj+k=ii=ji=kj=k2、列出所有的判定(1)i=0|j=0|k=0|i+j=k|i+k=j|j+k=i(2)i=jelsea=a/b;,基本块的划分对代码结构和代码优化有重要意义。,57,58,补充:判定路径覆盖,判定覆盖的一个变体判定路径:起始位置是函数入口或一个判定的开始,结束位置是下一个判定的开始,59,60,补充:Z路径覆盖,路径覆盖的一个变体,简化循环机制,只考虑执行一次和0次的情况,61,如何使用覆盖率,覆盖率不是目的,只是一种手段软件测试实践过程:单元测试和代码审查集成测试和系统测试,必要时会对核心模块或者bug较多模块与开发人员一起重新做代码审查在产品比较稳定之后,会采用一些测试工具来做覆盖率测试,可以发现哪些函数没有跑到,进而更新或加入新的测试用例。,62,如何使用覆盖率,你不可能针对所有的覆盖率指标去进行测试;相反,只考虑一种覆盖率指标也是不恰当的一般项目的覆盖率不可能100%,一般采取的标准是函数覆盖率90%,语句覆盖率70%.,63,如何使用覆盖率,不要追求绝对100的覆盖率对测试人员设计的测试用例通常要求:语句覆盖率:100%分支覆盖率:85以上路径覆盖率:80以上,64,第3章白盒测试,控制流测试数据流测试程序插桩程序变异测试白盒测试工具软件缺陷分析,65,数据流测试,基本概念控制流图和测试覆盖准则一旦给定,即可产生测试用例数据流测试是根据代码中变量的使用情况进行的测试,面向程序中的数据。早期的数据流分析常常集中于以下缺陷:变量被定义,但是从来没有使用(引用);所使用的变量没有被定义;变量在使用之前被定义两次或多次(重复定义)。,66,数据流测试,两个概念变量的定义性出现:变量定义或被赋值。节点nG(P)是变量vV的定义节点,记做DEF(v,n),当且仅当变量v的值由对应节点n的语句片段处定义。输入语句、赋值语句、循环控制语句和过程调用,都是定义节点语句的例子。如果执行对应这种语句的节点,那么该变量关联的存储单元的内容就会改变。,67,数据流测试,变量的引用性出现:变量数据被引用。节点nG(P)是变量vV的使用节点,记做USE(v,n),当且仅当变量v的值由对应节点n的语句片段处使用。计算性引用用于计算新数据(记做C-use)谓词性引用用于条件控制(记做P-use)输出语句、赋值语句、条件语句、循环控制语句和过程调用,都是使用节点语句的例子。如果执行对应这种语句的节点,那么该变量关联的存储单元的内容保持不变。,68,数据流覆盖准则,定义覆盖测试准则引用覆盖测试准则定义引用覆盖测试准则,69,第3章白盒测试,控制流测试数据流测试程序插桩程序变异测试白盒测试工具软件缺陷分析,70,程序插桩,“插桩”:通过在源代码中加入记录信息语句,以便进行运行信息的追踪和调试,统计有关的运行资源状况。如print语句插桩技术是实现各种覆盖测试的必要手段。,71,程序插桩举例,例:常用printf语句(c语言)计算x1+2+3+4+5+10程序段:x=0;for(inti=0;i=10;i+)x=x+i;printf(“+%d=%d”,i,x);,72,统计可执行语句的覆盖情况把插入的语句称为“探测器”,73,程序插桩,设计时考虑的问题明确要探测哪些信息?在程序的什么部位设置探测点?需要设计多少个探测点?,74,程序插桩,探测点设置位置程序块的第一个可执行语句之前循环语句之后条件语句之后在else、elseif、endif之后输入输出语句之后goto语句之后,75,程序插桩,2、用于断言检测的程序插桩断言(Assertion):assert格式:voidassert(intexpression),其中,expression为假时,会终止程序运行。一般在debug版本中启用,release版本中禁用如:文件检索系统UT_TD_002_005UT_TC_002_005_003_003():fp2=fopen(str,rt);_ASSERT(fp2!=NULL);,76,第3章白盒测试,控制流测试数据流测试程序插桩程序变异测试白盒测试工具软件缺陷分析,77,程序变异测试-错误驱动测试,遗传算法(GeneticAlgorithm,简称GA)遗传算法几个重要概念1、染色体(Chronmosome)个体(individuals)、群体(population)2、基因(Gene)3、适应度(Fitness)适应度函数:对问题中的每一个染色体进行度量的函数。,78,遗传算法,遗传算法几个操作选择(复制):根据各个个体的适应度,按照一定的规则或方法,从第t代群体P(t)中选择出一些优良的个体遗传到下一代群体P(t+1)中;交叉:将群体P(t)内的各个个体随机搭配成对,对每一对个体,以某个概率(称为交叉概率)交换它们之间的部分染色体;变异:对群体P(t)中的每一个个体,以某一概率(称为变异概率)改变某一个或某一些基因座上的基因值为其他基因值。,79,遗传算法流程图,80,遗传算法,遗传算法已经在求解旅行商问题、背包问题、装箱问题、图形划分问题等方面得到成功的应用;在生产调度问题、自动控制、机器人学、图象处理、人工生命、遗传编码和机器学习等方面获得了广泛的运用。,81,程序变异测试-错误驱动测试,程序P的变异因子m(p)也是一个程序,是对P进行微小改动而得到。称m(p)是P的变异因子。,例如,测试代码片段:if(a,对条件(a,82,程序强变异测试,若P在D上是正确的,可以找出P的变异因子的某一集合:m=M(P)|m(p)是P的变异因子1、若m中每一元素在D上存在错误,则可认为程序的正确程度较高。2、若m中某些元素在D上不存在错误,则可能存在三种情况:这些变异因子与P在功能上是等价的。现有的测试数据不足以找出P与其变异因子间的差别。P可能含有错误,而其某些变异因子却是正确的。,83,程序强变异测试,使用程序变异方法,最重要的是怎样建立变异因子。一些常见的变异运算:常量之间替换、标量与变量互换、数组名替换、算术/关系/逻辑运算符替换、插入绝对值符号、插入单面运算符、语句分解、语句删除、GOTO、循环终止条件变换,84,程序强变异测试,【例3-14】ab,a=b,ab,ab,ab【例3-15】(1)term=x变异成term=0(2)i=100(3)i%2=0变异成i%2=1,85,程序强变异测试,优点:较为有效的测试方法,针对性强,系统性强。缺点:1、要运行所有的变异因子,从而成倍地提高了测试的成本;2、决定程序与其变异因子是否等价是一个递归不可解问题。,86,程序弱变异测试,弱变异:只对被测程序进行测试的变异方法。弱变异和强变异有很多相似之处。其主要差别在于:弱变异强调的是变动程序的组成部分,根据弱变异准则,只要事先确定导致C与C产生不同值的测试数据组,则可将程序在此测试数据组上运行,而并不实际产生其变异因子。弱变异测试方法的主要优点是开销较小,效率较高。,87,第3章白盒测试,控制流测试数据流测试程序插桩程序变异测试白盒测试工具软件缺陷分析,88,白盒测试工具,一、静态工具Logiscope静态测试

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论