




免费预览已结束,剩余42页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
白盒测试方法,为什么要进行白盒测试?,假设此时开发工作已结束,程序送交到测试组,没有人知道代码中有一个潜在的被 0 除的错误。若测试组采用的测试用例的执行路径没有同时经过x=0和y=5/x进行测试,显然测试工作似乎非常完善,测试用例覆盖了所有执行语句,也没有被 0 除的错误发生。,基本概念,白盒测试也称结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件或程序验证。 采用白盒测试方法必须遵循以下几条原则,才能达到测试的目的: 保证一个模块中的所有独立路径至少被测试一次。 所有逻辑值均需测试真 (true) 和假 (false) 两种情况。 检查程序的内部数据结构,保证其结构的有效性。 在上下边界及可操作范围内运行所有循环。 常用白盒测试方法:逻辑覆盖法和基本路径法,逻辑覆盖法,逻辑覆盖法,逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。这一方法要求测试人员对程序的逻辑结构有清楚的了解,甚至要能掌握源程序的所有细节。 由于覆盖测试的目标不同,逻辑覆盖又可分为: 语句覆盖 判定覆盖 条件覆盖 判定/条件覆盖 条件组合覆盖 路径覆盖,语句覆盖,语句覆盖就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。这种覆盖又称为点覆盖,它使得程序中每个可执行语句都得到执行,但它是最弱的逻辑覆盖准,效果有限,必须与其它方法交互使用。,procedure example(a,b:real; x:real ); begin if (a1) and (b=0) then x:= x / a; if ( a=2 ) or (x1) then x:=x+1 end;,i. a=2, b= 0, x=4 - sacbed,语句覆盖 所有的语句至少执行一次! 是最弱的逻辑覆盖,e,f,(a1) and (b=0),(a=2) or (x1),x = x / a,x=x+1,2,s,d,1,a,f,4,c,t,b,5,t,6,3,7,判定覆盖,判定覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即程序中的每个分支至少执行一次 。判定覆盖又称为分支覆盖(branch coverage)。 判定覆盖只比语句覆盖稍强一些,实际效果表明,只是判定覆盖,还不能保证一定能查出在判断的条件中存在的错误。因此,还需要更强的逻辑覆盖准则去检验判断内部条件。,x = x / a,i: a=3, b=0,x=1: sacbd,ii: a=2, b=1,x=1: sabed,满足判定覆盖的测试用例一定满足语句覆盖:判定覆盖比语句覆盖强。但仍是弱的逻辑覆盖。,(a1) and (b=0),(a=2) or (x1),x=x+1,2,s,d,1,a,f,4,c,t,b,5,t,e,f,3,7,满足判定覆盖,(a1)and (b=0) 为一个判定 a1 为一个条件,每个语句至少执行一次! 每个判定的每种可能都至少执行一次! 即每个判定的真假分支都至少执行一次!,6,条件覆盖,条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。 条件覆盖深入到判定中的每个条件,但可能不能满足判定覆盖的要求。,每个语句至少执行一次,而且判定表达式中的每个条件都要取得各种可能的结果。,第一判定表达式: 设条件 a1 取真 记为t1 假 f1 条件 b=0 取真 记为t2 假 f2 第二判定表达式: 设条件 a=2 取真 记为t3 假 f3 条件 x1 取真 记为t4 假 f4,条件覆盖要求这8种值都要取到,e,f,(a1),(a1),(b=0),(b0),(a=2),(a2),(x1),(x1),: a=1, b=1,x=1: sabd,: a=2, b=0,x=4: sacbed,同时满足判定覆盖,e,f,(a1),(a1),(b=0),(b0),(a=2),(a2),(x1),(x1),: a=1, b=1,x=2: sabed,: a=2, b=0,x=1: sacbed,不满足判定覆盖,f,判断-条件覆盖,条件覆盖不一定包含判定覆盖,判定覆盖也不一定包含条件覆盖 既然判定条件不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖,就自然会提出一种能同时满足两种覆盖标准的逻辑覆盖,这就是判定-条件覆盖。 判定条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次。换言之,即是要求各个判断的所有可能的条件取值组合至少执行一次。,条件组合覆盖,条件组合覆盖就是设计足够的测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次。 这是一种相当强的覆盖准则,可以有效地检查各种可能的条件取值的组合是否正确。它不但可覆盖所有条件的可能取值的组合,还可覆盖所有判断的可取分支,但可能有的路径会遗漏掉。测试还不完全。,a1, b0 a1, b0 a1, b0 a1, b0 a2, x1 a2, x1 a2, x1 a2, x1,选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。,f,(a1),(a1),(b=0),(b0),(a=2),(a2),(x1),(x1),i. a=2,b=0,x=4,ii. a=2,b=1,x=1,iii. a=1,b=0,x=2,iv. a=1,b=1,x=1,i: sacbed ii: sabed iii: sabed iv: sabd,覆盖路径,满足条件组合覆盖标准的测试数据,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准。,f,4组测试数据可以使8种条件组合 每种至少出现一次,显然,满足条件组合覆盖的测试用例,也一定满足判定覆盖、条件覆盖和判定/条件覆盖。 所以,条件组合覆盖是前述几种覆盖中最强的。但满足条件组合覆盖的不一定能使程序中的每条路径都执行到,如sacbd。,路径覆盖,路径测试就是设计足够的测试用例,覆盖程序中所有可能的路径。这是最强的覆盖准则。但在路径数目很大时,真正做到完全覆盖是很困难的,必须把覆盖路径数目压缩到一定限度。,路径覆盖是相当强的逻辑覆盖,它保证程序中每条可能的路径都至少执行一次,因此更具代表性,暴露错误的能力也比较强。但为了做到路径覆盖,只需考虑每个判定式的取值,并没有检验表达式中条件的各种可能组合。如果将路径覆盖和条件组合覆盖结合起来,可以设计出检错能力更强的测试数据。,条件3 a1, b0 没有被覆盖,逻辑覆盖层次关系,课后作业,为以下流程图所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。,基本路径测试法,控制流图(cfg),控制流图(可简称流图)是对程序流程图进行简化后得到的,它可以更加突出的表示程序控制流的结构。 有向图 节点和控制流线(边) 复合条件分解 判定节点 区域,控制流图示例,圈复杂度(环形复杂度),圈复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界。独立路径必须包含一条在定义之前不曾用到的边。 有以下三种方法计算圈复杂度: 流图中区域的数量对应于环型的复杂性; 给定流图g的圈复杂度v(g),定义为v(g)=e-n+2,e是流图中边的数量,n是流图中结点的数量; 给定流图g的圈复杂度v(g),定义为v(g)=p+1,p是流图g中判定结点的数量。,cfg/顺序结构,1,17,cfg/选择(1),1,2,4,67,14,f,t,cfg/选择(2),1,2,3,4,67,89,5,14,t,f,cfg/选择(3),1,4,3,1415,57,14,2,5,810,1113,01 int f(int a) 02 03 int x; 04 switch (a) 05 case 0: 06 x=0; 07 break; 08 case 1: 09 x=1; 10 break; 11 otherwise: 12 x=2; 13 break; 14 15 return x; 16 ,cfg/循环(1),1,4,3,4,7,13,2,56,01 int f(int a) 02 03 int x=0,y=0; 04 for(x=0; xa; x+) 05 y=y+x; 06 07 return y; 08 ,cfg/循环(2),1,4,3,89,57,13,2,复合条件分解,如果判断中的条件表达式是由一个或多个逻辑运算符 (or, and, nand, nor) 连接的复合条件表达式,则需要改为一系列只有单条件的嵌套的判断。 例如: 1 if a or b 2 x 3 else 4 y 对应的逻辑为:,独立路径,独立路径:至少沿一条新的边移动的路径,1,7,6,2,3,8,9,10,11,4,5,路径1:1-11 路径2:1-2-3-4-5-10-1-11 路径3:1-2-3-6-8-9-10-1-11 路径4:1-2-3-6-7-9-10-1-11,对以上路径的遍历,就是至少一次地执行了程序中的所有语句。,基本路径测试法,基本路径测试方法是在控制流图的基础上,通过分析控制结构的环形复杂度,导出执行路径的基本集,再从该基本集设计测试用例。基本路径测试方法包括以下4个步骤: (1)画出程序的控制流图。 (2)计算程序的环形复杂度(圈复杂度),导出程序基本路径集中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。 (3)导出基本路径集,确定程序的独立路径。 (4)根据(3)中的独立路径,设计测试用例的输入数据和预期输出。,基本路径测试法实例,有下面的c函数,用基本路径测试法进行测试 void sort(int irecordnum,int itype) int x=0; int y=0; while (irecordnum- 0) if(0= =itype) x=y+2; break; else if (1= =itype) x=y+10; else x=y+20; ,第一步:画控制流图,画出其程序流程图和对应的控制流图如下,第二步:计算圈复杂度,对应上面图中的圈复杂度,计算如下: 流图中有四个区域; v(g)=10条边-8结点+2=4; v(g)=3个判定结点+1=4。,第三步:导出独立路径,根据上面的计算方法,可得出四个独立的路径。(一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路。v(g)值正好等于该程序的独立路径的条数。) 路径1:4-14 路径2:4-6-7-14 路径3:4-6-8-10-13-4-14 路径4:4-6-8-11-13-4-14 根据上面的独立路径,去设计输入数据,使程序分别执行到上面四条路径。,第四步:准备测试用例,路径1:4-14 输入数据:irecordnum0,或者 取irecordnum0的某一个值 预期结果:x0 路径2:4-6-7-14 输入数据:irecordnum1,itype0 预期结果:x2 路径3:4-6-8-10-13-4-14 输入数据:irecordnum1,itype1 预期结果:x10 路径4:4-6-8-11-13-4-14 输入数据:irecordnum1,itype2 预期结果:x20,void sort(int irecordnum,int itype) int x=0; int y=0; while (irecordnum- 0) if(0= =itype) x=y+2; break; else if(1= =itype) x=y+10; else x=y+20; ,课后作业,使用基本路径测试方法,为以下程序段设计测试用例。 void do (int x,int a,int b) 1 if ( (a1) 5 ,循环测试方法,从本质上说,循环测试的目的就是检查循环结构的有效性。 通常,循环可以划分为简单循环、嵌套循环、串接循环和 非结构循环4类。 (1)测试简单循环。设其循环的最大次数为n ,可采用以下测试集: 跳过整个循环; 只循环一次; 只循环两次; 循环 m 次,其中mn; 分别循环 n-1、n 和 n+1 次。,循环测试方法(续),(2)测试嵌套循环。如果将简单循环的测试方法用于嵌套循环,可能的测试次数会随嵌套层数成几何级数增加。 此时可采用以下办法减少测试次数: 测试从最内层循环开始,所有外层循环次数设置为最小值; 对最内层循环按照简单循环的测试方法进行; 由内向外进行下一个循环的测试,本层循环的所有外层循环仍取最小值,而由本层循环嵌套的循环取某些“典型”值; 重复上一步的过程,直到测试完所有循环。 (3)测试串接循环。若串接的各个循环相互独立,则可分别采用简单循环的测试方法;否则采用嵌套循环的测试方法。 (4)对于非结构循环这种情况,无法进行测试,需要按结构化程序设计的思想将程序结构化后,再进行测试。,z路径覆盖下的循环测试方法,z路径覆盖是路径覆盖的一种变体,它是将程序中的循环结构简化为选择结构的一种路径覆盖。 循环简化的目的是限制循环的次数,无论循环的形
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 土豆淀粉生产创新创业项目商业计划书
- 2025年教育行业教育信息化产品创新与应用案例分析报告
- 现场安全生产知识培训课件
- 2025年建筑施工安全管理信息化与安全生产监管报告
- 2025年美妆行业个性化定制服务模式的产业链分析报告
- 现在进行时课件文档
- 2026届安徽省黄山市屯溪第二中学高三化学第一学期期中调研模拟试题含解析
- 现代管理知识培训课件
- 北京市衡中清大教育集团2026届化学高一上期中复习检测模拟试题含解析
- 2025年医学影像技术考试设备操作专项训练试卷 技术应用能力提升
- 活动成都热波zebra音乐节营销策划方案5月1日5月3日
- 四链融合:新质生产力的深度路径
- 2024年(IPA)国际注册对外汉语教师资格认证考试真题卷(含答案)
- 2025-2026学年外研版(三起)(2024)小学英语三年级上册教学计划及进度表
- 小学思政课《爱国主义教育》
- SMART200与ACS510通过modbus通信控制启停
- 山西省临汾市各县区乡镇行政村村庄村名居民村民委员会明细及行政区划代码
- 项目领导班子竞聘面试评分表
- 皮肤科常见疾病学习课件
- 工序质量报验单
- 斜屋面施工方案
评论
0/150
提交评论