安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

白盒测试的概念目的是什么?及主要方法有哪些?

8月28日 蚀肉堂投稿
  1白盒测试的概念
  白盒测试也称结构测试或逻辑驱动测试,是一种测试用例设计方法,它从程序的控制结构导出测试用例。(测试用例由测试输入数据以及与之对应的输出结果组成。)
  白盒测试使用被测单元内部如何工作的信息,允许测试人员对程序内部逻辑结构及有关信息来设计和选择测试用例,对程序的逻辑路径进行测试。基于一个应用代码的内部逻辑知识,测试是基于覆盖全部代码、分支、路径、条件。2白盒测试的主要目的保证一个模块中的所有独立路径至少被执行一次;对所有的逻辑值均需要测试真、假两个分支;在上下边界及可操作范围内运行所有循环;检查内部数据结构以确保其有效性。
  3测试覆盖标准
  白盒法特点:以程序的内部逻辑为基础设计测试用例,所以又称为逻辑覆盖法。应用白盒法时,手头必须有程序的规格说明以及程序清单。
  白盒法考虑的是测试用例对程序内部逻辑的覆盖程度。最彻底的白盒法是覆盖程序中的每一条路径,但是由于程序中一般含有循环,所以路径的数目极大,要执行每一条路径是不可能的,只能希望覆盖的程度尽可能高些。
  图1程序流程图
  图1包括了一个执行达20次的循环。那么它所包含的不同执行路径数高达520(1013)条,若要对它进行穷举测试,覆盖所有的路径。假使测试程序对每一条路径进行测试需要1毫秒,同
  样假定一天工作24小时,一年工作365天,那么要想把如图所示的小程序的所有路径测试完,则需要3170年。
  为了衡量测试的覆盖程度,需要建立一些标准,目前常用的一些覆盖标准从低到高分别是:语句覆盖:是一个比较弱的测试标准,它的含义是:选择足够的测试用例,使得程序中每个语句至少都能被执行一次。它是最弱的逻辑覆盖,效果有限,必须与其它方法交互使用。判定覆盖(也称为分支覆盖):执行足够的测试用例,使得程序中的每一个分支至少都通过一次。判定覆盖只比语句覆盖稍强一些,但实际效果表明,只是判定覆盖,还不能保证一定能查出在判断的条件中存在的错误。因此,还需要更强的逻辑覆盖准则去检验判断内部条件。条件覆盖:执行足够的测试用例,使程序中每个判断的每个条件的每个可能取值至少执行一次;条件覆盖深入到判定中的每个条件,但可能不能满足判定覆盖的要求。判定条件覆盖:执行足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果。判定条件覆盖有缺陷。从表面上来看,它测试了所有条件的取值。但是事实并非如此。往往某些条件掩盖了另一些条件。会遗漏某些条件取值错误的情况。为彻底地检查所有条件的取值,需要将判定语句中给出的复合条件表达式进行分解,形成由多个基本判定嵌套的流程图。这样就可以有效地检查所有的条件是否正确了。条件组合覆盖:执行足够的例子,使得每个判定中条件的各种可能组合都至少出现一次。这是一种相当强的覆盖准则,可以有效地检查各种可能的条件取值的组合是否正确。它不但可覆盖所有条件的可能取值的组合,还可覆盖所有判断的可取分支,但可能有的路径会遗漏掉。测试还不完全。4白盒测试的主要方法逻辑驱动测试语句覆盖判定覆盖(分支覆盖)条件覆盖判定条件覆盖条件组合覆盖基本路径测试设计足够多的测试用例,运行所测程序,要覆盖程序中所有可能的路径。这是最强的覆盖准则。但在路径数目很大时,真正做到完全覆盖是很困难的,必须把覆盖路径数目压缩到一定限度。4。1逻辑驱动测试4。1。1语句覆盖
  程序1如下:PROCEDUREM(VARA,B,X:REAL);BEGINIF(A1)AND(B0)THENX:XA;IF(A2)OR(X1)THENX:X1;END
  图2程序流程图
  为使程序中每个语句至少执行一次,只需设计一个能通过路径ace的例子就可以了,就可达到语句覆盖标准。例如选择输入数据为:
  A2,B0,X3
  缺点:从上例可看出,语句覆盖实际上是很弱的如果第一个条件语句中的AND错误地编写成OR,上面的测试用例是不能发现这个错误的;又如第三个条件语句中X1误写成X0,这个测试用例也不能暴露它;此外,沿着路径abd执行时,X的值应该保持不变,如果这一方面有错误,上述测试数据也不能发现它们。4。1。2判定覆盖(分支覆盖)
  对程序1,如果设计两个用例,使它们能通过路径ace和abd,或者通过路径acd和abe,就可达到判定覆盖标准,为此,可以选择输入数据为:A3,B0,X1(沿路径acd执行);A2,B1,X3(沿路径abe执行)
  优点:分支覆盖比语句覆盖严格,因为如果每个分支都执行过了,则每个语句也就执行过了。
  缺点:但是,分支覆盖还是很不够的两个测试用例未能烤炉到A1的情况两个测试用例未能检查沿着路径abd执行时,X的值是否保持不变。4。1。3条件覆盖
  一个判定中往往包含了若干个条件,如程序中,判定(A1)AND(B0)包含了两个条件:A1以及B0,所以可引进一个更强的覆盖标准条件覆盖。
  程序1有四个条件:
  A1、B0、A2、X1
  为了达到条件覆盖标准,需要执行足够的测试用例使得在a点有:
  A1、A1、B0、B0
  以及在b点有:
  A2、A2、X1、X1
  现在只需设计以下两个测试用例就可满足这一标准:A2,B1,X4(沿路径abe执行);A1,B0,X1(沿路径abd执行)。
  优点:条件覆盖通常比分支覆盖强,因为它使一个判定中的每一个条件都取到了两个不同的结果,而判定覆盖则不保证这一点。
  缺点:条件覆盖并不包含分支覆盖,如两个用例没有有覆盖判定(A1andB0)为True的情况4。1。4判定条件覆盖
  程序1,以下用例是满足判定条件覆盖:A2,B0,X4(沿ace路径)A1,B1,X1(沿abd路径)
  优点:既有条件覆盖,又有判定覆盖
  缺点:分支条件覆盖从表面来看,它测试了所有条件的取值,但是实际上某些条件掩盖了另一些条件。对于第一个表达式(A1andB0)如果(A1)为假则一般的编译器不在判断是否B0了。对于第二个表达式(A2orX1)来说,若A2测试结果为真,就认为表达式的结果为真,这时不再检查(X1)条件了。
  因此,采用分支条件覆盖,逻辑表达式中的错误不一定能够查出来了。4。1。5条件组合覆盖
  程序1,以下用例是满足条件组合覆盖:
  再看程序1,我们需要选择适当的用例,使得下面8种条件组合都能够出现:
  1)A1,B02)A1,B03)A1,B04)A1,B0
  5)A2,X16)A2,X17)A2,X18)A2,X1
  5)、6)、7)、8)四种情况是第二个IF语句的条件组合,而X的值在该语句之前是要经过计算的,所以还必须根据程序的逻辑推算出在程序的入口点X的输入值应是什么。
  下面设计的四个用例可以使上述8种条件组合至少出现一次:A2,B0,X4使1)、5)两种情况出现(沿ace路径);A2,B1,X1使2)、6)两种情况出现(沿abd路径);A1,B0,X2使3)、7)两种情况出现(沿abe路径);A1,B1,X1使4)、8)两种情况出现(沿abd路径)。
  优点:既有条件覆盖,又有判定覆盖,还有条件组合覆盖
  缺点:上面四个例子虽然满足条件组合覆盖,但并不能覆盖程序中的每一条路径,例如路径acd就没有执行4。1。6黑盒法补充测试用例
  通过前面逻辑驱动测试方法,可以得到两点结论:条件组合覆盖标准比其他标准优越。即使达到任何一种覆盖标准,其测试效果仍然是不彻底的,我们还需要用其他的测试方法作补充。
  一个参考的黑盒法补充策略是:
  1)在任何情况下都需使用边界值分析(这个方法应包括对输入和输出的边界值进行分析)。
  2)必要的话,再用等价分类法补充一些测试用例。
  3)再用错误推测法附加测试用例。
  4)检查上述例子的逻辑覆盖程度,如果未能满足某些覆盖标准,则再增加足够的测试用例。
  5)如果功能说明中含有输入条件的组合情况,则一开始就可先用因果图(判定表)法。4。2路径测试
  路径测试就是设计足够多的测试用例,覆盖被测试对象中的所有可能路径。4。2。1基本路径测试
  程序1是很简单的程序函数,只有四条路径。但在实践中,一个不太复杂的程序,其路径都是一个庞大的数字,要在测试中覆盖所有的路径是不现实的。为了解决这一难题,只得把覆盖的路径数压缩到一定限度内,例如,程序中的循环体只执行一次。
  基本路径测试就是这样一种测试方法,它在程序控制图的基础上,通过分析控制构造的环行复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每一个可执行语句至少执行一次。
  在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。包括以下4个步骤和一个工具方法:程序的控制流图:描述程序控制流的一种图示方法。程序圈复杂度:McCabe复杂性度量。从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果。准备测试用例:确保基本路径集中的每一条路径的执行。
  工具方法:图形矩阵:是在基本路径测试中起辅助作用的软件工具,利用它可以实现自动地确定一个基本路径集。
  1)控制流图
  在介绍基本路径方法之前,必须先介绍一种简单的控制流表示方法,即流图。流图是对待测试程序过程处理的一种表示。流图使用下面的符号描述逻辑控制流,每一种结构化构成元素有一个相应的流图符号。
  图3流图符号
  流图只有二种图形符号图中的每一个圆称为流图的结点,代表一条或多条语句。流图中的箭头称为边或连接,代表控制流。
  任何过程设计都要被翻译成控制流图。
  在将程序流程图简化成控制流图时,应注意:在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。
  图4控制流图
  如果判断中的条件表达式是由一个或多个逻辑运算符(OR,AND)连接的复合条件表达式,则需要改为一系列只有单条件的嵌套的判断。
  图5程序结构转化成流图2)独立路径
  独立路径:至少沿一条新的边移动的路径
  图6独立路径
  对以上路径的遍历,就是至少一次地执行了程序中的所有语句3)基本路径测试
  第一步:画出控制流图
  流程图用来描述程序控制结构。可将流程图映射到一个相应的流图(假设流程图的菱形决定框中不包含复合条件)。流图中圆,称为流图的结点,代表一个或多个语句。一个处理方框序列和一个菱形决测框可被映射为一个结点;流图中的箭头,称为边或连接,代表控制流,类似于流程图中的箭头。一条边必须终止于一个结点,即使该结点并不代表任何语句(例如:ifelsethen结构);由边和结点限定的范围称为区域。计算区域时应包括图外部的范围。
  图7程序流程图
  图8程序流程图和对应的控制流图
  第二步:计算圈复杂度
  圈复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界。
  独立路径必须包含一条在定义之前不曾用到的边。
  有以下三种方法计算圈复杂度:流图中区域的数量对应于环型的复杂性;给定流图G的圈复杂度V(G),定义为V(G)EN2,E是流图中边的数量,N是流图中结点的数量;给定流图G的圈复杂度V(G),定义为V(G)P1,P是流图G中判定结点的数量。
  第三步:导出测试用例
  根据上面的计算方法,可得出四个独立的路径。(一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路。V(G)值正好等于该程序的独立路径的条数。)路径1:414路径2:46714路径3:4681013414路径4:4681113414
  第四步:准备测试用例
  为了确保基本路径集中的每一条路径的执行,根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测试到,满足上面例子基本路径集的测试用例是:
  路径1:414
  输入数据:iRecordNum0,或者取iRecordNum0的某一个值预期结果:x0
  路径2:46714
  输入数据:iRecordNum1,iType0预期结果:x2
  路径3:4681013414
  输入数据:iRecordNum1,iType1预期结果:x10
  路径4:4681113414
  输入数据:iRecordNum1,iType2预期结果:x20
  必须注意,一些独立的路径,往往不是完全孤立的,有时它是程序正常的控制流的一部分,这时,这些路径的测试可以是另一条路径测试的一部分。4)工具方法:图形矩阵
  导出控制流图和决定基本测试路径的过程均需要机械化,为了开发辅助基本路径测试的软件工具,称为图形矩阵(graphmatrix)的数据结构很有用。
  利用图形矩阵可以实现自动地确定一个基本路径集。一个图形矩阵是一个方阵其行列数控制流图中的结点数,每行和每列依次对应到一个被标识的结点,矩阵元素对应到结点间的连接(即边)。
  对每个矩阵项加入连接权值(linkweight),图矩阵就可以用于在测试中评估程序的控制结构,连接权值为控制流提供了另外的信息。最简单情况下,连接权值是1(存在连接)或0(不存在连接),但是,连接权值可以赋予更有趣的属性:执行连接(边)的概率。穿越连接的处理时间。穿越连接时所需的内存。穿越连接时所需的资源。
  感谢每一个认真阅读我文章的人!!!
  如果下面这些资料用得到的话可以直接拿走:
  1、自学开发或者测试必备的完整项目源码与环境
  2、测试工作中所有模板(测试计划、测试用例、测试报告等)
  3、软件测试经典面试题
  4、PythonJava自动化测试实战。pdf
  5、Jmeterpostman接口测试全套视频获取
  我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。如果在学习或工作中遇到问题可以直接进群询问,群里也会有大神帮忙解答,需要的可以评论区找我呀。
投诉 评论

智能门锁电容式触控屏的工作原理智能门锁的识别技术中,密码几乎成为标配功能。相比机械按键的触控方式,电容式触控方式可以在加上一层玻璃甚至金属一体成型之后与用户进行交互,由于进行了物理性隔离,使得外壳更具完整性……伟大21!日本进决赛,绝杀功臣激动哭了,水庆霞挥拳动作被复制正文北京时间26日,U20女足世界杯一场半决赛落下帷幕,伟大21诞生,日本队顽强挺进决赛,绝杀功臣激动哭了,主帅池田太模仿水庆霞挥舞双拳庆贺动作。此役过后,日本队达成连续……单身的女人为什么容易衰老,你知道真正的原因吗?生活中很多事情不是我们想的那样,也不是我们所能理解的那样,重要的是我们怎么样去找到那种属于自己的快乐,属于自己的幸福,才是非常重要的。曾几何时,我们找到过属于自己的快乐,我们收……白盒测试的概念目的是什么?及主要方法有哪些?1白盒测试的概念白盒测试也称结构测试或逻辑驱动测试,是一种测试用例设计方法,它从程序的控制结构导出测试用例。(测试用例由测试输入数据以及与之对应的输出结果组成。)白……离婚之后,黄晓明人设崩塌了?01hr自从宣布离婚消息后,黄晓明似乎有好一阵子没了声息。可在4月15日的一条微博中,数万网友才明白了最近这段时间黄教主在忙什么。原来从上海疫情开始之际,黄晓明就成……一位保险代理人的职业转型来源:人民网人民日报图:杨新杰(左)与同事为客户制定保险方案。图:杨新杰为新入职同事授课。本报记者赵展慧摄图:大家的家城心生活社区。袁全胜摄数据来源:银保监会去年开……破案了!记者探营揪出新证据,周鹏赵睿暂未离队,悬念20天后揭这个休赛期,广东宏远队的两名绝对主力球员,深陷转会留队的传闻。此前,据一些篮球媒体人的消息,队长周鹏已经签约深圳男篮,另外,赵睿也被传有可能转投上海久事。对于自己两名绝对主力球……安徽人游安徽国庆指南假期来黟县最新玩法,值得收藏!国庆将至趁着小长假去旅行吧风景可以治愈人的心灵当生活总被各种琐事填满内心总是闷闷不乐的时候你是不是该出去走走了趁着阳光正好,微风不燥关键是秋……乐歌推智能升降桌HM3可实时查看坐站时长,以评估健康工作状态多知网6月24日消息,近日,乐歌智能升降桌HM3在华为商城上架。乐歌智能升降桌支持鸿蒙智联,在原有的智能升降、坐站调节的基础上,通过手机碰一碰可以在几秒的时间内完成升降桌的高度……于震俩儿子走秀太惊艳!穿镶钻印花西装酷帅十足,颜值比爸高太多时尚是不分年龄和性别的,不论所处的年龄阶段有多小或者多大,都有权利追求潮流、时髦感。相比于更需要按照不同场合以及不同角色,来选择相符合设计感的服饰与风格的大人相比,年龄较小的孩……那些读了让你emo的文案1抓不住的东西或许连伸手都是多余的。2人总是兴高采烈地去奔赴一场未知的悲剧。3心态调好叫格局日子过好叫本事。所以什么才是疲惫生活里的解药。4或者是今天天……笑了!真扯啊!周杰伦有可能打上CBA周杰伦能打CBA嘛?林书豪:年轻的时候有机会打CBA,可他那时候花太多时间写歌!。。。。。。豪哥你要是被威胁了,可以眨眨眼。或者说,不会是听成绿军的那个杰伦布……
商界之星李钢深耕万亿大健康市场的布局者从靓绝五台山到疯婆子?蓝洁瑛生前没你们想象的那么凄凉顺义这7个镇,将迎来发展大机遇独行侠胜爵士!布伦森丁威迪主导胜局,替补3核44分,爵士出2国内首家完成混改,这家车企凭什么估值达到1000亿?是寄生胎不是连体婴!四手四脚婴儿登上热搜,医生存活率很高SpringBoot实现MySQL数据库自动备份管理系统三安光电VS京东方A两分钟看完他们说的两个LED企业4年的财315曝光后,儿童电话手表避坑心得CBA季后赛火爆冲突,球员欲暴打外援致场面失控,队友差点拉不OPPO复用哈苏,一加换来Ace?到底谁更划算?孩子多大可以识字?过早过晚都不宜,抓住敏感期是关键帽子对女人来说有多重要,看完这些对比照后,才明白发型不值一提美味的胴骨汤四年级作文刘华强为什么要杀卖瓜的?工蜂为什么不能正常生育什么东西人们都不喜欢吃(脑筋急转弯大全及答案)备孕到怀孕要多久如何在龙谷传奇中养出蓝火龙广东信息公开系统答复绿会政研室申请已延期杨振宁坚持回中国,就是要养老?看看他的薪资,才知道误会他了肖蛇地吉利(吉利帝豪报价)什么是房屋中介?竞选学生会部长演讲稿

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利