版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Q
白盒测试浪潮软件集团有限公司软件评测实验室软件测试部目录白盒测试基本概念白盒测试基本方法单元测试
7/24/2023Inspurgroup白盒测试概念白盒测试也称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试,是一种测试用例设计方法,它从程序的控制结构导出测试用例。白盒测试使用被测单元内部如何工作的信息,允许测试人员对程序内部逻辑结构及有关信息来设计和选择测试用例,对程序的逻辑路径进行测试。基于一个应用代码的内部逻辑知识,测试是基于覆盖全部代码、分支、路径、条件。7/24/2023Inspurgroup测试覆盖标准覆盖标准从低到高分别是:语句覆盖:一个较弱的测试标准。它的含义是:选择足够的测试用例,使得程序中每个语句至少都能被执行一次。它是最弱的逻辑覆盖,效果有限,必须与其它方法交互使用。判定覆盖(分支覆盖):执行足够的测试用例,使得程序中的每一个分支至少都通过一次。判定覆盖比语句覆盖稍强一些,但实际效果表明,只是判定覆盖,还不能保证一定能查出在判断条件中存在的错误。条件覆盖:执行足够的测试用例,使程序中每个判断的每个条件的每个可能取值至少执行一次;条件覆盖深入到判定中的每个条件,但可能不能满足判定覆盖的要求。2023/7/24Inspurgroup测试覆盖标准判定/条件覆盖:执行足够的测试用例,使判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果。判定/条件覆盖有缺陷。从表面看,它测试了所有条件的取值。但事实并非如此。往往某些条件掩盖了另一些条件。会遗漏某些条件取值错误的情况。为彻底地检查所有条件的取值,需要将判定语句中给出的复合条件表达式进行分解,形成由多个基本判定嵌套的流程图。这样就可以有效地检查所有的条件是否正确了。条件组合覆盖:执行足够的用例,使得每个判定中条件的各种可能组合都至少出现一次。这是一种相当强的覆盖准则,可以有效地检查各种可能的条件取值的组合是否正确。它不但可覆盖所有条件的可能取值的组合,还可覆盖所有判断的可取分支,但可能有的路径会遗漏掉。测试还不完全。路径覆盖:设计足够多的测试用例,要求覆盖程序中所有可能的路径。2023/7/24Inspurgroup语句覆盖语句覆盖”是一个比较弱的测试标准,它的含义是:选择足够的测试用例,使得程序中每个语句至少都能被执行一次。如,例1:PROCEDIF(A>1)AND(B=0)
THENX:=X/A;IF(A=2)ORURE
M(VARA,B,X:REAL);
BEGIN(X>1)
THENX:=X+1;END.为使程序中每个语句至少执行一次,只需设计一个能通过路径ace的例子就可以了,例如选择输入数据为:
A=2,B=0,X=3就可达到“语句覆盖”标准。
2023/7/24Inspurgroup语句覆盖分支覆盖比“语句覆盖”稍强的覆盖标准是“分支覆盖”(或称判定覆盖)标准。含义是:执行足够的测试用例,使得程序中的每一个分支至少都通过一次。对例1的程序,如果设计两个例子,使它们能通过路径ace和abd,或者通过路径acd和abe,就可达到“判定覆盖”标准,为此,可以选择输入数据为:①A=3,B=0,X=1(沿路径acd执行);
②A=2,B=1,X=3(沿路径abe执行)
2023/7/24Inspurgroup分支覆盖2023/7/24Inspurgroup判定覆盖判定覆盖A=3,B=0,X=1(沿路径acd执行)
A=2,B=1,X=3(沿路径abe执行)条件覆盖一个判定中往往包含了若干个条件,如例1的程序中,判定(A>1)AND(B=0)包含了两个条件:A>1以及B=0,所以可引进一个更强的覆盖标准——“条件覆盖”。“条件覆盖”的含义是:执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。2023/7/24Inspurgroup条件覆盖例1的程序有四个条件:
A>1、B=0、A=2、X>1为了达到“条件覆盖”标准,需要执行足够的测试用例使得在a点有:
A>1、A≤1、B=0、B≠0等各种结果出现,以及在b点有:
A=2、A≠2、X>1、X≤1等各种结果出现。现在只需设计以下两个测试用例就可满足这一标准:①A=2,B=0,X=4
(沿路径ace执行);②A=1,B=1,X=1
(沿路径abd执行)。
2023/7/24Inspurgroup条件覆盖2023/7/24Inspurgroup条件覆盖条件覆盖A=2,B=0,X=4
(沿路径ace执行)A=1,B=1,X=1
(沿路径abd执行)分支/条件覆盖针对上面的问题引出了另一种覆盖标准——“分支/条件覆盖”,它的含义是:执行足够的测试用例,使得分支中每个条件取到各种可能的值,并使每个分支取到各种可能的结果。对例1的程序,前面的两个例子 ①A=2,B=0,X=4(沿ace路)
②A=1,B=1,X=1(沿abd路径)
是满足这一标准的。2023/7/24Inspurgroup条件组合覆盖条件组合覆盖”。它的含义是:执行足够的例子,使得每个判定中条件的各种可能组合都至少出现一次。显然,满足“条件组合覆盖”的测试用例是一定满足“分支覆盖”、“条件覆盖”和“分支/条件覆盖”的。2023/7/24Inspurgroup条件组合覆盖
再看例1的程序,我们需要选择适当的例子,使得下面8种条件组合都能够出现:1)A>1,B=0
2)
A>1,B≠03)
A≤1,B=0 4)A≤1,B≠05)A=2,X>1 6)A=2,X≤17)A≠2,X>1 8)A≠2,X≤1 5)、6)、7)、8)四种情况是第二个IF语句的条件组合,而X的值在该语句之前是要经过计算的,所以还必须根据程序的逻辑推算出在程序的入口点X的输入值应是什么。2023/7/24Inspurgroup条件组合覆盖
下面设计的四个例子可以使上述8种条件组合至少出现一次:①A=2,B=0,X=4
使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)两种情况出现。2023/7/24Inspurgroup条件组合覆盖
上面四个例子虽然满足条件组合覆盖,但并不能覆盖程序中的每一条路径,例如路径acd就没有执行,因此,条件组合覆盖标准仍然是不彻底。2023/7/24Inspurgroup路径覆盖测试前面提到的5种逻辑覆盖都未涉及到路径的覆盖。事实上,只有当程序中的每一条路径都受到了检验,才能使程序受到全面检验。路径覆盖的目的就是要使设计的测试用例能覆盖被测程序中所有可能的路径。2023/7/24Inspurgroup路径测试测试用例通过路径A=2、B=0、X=3aceA=1、B=0、X=1abdA=2、B=1、X=1abeA=3、B=0、X=1acd2023/7/24Inspurgroup路径测试就是设计足够多的测试用例,覆盖被测试对象中的所有可能路径。对于例1,下面的测试用例则可对程序进行全部的路径覆盖。基本路径测试
例1是很简单的程序函数,只有四条路径。但在实践中,一个不太复杂的程序,其路径都是一个庞大的数字,要在测试中覆盖所有的路径是不现实的。为了解决这一难题,只得把覆盖的路径数压缩到一定限度内,如,程序中的循环体只执行一次。 基本路径测试就是这样一种测试方法,它在程序控制图的基础上,通过分析控制构造的环行复杂性,导出基本可执行路径集合,从而设计测试用例。设计出的测试用例满足语句覆盖。
在介绍基本路径方法之前,必须先介绍一种简单的控制流表示方法,即流图。2023/7/24Inspurgroup控制流图流图只有二种图形符号图中的每一个圆称为流图的结点,代表一条或多条语句,一个处理框序列和一个条件判定框(假设不包含复合条件)。流图中的箭头称为边或连接,代表控制流。任何过程设计都要被翻译成控制流图。2023/7/24Inspurgroup控制流图在将程序流程图简化成控制流图时,应注意:包含条件或多分支的节点被称为判定节点(也叫谓词节点),在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。如下页图所示2023/7/24Inspurgroup控制流图2023/7/24Inspurgroup1762,38910114,5
76
231
8
4
511910节点边区域区域:由边和解点封闭起来的区域计算区域:不要忘记区域外的部分待测试程序用流图表示的待测试程序控制流图如果判断中的条件表达式是由一个或多个逻辑运算符(OR,AND,NAND,NOR)连接的复合条件表达式,则需要改为一系列只有单条件的嵌套的判断。例如:
1ifaorb2x3else4y对应的逻辑为:2023/7/24Inspurgroup独立路径2023/7/24Inspurgroup独立路径:至少沿一条新的边移动的路径1762,38910114,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个步骤:程序的控制流图:描述程序控制流的一种图示方法。程序圈复杂度:McCabe复杂性度量。从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果。准备测试用例:确保基本路径集中的每一条路径的执行。以下详细描述:2023/7/24Inspurgroup基本路径测试第一步:画出控制流图可将流程图映射到一个相应的流图(假设流程图的菱形决定框中不包含复合条件)。流程图用来描述程序控制结构。在流图中,每一个结点,代表一个或多个语句。一个流程图的处理方框序列和一个菱形决测框可被映射为一个流图结点;流图中的边或连接,代表控制流,类似于流程图中的箭头。流图中一条边必须终止于一个结点,即使该结点并不代表任何语句(例如:if-else-then结构)。由边和结点限定的范围称为区域。计算区域时应包括图外部的范围。2023/7/24Inspurgroup基本路径测试例4:有下面的C函数,用基本路径测试法进行测试
voidSzT1(intiRecordNum,intiType){intx=0;inty=0;while(iRecordNum-->0){if(0==iType) {x=y+2;break;}elseif(1==iType) x=y+10;else x=y+20;}}2023/7/24Inspurgroup基本路径测试画出其程序流程图和对应的控制流图如下2023/7/24Inspurgroup467910121314基本路径测试-计算圈复杂度第二步:计算圈复杂度圈复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,该度量用于计算程序基本独立路径数目,为确保所有语句至少执行一次的测试数量的上界。独立路径必须包含一条在定义之前不曾用到的边。有以下三种方法计算圈复杂度:流图中区域的数量对应于环型的复杂性;给定流图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量;给定流图G的圈复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量。(包含条件的节点被称为判定节点,也叫谓词节点)2023/7/24Inspurgroup基本路径测试-计算圈复杂度对应上面图中的圈复杂度,计算如下:流图中有四个区域;V(G)=10条边-8结点+2=4;V(G)=3个判定结点+1=4。2023/7/24Inspurgroup467910121314基本路径测试-导出测试用例第三步:导出测试用例:根据上面的计算方法,可得出四个独立的路径。(一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路。V(G)值正好等于该程序的独立路径的条数。)路径1:4-14路径2:4-6-7-14路径3:4-6-9-10-13-4-14路径4:4-6-9-12-13-4-14
根据上面的独立路径,去设计输入数据,使程序分别执行到上面四条路径。2023/7/24Inspurgroup467910121314基本路径测试-准备测试用例第四步:准备测试用例为确保基本路径集中的每一条路径的执行,根据判断结点给出的条件,选择适当的数据以保证每一条路径可被测到。必须注意,一些独立的路径,往往不是完全孤立的,有时它是程序正常的控制流的一部分,这时,这些路径的测试可以是另一条路径测试的一部分。2023/7/24Inspurgroup单元测试的概念单元测试就是对已实现的软件最小单元进行测试,以保证构成软件系统的各个单元的质量单元测试活动中,强调被测试对象的独立性单元测试应从各个层次来对单元内部算法、外部功能实现等进行检验,包括对程序代码的评审和通过运行单元程序来验证其功能特性等内容。单元测试主要采用白盒测试方法,辅以黑盒测试方法。白盒测试方法应用于代码评审、单元程序检验之中,而黑盒测试方法则应用于模块、组件等大单元的功能测试之中2023/7/24Inspurgroup黑盒测试和白盒测试黑盒测试方法(Blake-boxTesting),是把程序看作一个不能打开的黑盒子,不考虑程序内部结构和内部特性,而是考察数据的输入、条件限制和数据输出,完成测试白盒测试方法(White-boxTesting),也称结构测试或逻辑驱动测试。白盒测试方法是根据模块内部结构了解,基于内部逻辑结构,针对程序语句、路径、变量状态等来进行测试,检验程序中的各个分支条件是否得到满足、每条执行路径是否按预定要求正确的工作。
2023/7/24Inspurgroup驱动程序和桩程序驱动程序(driver),对底层或子层模块进行(单元或集成)测试时所编制的调用被测模块的程序,用以模拟被测模块的上级模块桩程序(stub),也有人称为存根程序,对顶层或上层模块进行测试时,所编制的替代下层模块的程序,用以模拟被测模块工作过程中所调用的模块。2023/7/24Inspurgroup测试用例设计准则测试用例的非重复性测试用例不应是与原有测试用例重复的或等价效果的,应追求测试用例数目的精简测试结果的可判定性即测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果。测试结果的可再现性对同样的测试用例,系统的执行结果应当是相同的。好的测试用例集能花费最小的代价(人力、物力、财力、时间)做最好的测试2023/7/24Inspurgroup白盒测试方法的用例设计语句覆盖判定覆盖条件覆盖基本路径测试法2023/7/24Inspurgroup黑盒测试方法的用例设计黑盒测试的目的是为了在不了解单元将如何实施指定行为的情况下,对指定行为进行验证黑盒测试侧重并依赖于单元的输入和输出
2023/7/24Inspurgroup黑盒测试的优点缺点优点:黑盒测试与软件如何实现无关,如果实现发生变化,黑盒测试用例仍然可用(可重用性,面向回归测试)用例设计可以与软件的实现同时进行,加快了软件测试与开发的速度缺点:只能找到缺陷,难以查找错误的具体原因没有清晰的需求规格说明书,测试用例很难被设计相比白盒测试,测试用例产生遗漏或冗余的可能性大大增加2023/7/24Inspurgroup集成测试的模式渐增式集成模式与非渐增式集成模式非渐增式测试模式:先分别测试每个模块,再把
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 配电设计协调工作制度
- 酒店保洁员工作制度
- 酒店服务人员工作制度
- 酒店销售人员工作制度
- 针灸理疗门诊工作制度
- 镇级疫情防控工作制度
- 镇街道信用工作制度
- 长治政务大厅工作制度
- 门诊中药管理工作制度
- 门诊感染病工作制度
- 内镜黏膜下剥离术(ESD)诊疗与护理规范
- 2026四川宜宾传媒集团有限公司及下属子公司第一批员工招聘13人笔试备考题库及答案解析
- 2026北京事业编考试题库
- 2025年陕西国防工业职业技术学院单招职业技能考试试题及答案解析
- GB 15322.1-2026可燃气体探测器第1部分:工业及商业用途点型可燃气体探测器
- 2025年扬州市职业大学单招职业技能考试题库附答案解析
- 2026年光储充一体化充电站项目可行性研究报告
- 新版部编人教版七年级下册道德与法治全册教案(完整版)教学设计含教学反思
- 中药饮片GSP培训课件
- 2025年省属国企公开招聘备考题库参考答案详解
- 2025年秦皇岛市辅警考试试卷真题带答案
评论
0/150
提交评论