《白盒测试之理论篇》ppt课件_第1页
《白盒测试之理论篇》ppt课件_第2页
《白盒测试之理论篇》ppt课件_第3页
《白盒测试之理论篇》ppt课件_第4页
《白盒测试之理论篇》ppt课件_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、白盒测试之实际篇白盒测试之实际篇李娟2021-09-04为什么做白盒测试?为什么做白盒测试?这个问题比较复杂,我们先从一个比喻开场讲起。 假设有一台的面包机,从上面倒入面粉与水,开动机器后从下面出来的就是烤好了的面包,这个机器的功能比较单一,接口很明晰,输入是面粉与水,输出是面包。如今假定这个面包机多年未用,内部都生锈了,如今要清洗它,类似于我们开发的软件,软件有Bug,那得经过测试来清理。那如何更快速的清洗这台面包机呢?有两种洗法,一是拿水从上往下灌,这是系统测试的方法。另一种是拆开来洗,拆开机器后,拿抺布沾点清洁剂,把各零件的坑坑槽槽擦洗一遍,然后组装回来,再用水从上往下冲一遍,拆开来洗是

2、白盒方法,组装回来用水冲是黑盒方式,相当于白盒测试之后再追加一次系统测试。无疑,上面第二种方法是正确的,我们的前提是:清洗多年未用的面包机,铁锈够多,假设洗不干净,造出的面包都是致癌物质。当然,清洗面包机还只能算简单劳动,清理软件中的Bug要复杂得多,一个if语句有两条分支,一个while循环判别也是两条分支,还有break、continue、return等,想想看,一个1万行规模的软件能有多少个分支!一个分支就是一条坑坑槽槽,而且软件Bug还具备动态特性,不是静止的明摆在哪儿。所以,软件的白盒测试不可或缺,由于遗留Bug的影响很大,就像面包机没洗净留铁锈会致癌,还由于软件系统远比面包机复杂,

3、不拆开来怎样能洗干净!v1、白盒测试的概念、特点、白盒测试的概念、特点v2、白盒测试的目的、白盒测试的目的v3、白盒测试的原那么、白盒测试的原那么v4、白盒测试的根据、白盒测试的根据v5、白盒测试的类别、白盒测试的类别v6、白盒测试的流程、白盒测试的流程v7、白盒测试的战略、白盒测试的战略v8、白盒测试方法、白盒测试方法1.1 白盒测试的概念白盒测试的概念o白盒测试白盒测试White Box Testing,按照程序内部的构造、逻,按照程序内部的构造、逻辑驱动测试程序,经过测试来检测产品内部动作能否按照设计阐辑驱动测试程序,经过测试来检测产品内部动作能否按照设计阐明书的规定正常进展,检验程序中

4、的每条途径能否都能按预定要明书的规定正常进展,检验程序中的每条途径能否都能按预定要求正确任务。求正确任务。o白盒测试的对象主要是源程序。是指用代码内部的分支、途径、白盒测试的对象主要是源程序。是指用代码内部的分支、途径、条件,使程序设计的控制构造导出测试用例。条件,使程序设计的控制构造导出测试用例。o白盒测试是一个与黑盒测试相对的概念,是指测试者针对可见代白盒测试是一个与黑盒测试相对的概念,是指测试者针对可见代码进展的一种测试。白盒测试通常再划分为单元测试、集成测试码进展的一种测试。白盒测试通常再划分为单元测试、集成测试两大类,但根据不同的流程,对白盒测试细分的规范也不尽一致,两大类,但根据不

5、同的流程,对白盒测试细分的规范也不尽一致,比如在比如在IBM的的IPD流程之下,白盒测试能够划分为如下几类:模流程之下,白盒测试能够划分为如下几类:模块单元测试、模块集成测试、模块系统测试、渐增块单元测试、模块集成测试、模块系统测试、渐增Build集成测集成测试、系统集成测试等。而在试、系统集成测试等。而在XP实际中,单元测试与集成测试之间实际中,单元测试与集成测试之间的界限并不明显,统称为渐增迭代测试。的界限并不明显,统称为渐增迭代测试。1.2 白盒测试的特点白盒测试的特点o白盒法特点:以程序的内部逻辑为根底设计测试用例,白盒法特点:以程序的内部逻辑为根底设计测试用例,所以又称为逻辑覆盖法。

6、运用白盒法时,手头必需有程所以又称为逻辑覆盖法。运用白盒法时,手头必需有程序的规格阐明以及程序清单。序的规格阐明以及程序清单。o o白盒法思索的是测试用例对程序内部逻辑的覆盖程度。白盒法思索的是测试用例对程序内部逻辑的覆盖程度。o最彻底的白盒法是覆盖程序中的每一条途径,但是由于最彻底的白盒法是覆盖程序中的每一条途径,但是由于o程序中普通含有循环,所以途径的数目极大,要执行每程序中普通含有循环,所以途径的数目极大,要执行每o一条途径是不能够的,只能希望覆盖的程度尽能够高些。一条途径是不能够的,只能希望覆盖的程度尽能够高些。2 白盒测试的目的白盒测试的目的 o保证一个模块中的一切独立途径至少被执行

7、一次;o对一切的逻辑值均需求测试真、假两个分支;o在上下边境及可操作范围内运转一切循环;o检查内部数据构造以确保其有效性。o提高代码的质量到达软件产品中要求的可靠性、平安性;3 白盒测试的原那么白盒测试的原那么白盒测试的原那么有白盒测试的原那么有4点:点:1保证一个模块中一切途径至少被测试一次;保证一个模块中一切途径至少被测试一次;2一切逻辑值都要测试真和假两种情况;一切逻辑值都要测试真和假两种情况;3检查程序的内部数据构造能否有效;检查程序的内部数据构造能否有效;4检查上、下边境及可操作范围内运转一切循环。检查上、下边境及可操作范围内运转一切循环。4 白盒测试根据白盒测试根据软件需求报告;软

8、件需求报告;软件需求规格阐明;软件需求规格阐明;程序设计文档;程序设计文档;软件界面设计;软件界面设计;编码规范;编码规范;开发命名规范。开发命名规范。 5 白盒测试的类别白盒测试的类别白盒测试的类别详细分为白盒测试的类别详细分为8大类:大类:1 软件公用问题的测试;软件公用问题的测试;2 言语测试;言语测试;3 SQL语句测试;语句测试;4 数据类型测试;数据类型测试;5 界面测试;界面测试;6 数值对象测试;数值对象测试;7 业务对象测试;业务对象测试;8 数据管理对象测试。数据管理对象测试。白盒测试的流程分为界面对象和业务对象两种方式。白盒测试的流程分为界面对象和业务对象两种方式。界面对

9、象测试界面对象测试界面对象测试的流程如图界面对象测试的流程如图2-1所示。所示。图2-1界面对象的流程图 6 6 白盒测试的流程白盒测试的流程(2) 业务对象流程测试业务对象测试的流程如图2-2所示。6 6 白盒测试的流程白盒测试的流程 图2-2 业务对象测试的流程图 7 7 白盒测试战略白盒测试战略o桌前检查桌前检查Desk Check o同行评审同行评审Peer Review o代码走查代码走查Walkthrougho静态分析静态分析static analyse o单元测试单元测试Unit Testingo白盒测试综合战略白盒测试综合战略o1测试中,尽量先用自动化工具来进展静态构造分析;测

10、试中,尽量先用自动化工具来进展静态构造分析;o2测试中建议先从静态测试开场,如:静态构造分析、代码走测试中建议先从静态测试开场,如:静态构造分析、代码走查和静态质量度量,然后进展动态测试,如:覆盖率测试;查和静态质量度量,然后进展动态测试,如:覆盖率测试;o3利用静态分析的结果作为根据,再运用代码检查和动态测试利用静态分析的结果作为根据,再运用代码检查和动态测试的方式对静态分析结果进展进一步确认,提高测试效率及准确性;的方式对静态分析结果进展进一步确认,提高测试效率及准确性;o4覆盖率测试是白盒测试中的重要手段,在测试报告中可以作覆盖率测试是白盒测试中的重要手段,在测试报告中可以作为量化目的的

11、根据,对于软件的重点模块,应运用多种覆盖率规范为量化目的的根据,对于软件的重点模块,应运用多种覆盖率规范衡量代码的覆盖率;衡量代码的覆盖率;o5在不同的测试阶段,测试的偏重点是不同的。在不同的测试阶段,测试的偏重点是不同的。8 8 白盒测试方法白盒测试方法n静态测试n 代码检查法n 静态构造分析法n动态测试n逻辑测试n语句覆盖n断定覆盖n条件覆盖n断定-条件覆盖n条件组合测试n途径测试n白盒测试的其它方法n条件测试n数据流测试n循环测试n域测试nZ途径测试8.1 8.1 静态测试静态测试 8.1.1 代码检查法 8.1.2 静态构造分析法 代码检查方式桌面检查由程序员检查自已编写的程序在程序经

12、过编译之后,对源码进展分析检查代码审查由假设干程序员和测试员组成审查小组经过阅读、讨论、争议来对程序文档进展静态分析走查由假设干程序员和测试员组成审查小组,审查第一步:资料下发每个人,各自仔细阅读、研讨审查第二步:集中开会,大家根据预先设计好的测试用例,模拟运转程序,记录程序踪迹,供分析讨论之用8.1.1 代码检查法o代码检查的主要工程o变量交叉援用表o标号交叉援用表o子程序、宏、函数o等价性检查o常量检查o规范检查o风格检查o比较控制流o程序的规格阐明8.1.1 8.1.1 代码检查法代码检查法o代码检查的规那么可以参照编码规范8.1.2 静态构造分析法u运用静态构造分析工具分析程序源代码的

13、内部构造u系统构造u数据构造u数据接口u内部控制逻辑u可生成的分析文档u函数调用关系图u模块控制流程图u内部文件调用关系图u子程序表u宏和函数参数表8.2 8.2 动态测试动态测试o逻辑覆盖法o根本途径覆盖法 逻辑覆盖测试方法通常采用流程图来设计测试用例,它调查的重点是图中的断定框,由于这些断定通常是与选择结构有关或是与循环构造有关,是决议程序构造的关键成分。 逻辑覆盖法途径测试就是设计足够的测试用例,覆盖程序中每一条能够的程序执行途径至少测试一次,假设程序中含有循环(在程序图中表现为环)那么每个循环至少执行一次。 途径测试法发现错误的才干标 准含 义语句覆盖每条语句至少执行一次断定覆盖每一断

14、定的每个分支至少执行一次条件覆盖每一断定中的每个条件,分别按“真、“假至少各执行一次断定/条件覆盖同时满足断定覆盖和条件覆盖的要求条件组合覆盖求出断定中一切条件的各种能够组合值,每一能够的条件组合至少执行一次 逻辑覆盖测试的5种规范 覆盖规范程序构造举例测试用例应满足的条件语句覆盖AB=.T.分支覆盖AB=.T.AB=.F.TFTF条件覆盖A=.T. A=.F.B=.T. B=.F.断定/条件覆盖AB=.T. , AB=.F.A=.T. A=.F. B=.T. B=.F.条件组合覆盖 A=.T. B=.T. A=.T. B=.F.A=.F. B=.TA=.F. B=.F.TFTFTF图示如下:

15、图示如下:8.2.1 8.2.1 语句覆盖语句覆盖语句覆盖是一个比较弱的测试规范,它的含义是:选择足够的测试用例,使得程序中每个语句至少都能被执行一次。为使程序中每个语句至少执行一次,只需设计一个能经过途径ace的例子就可以了,例如选择输入数据为: A=2,B=0,X=3 就可到达“语句覆盖规范。 从上例可看出,语句覆盖实践上是很弱的,假设第一个条件语句中的AND错误地编写成OR,上面的测试用例是不能发现这个错误的;又如第三个条件语句中X1误写成X0,这个测试用例也不能暴露它,此外,沿着途径abd执行时,X的值应该坚持不变,假设这一方面有错误,上述测试数据也不能发现它们。 语句覆盖 8.2.1

16、 8.2.1 分支覆盖分支覆盖 A=3,B=0,X=1 (沿途径acd执行) A=2,B=1,X=3 (沿途径abe执行)比“语句覆盖稍强的覆盖规范是“分支覆盖含义是:执行足够的测试用例,使得程序中的每一个分支至少都经过一次。 对例1的程序,假设设计两个例子,使它们能经过途径ace和abd,或者经过途径acd和abe,就可到达“断定覆盖规范,为此,可以选择输入数据为: A=3,B=0,X=1 (沿途径acd执行); A=2,B=1,X=3(沿途径abe执行) 程序中含有断定的语句包括if-then-else、do-until、case、do-while等,所以“分支覆盖更普通的含义是:使得每一

17、个分支获得每一种能够的结果。 “分支覆盖比“语句覆盖严厉,由于假设每个分支都执行过了,那么每个语句也就执行过了。但是,“分支覆盖还是很不够的,例如例1两个测试用例未能检查沿着途径abd执行时,X的值能否坚持不变。8.2.1 8.2.1 条件覆盖条件覆盖 A=2,B=0,X=4 (沿途径ace执行)A=1,B=1,X=1 (沿途径abd执行)一个断定中往往包含了假设干个条件,如例1的程序中,断定(A1) AND (B=0)包含了两个条件: A1以及 B=0,所以可引进一个更强的覆盖规范“条件覆盖。“条件覆盖的含义是:执行足够的测试用例使得断定中的每个条件获得各种能够的结果。 例1的程序有四个条件

18、:A1、 B=0、A=2、X1 为了到达“条件覆盖规范,需求执行足够的测试用例使得在a点有: A1、A1、B=0、B0 等各种结果出现,以及在b点有:A=2、A2、X1、X1 等各种结果出现。如今只需设计以下两个测试用例就可满足这一规范: A=2,B=0,X=4 (沿途径ace执行); A=1,B=1,X=1 (沿途径abd执行)。8.2.1 8.2.1 条件覆盖条件覆盖 o“条件覆盖通常比“分支覆盖强,由于它使一个断定中的每一个条件都取到了两个不同的结果,而断定覆盖那么不保证这一点。o“条件覆盖并不包含“分支覆盖,如对语句IF(A AND B)THEN S 设计测试用例使其满足条件覆盖,即使

19、A为真并使B为假,以及使A为假而且B为真,但是它们都未能使语句S得以执行。 条件覆盖 如对例2设计了下面的测试用例,那么虽然满足了条件覆盖,但只覆盖了第一个条件的取假分支和第二个条件的取真分支,不满足分支覆盖的要求。 测试用例测试用例 经过途径经过途径 条件取值条件取值覆盖分覆盖分支支x=2、y=6、z=5 acd-T1、T2、-T3、T4 cdx=4、y=5、z=15 acdT1、-T2、T3、-T4 cdYes入口Noabc执行语句块2执行语句块1YesdNoe出口执行语句块3(x3)&(z5)8.2.1 8.2.1 分支分支/ /条件覆盖条件覆盖o针对上面的问题引出了另一种覆盖规范“分支

20、 条件覆盖,它的含义是:执行足够的测试用例,使得分支中每个条件取到各种能够的值,并使每个分支取到各种能够的结果。o对例1的程序,前面的两个例子 o A=2,B=0,X=4 (沿ace路) o A=1,B=1,X=1 (沿abd途径) o是满足这一规范的。分支/条件覆盖对例2,根据定义只需设计以下两个测试用例便可以覆盖8个条件值以及4个判别分支。 Yes入口Noabc执行语句块2执行语句块1YesdNoe出口执行语句块3(x3)&(z5)测试用例 经过途径 条件取值覆盖分支x=4、y=6、z=5 abdT1、T2、T3、T4 bdx=2、y=5、z=11ace-T1、-T2、-T3、-T4 ce

21、8.2.1 8.2.1 分支分支/ /条件覆盖条件覆盖 分支/条件覆盖从外表来看,它测试了一切条件的取值,但是实践上某些条件掩盖了另一些条件。例如对于条件表达式(x3)&(z3为假那么一般的编译器不在判别能否z5来说,假设x=4测试结果为真,就认为表达式的结果为真,这时不再检查y5条件了。因此,采用分支/条件覆盖,逻辑表达式中的错误不一定可以查出来了。 8.2.2 根本途径测试法根本途径测试法 根本途径测试法是在程序控制流图的根底上,经过分析控制构造的环路复根本途径测试法是在程序控制流图的根底上,经过分析控制构造的环路复杂性,导出根本可执行途径集合,从而设计测试用例的方法。设计出的测试用杂性,

22、导出根本可执行途径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。例要保证在测试中程序的每个可执行语句至少执行一次。根本途径测试法的重点内容如下:根本途径测试法的重点内容如下: 程序的控制流图:描画程序控制流的一种图示方法。程序的控制流图:描画程序控制流的一种图示方法。 程序环形复杂度:程序环形复杂度:McCabe复杂性度量。从程序的环路复杂性可导出程序复杂性度量。从程序的环路复杂性可导出程序根本途径集合中的独立途径条数,这是确定程序中每个可执行语句至少执行一根本途径集合中的独立途径条数,这是确定程序中每个可执行语句至少执行一次所必需的测试用例数目

23、的上界。次所必需的测试用例数目的上界。根本途径测试方法包括以下根本途径测试方法包括以下4个步骤:个步骤:画出程序的控制流图。画出程序的控制流图。计算程序的环形复杂度,导出程序根本途径集中的独立途径条数,这是确定计算程序的环形复杂度,导出程序根本途径集中的独立途径条数,这是确定程序中每个可执行语句至少执行一次所必需的测试用例数目的上界。程序中每个可执行语句至少执行一次所必需的测试用例数目的上界。导出根本途径集,确定程序的独立途径。导出根本途径集,确定程序的独立途径。根据中的独立途径,设计测试用例的输入数据和预期输出。根据中的独立途径,设计测试用例的输入数据和预期输出。8.2.2 8.2.2 根本

24、途径测试法根本途径测试法1 程序控制流图程序控制流图程序控制流图可简称流图是对程序流程图进展简化后得到的,它突出表示程序控制流的构造。程序控制流图可简称流图是对程序流程图进展简化后得到的,它突出表示程序控制流的构造。程序控制流图是描画程序控制流的一种方式。程序控制流图是描画程序控制流的一种方式。控制流图图形符号:图形符号:圆圈代表一个结点,控制流图图形符号:图形符号:圆圈代表一个结点, 表示一个或多个无分支的语句或源程序语句;表示一个或多个无分支的语句或源程序语句;程序控制流边和点圈定的部分叫做区域。当对区域计数时,图形外的一个部分也应记为一个区域;程序控制流边和点圈定的部分叫做区域。当对区域

25、计数时,图形外的一个部分也应记为一个区域;判别语句中的条件为复合条件时,即条件表达式由一个或多个逻辑运算符衔接的逻辑表达式判别语句中的条件为复合条件时,即条件表达式由一个或多个逻辑运算符衔接的逻辑表达式a and b,那么需求改动复合条件的判别为一系列只需单个条件的嵌套的判别。,那么需求改动复合条件的判别为一系列只需单个条件的嵌套的判别。根本途径测试方法是在控制流图的根底上,经过分析控制构造的环形复杂度,导出执行途径的根本根本途径测试方法是在控制流图的根底上,经过分析控制构造的环形复杂度,导出执行途径的根本集,再从该根本集设计测试用例。集,再从该根本集设计测试用例。图图2-4 程序控制流程图程

26、序控制流程图8.3 8.3 白盒测试的其它方法简介白盒测试的其它方法简介o条件测试o数据流测试o循环测试o域测试oZ途径测试8.3.1 条件测试o条件测试是检查程序模块中所包含逻辑条件的测试用例设计方法o主要用于测试程序中条件错误和程序的其他错误o普通的说,假设程序的测试集可以有效地检测程序中的条件错误,那么该测试集能够也会有效地检测程序中的其他错误o条件测试战略主要优点o条件测试的覆盖率计算相对简单o程序的条件测试覆盖率为产生另外的程序测试提供了指点8.3.1 8.3.1 条件测试条件测试o条件式分析o一个简单条件是一个布尔变量或一个能够带有NOT操作符的关系表达式,o方式为:E1关系操作符

27、E2o 其中E1和E2是算术表达式,而关系操作符是以下之一:o“、“、“=、“(“!=)、“、或“o复杂条件由简单条件、布尔操作符和括弧组成,设可用于复杂条件的布尔算子包括oOR,AND和NOT,不含关系表达式的条件称为布尔表达式。所以条件的成分类型包o括:布尔操作符o布尔变量o布尔括弧(括住简单或复杂条件)o关系操作符或算术表达式o条件式错误o假设条件不正确,那么至少有一个条件成分不正确,条件错误普通有以下类型o布尔操作符错误o布尔变量错误o布尔括弧错误o关系操作符或算术表达式错误8.3.2 数据流测试 数据流测试是按照程序中的变量定义和运用的位置来选择程序的测试途径数据流测试方法能有效发现

28、错误,由于变量的定义和运用,使程序中的语句都彼此相关数据流测试方法主要用于为包含 嵌套if和循环语句的程序 选择测试途径前提设程序每条语句都赋予了独立的语句号,而且每个函数都不改动其参数和全局变量,对于语句号为S的语句DEF(S)=X语句S包含X的定义USE(S)=X语句S包含X的运用假设存在从S到S的途径,并且该途径不含X的其他定义,那么变量X在语句S处的定义在语句S依然有效变量X的定义,运用链(或称DU链)方式如X,S,S,其中S和S是语句号,X在DEF(S)和USE(S)中,而且语句S定义的X在语句S有效运用链的测试战略要求每个DU链至少覆盖一次可以证明DU测试不能保证覆盖程序的一切分支

29、8.3.4 8.3.4 循环测试循环测试o循环测试是一种白盒测试技术,着重于检查循环构造的有效性。o有如下四种循环:简单循环嵌套循环串接循环不规那么循环8.3.4 8.3.4 循环测试循环测试o简单循环o整个跳过循环o只需一次经过循环o两次经过循环om次经过循环,其中mnon-1,n,n+1次经过循环o其中n是允许经过循环的最大次数o嵌套循环o假设将简单循环的测试方法用于嵌套循环,能够的测试数就会随嵌套层数成几何级添加,这会导致不实践的测试数目o减少测试数的方法o对最内层循环运用简单循环,而使外层循环的循环参数即循环计数o最小,并为范围外或排除的值添加其它测试o由内向外构造下一个循环的测试,但

30、其它的外层循环为最小值,并使其o它的嵌套循环为“典型值继续直到测试一切的循环8.3.4 8.3.4 循环测试循环测试o串接循环o假设串接循环的循环都彼此独立,可是运用嵌套的战略测试o假设两个循环串接起来,而第一个循环是第二个循环的初始值,那么这两个循环并不是独立的。那么可运用测试嵌套循环的方法进展测试o不规那么循环o不能测试,尽量重新设计给构造化的程序构造后再进展测试8.3.5 8.3.5 域测试域测试o域是指程序的输入空间o输入空间又可以划分成假设干个子空间,每个子空间对应一种不同的计算,子空间的划分是由分支语句的条件式决议的o有时将一个域称为一个等介类o域测试主要是针对域错误进展的测试o域错误o假设程序的控制流有错误,对于某些特定的正确输入,能够执行的是一条错误的途径,这种错误称为域错误o域测试就是在分析输入域的根底上,选择适当的测试点进展测试o域测试的缺乏o域测试对程序的限制较多o当程序中有很多的途径时,所需的测试点太多8.3.5 Z8.3

温馨提示

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

评论

0/150

提交评论