测试理论-5.白盒技术_第1页
测试理论-5.白盒技术_第2页
测试理论-5.白盒技术_第3页
测试理论-5.白盒技术_第4页
测试理论-5.白盒技术_第5页
免费预览已结束,剩余208页可下载查看

下载本文档

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

文档简介

五白盒测试技概什么是白盒测试辑驱动测试或基于代码的测试白盒测 白盒测试目通过检查软件的逻辑结构,对程序的数据定义和进行分析,对程白盒测试特依据软件设计说明书 试对程 细节进行严密检验白盒测试应用范白盒测试与黑盒测试分别用于软件测试的不同阶段白盒测试技程序静态分程序结构分逻辑覆程序插动态测程序静态什么是静态分静态分析的目静态分析的方(1)生 (2)(4)(1)生 表类生 表的目表类变量交 表子程 表循环层次表等价表常量表操作符统计表操作数统计表生 表的目1.直接从表中查出说明、使用错循环层次变量交 2.为用户提供辅助信子程 等价常量

3.用来做错误预测和程序复杂度的计操作符统计操作数的统计变量交 变量交 表也称为变量定义 表标明各个变量的属性已定义、未定义、私有/公有说明、变量类型和使用情况子程 在表中列出各个子程序、宏和函数的属性已定义、未定义、类型 、 次数输入参数个数、类型、顺序输出参数个数、类型、顺序等价常量 (2)程序错误分程序错误分析目的 程序错误分析的类变量类型和单位分分 什么 异常 如何分 异常为了检测异常,需要检查程序的每一使用变量交叉表,表中包含已被定义,但未被的一些变量。表达式分对表达式进行分析,发现表达式中的错误不正确使用括号造成的错误数组下标越界造成的错误除数为零造成的错误对负数开平方对浮点数计算的误差进行检查接口一致性分接口一致性分析的目的接口一致性分数据流分数据流分析是随着编译系统要生成有效的数据流分析方法,可以用于查找如未定义变量等程序错误,以及查找对未曾引数据流分析重要在程序测试中,找出数据定义和引用错误是很重要的。因为,这是一些常见程序错误的表现形式,如拼错变量名、变量名或丢失了变量与变量相关的两个概变量定义:如果程序中某一语句执行时能够改变某个变量V的值,则变量:如果程序中某一语句的执行时使用了内存中变量V的值,则说该语句变量V。举例:变量定义语句X:=Y十Z;定义了 了Y和语句ifY>Zthengotoexit 了Y和Z语句READ ;定义了X语句WRITEX 了X举例:变量交 数据流分发现有两 错误①语句 了变量W,而在此之前并末对其定义 变量V,但在第一次执行循环时也未对其定义过,变量V在语句7定义。程序中还包含两个异常③语句6对Z的定义在该循环中的左边分支中从未 过程序结构分程序结构分析是白盒测试的主要之一,程序结构分析的目的是程序结构分程序结程序结构分析目程序结结构不好的程序会给测试、排错和 结构化程序的概念逐渐为人们普遍接受,要求程序员写出的程序是结构良好的。结构化程序-顺序结结构化程序-分支结结构化程序-循环结程序结构分析目利用流语法,对程序控制流进行验证结构化编程规则是否得到遵循,如果确已遵循,便可得到有关程序部利用流语法,找出程序控制结构程序控制流分 程序 分 是一种程序控制结图符处理框(矩形条件框(菱形程序控制流图分控制流图为了突出程序中控制流的结构,需要对流进行简化,这种简化后的流 称为图符控制流线(有向线控制流图符①节点:以标有的圆圈表示,代表程序流中矩形框所表示的处理、菱形表示②控制流线:以带箭头的直线或弧线表示,与程序流中的数据流线是一致的,表明了控制的顺序。控制流线生成控制流图矩为便于表示和处理控制流图,可以把控制流图表示成矩阵的形式,称为控制流控制流图矩 逻辑覆语句覆分支(判定)覆条件覆判定-条件覆路径覆语句覆语句覆盖是指按照程序流程设计若干个测试用例,然后运行被测程序,使程序中的每个可执行语句至举程序 > IF((A=2)OR(X>1))THEN该程序段有4个语句,5条路径a,b,举这时,该程序段的4个语句均得到执行,从而作到了语句覆盖。举这时,该程序段只执行了其中的3个语句,X=X/A未执行。所以,未分支(判定)覆什么是分支覆分支覆盖是指按程序中的分支(判定)条件设计若干测试用例,通过运行被测程序进试,使得程序中每个分支(判定)的真分举仍以上述程序段为例,若选用的 举 则可分别执行路径acd和abe同样使两个判断的4个分支ce和b、d分支覆盖缺CASE4和CASE5两组测试用例不仅满足了判定但是,在此程序段中的第2个判断条件x>1如果错写成x<1,使用CASE5,照样能按原路所以,判定覆盖仍无法确定判断条件的条件覆条件覆盖是指通过设计若干测举程序段举举测试用ABX所走路覆盖条CASE203CASE101CASE211的84举测试用ABX所走路覆盖分覆盖条CASE211CASE103判定-条件覆什么是判定-判定—条件覆盖要求设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断(4)判定-条件覆每个判断中包含2个条件,4种组合,所以在两个判断中共有判定-条件覆测试用ABX所走路覆盖条120382119103111路径覆路径覆盖是指设计足够多的测试用例,运行程序,要求覆盖举abd记为abe记为acd记为举测试用ABX覆盖路1203710182113014路径覆举例程序段非常简短,只有4条路径为解决这一难题,需要把覆盖路径数压缩一定限度内,如循环体只要求执行一次测试覆盖准测试的目的并非要证明程序的正确性,而是要尽可能找出程序中的错误。不存在一种十全十美的测试方法,能够发现所有的错误。要在有限的时间内,用有限的方法发现所有程序错误是做不到的,这涉及到软件测试局限性的问题。逻辑覆盖标准的确一种可能的覆盖标准是语句覆盖率要求达到100%分支覆盖率要求达到85%程序插什么是程序插程序插桩方法,就是通过在被测程序中检查点(检测语句)的方法,然后运行程序,达到程序覆程序插桩的目通过测试这些检查点的信息,可程序插桩:举程序计算整数x和整数Y的最大公约数。程序插桩方在程 在程序出口 程序插桩:举C(i)=C(i)十1虚线框中的插桩语句是为了记录语句的执行次数而的位置称为检查点。程序插桩:举插桩后的程序程序插桩策在应用程序插桩方法时,需要考虑的问题①需要探测程序中的哪些信息②在什么位置设置探测点③需要设置多少个探测动态测动态测试是对桩后测程序进行实际运行,以获得程序的覆盖信动态测试的功动态测试的实在程序 检测语句、分支和路径的探针重新对语句进行 ,以便能标识各个分支统计各个语句执行的CPU时间,以便对花费时动态测试内功能确认与接口测包括覆盖率分包括分支(判定)性能分 内存分内存泄漏会导致系统运行的,尤内存分在问题出现前发现征兆,在系 发现内 错误白盒测试实 白盒测试实Safepro/C++介被测程序说测试目的和测试测试准 分 ,获得测试报Safepro/C++Safepro/C++Safepro/C++功Safepro/C++包括静态测试和动态测试部分Safepro/C++功静态测Safepro/C++功动态测 断言的设定 Safepro/C++使用流静态测试流Safepro/C++使用流动态测试流被测程序说ulink.cpp1和5creatlink函数:创建一个含n ink函数:删除链表中值为num destroylink函数:销毁链表被测程序代voidvoid{TYPEint/*n个节点的链表*/printf("inputnumberofnode:");/*删除链表中值为num的节点*/printf("Inputthedeletednumber:");head=deleink(head,num); #include"stdio.h"#defineTYPEstructstu#defineLENsizeof(structstu)structstu{intintstructstuTYPE*creatlink(intTYPE*dele ink(TYPE*head,intnum);TYPE*insertlink(TYPE*head,TYPE*pi);voidprintlink(TYPE*head);voiddestroylink(TYPE*head被测程序代/*创建一个含n个节点的链表*/TYPE*creatlink(intn){TYPE*head=NULL,*pf,*pb;inti;{pb=(TYPE*)newprintf("record%d\n",i);printf("inputNumber:");printf("inputage:");}/*/*一个节点printf("Insertarecord\n");pnum=(TYPE*)newTYPE();printf("PointerisNULL--memoryprintf("Inputtheinsertednumber:");printf("Inputtheinsertedage:");printlink(head);/*销毁链表释放动态分配的内存destroylink(head}

}/*删除链表中值为num的节点TYPE* ink(TYPE*head,int{TYPE*pf,{printf("\nemptylist!\n");returnNULL;

被测程序代/*在链表 一个节点TYPE*insertlink(TYPE*head,TYPE* TYPE*pb,*pf;{pi- while(pb->num!=num&&pb-{ deleteprintf("Thenodeis printf("Thenodenotbeenfound!\n");returnhead;}

while((pi->num>pb- if(pi->num<=pb- pi- pb-pi- return}被测程序代/*/*销毁链表voiddestroylink(TYPE*{TYPE*p,p=while(p!=NULL{q=p-deletep;p=q;}}/*打印链表中各节点信息voidprintlink(TYPE*{{}}测试目的和测试步测试目的 测试步测试准 静态测分 ,获得测试报测试准 在SafeproC/C++中,创建测试项目,配分析被测程序,设计测试用例被测程序通过VC++编过VC++编译器编译、 。创建一个Win32ConsoleApplication项目编译 被测程导出Makefile文件SafeproC/C++的测试准创建测试项目导入Makefile文件配置测试环境创建测试项选择“项目->新建项目->VisualC导入Makefile文件 配置测试环设计测试用C.创建节点数2num=12,age=15D.创建节点数2num=12,age=15 静态测动态测静态测执行静态分查看静态分析结执行静态分查看静态分析结查看全局变量静 报查看局部变量静 报查看被测程序基本信查看函数间的调用关查看复杂度报/4lstead查看调用和被调用关系查看调用和被调用关系查看调用和被调用关系查看调用和被调用关系查看调用和被调用关系查看调用和被调用关系查看全局变量静 报 查看局部变量静 报 Main查看局部变量静 报 动态测 执行动态测在进行动态测试之前,必须先通过静态分选择要插桩的函数,选择全部函数执行编译及连接,生成插桩后的可执行文运行程序按照预先设计的测试用例 试执行动态测执行动态测执行动态测 执行动态测执行动态测测试用例创建节点数删除节点查看动查看某一函数的覆盖率信 看某一函数的覆盖率信息。查看某一函数的覆盖率信 查看某一函数的覆盖率信查看 ink函数的覆盖率信息查看所有函数覆盖率报 查看所有函数覆盖率报(2选择“结果->覆盖率报表”可以得到所有函数覆盖查看整个测

温馨提示

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

评论

0/150

提交评论