软件工程白盒测试_第1页
软件工程白盒测试_第2页
软件工程白盒测试_第3页
软件工程白盒测试_第4页
软件工程白盒测试_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上白盒测试白盒测试以程序的结构为依据,所有又称为结构测试。早期的白盒测试把注意力放在流程图的各个判定框,使用不同的逻辑覆盖标准来表达对程序进行测试的详尽程度。随着测试技术的发展,人们越来越重视对程序执行路径的考察,并且用程序图代替流程图来设计测试用例。为了区分这两种白盒测试技术,以下把前者称为逻辑覆盖测试,后者称为路径测试。一、逻辑覆盖测试逻辑覆盖测试法(Logic Coverage Testing)考察的重点是图中的判定框(菱形框)。因为这些判定若不是与选择结构有关,就是与循环结构有关,是决定程序结构的关键成分。按照对被测程序所作测试的有效程度,逻辑覆盖测试可由弱到强

2、区分为5种覆盖标准:发现错误的能力弱强语句覆盖每条语句至少执行一次判定覆盖每一判定的每个分支至少执行一次条件覆盖每一判定中的每个条件,分别按“真”、“假”至少各执行一次判定/条件覆盖同时满足判定覆盖和条件覆盖的要求条件组合覆盖求出判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次举例说明:有一个程序段如下:(A>1) (B=0)(A=2) (x>1)x=x/ax=x+1 a b F T c d F T e (a) 语句覆盖:设计若干个测试用例,运行被测程序,使得每一个可执行语句至少执行一次。例如在上图所给出的例子中,正好所有的可执行语句都在路径L1(a>c>

3、e)上,所以选择路径L1设计测试用例,就可以覆盖所有的可执行语句。L1(a>c>e)(A>1) and (B=0) and (A=2) or (x/A>1)=(A=2) and (B=0) or (A>1) and (B=0) and (x/A>1)测试用例可以设计为:【(2,0,4),(2,0,3)】覆盖ace【L1】从程序中每个可执行语句都得到执行这一点来看,语句覆盖的方法似乎能够比较全面的检验每一个可执行语句。但与后面介绍的其它覆盖相比,语句覆盖是最弱的逻辑覆盖准则。(b) 判定覆盖所谓判定覆盖就是设计若干个测试用例,运行被测试程序,使得程序中每个判断

4、的取真分支和取假分支至少经历一次。判定覆盖又称为分支覆盖。如上例如果选择路径L1(a>c>e)和L2(a>b>d),可得满足要求得测试用例:L2(a>b>d)(A<=1) or (B0) and (A2) and (x<=1)=( A<=1) and (x<=1) or ( B0) and (A2) and (x<=1)测试用例可以设计为:【(2,0,4),(2,0,3)】覆盖ace【L1】【(1,1,1),(1,1,1)】覆盖abd【L2】如果选取路径L3(a>b>e)和L4(a>c>d)L3(a>

5、;b>e)(A<=1) or (B0) and (A2) or (x>1)=( A<=1) and (x>1) or ( B0) and (A=2) or ( B0) and (x>1)L4(a>c>d)(A>1) and (B=0) and (A2) and (x/A<=1)还可以得到另一组可用得测试用例:【(2,1,1),(2,1,2)】覆盖abe【L3】【(3,0,3),(3,1,1)】覆盖acd【L4】所有测试用例得取法不唯一。注意有例外情况,例如,如果把上例中第二个判定中的条件x>1错写成x<1,那么利用上面两组

6、测试用例,仍能得到同样的结果。这表明,只是判定覆盖,还不能保证一定能查出在判断得条件中存在得错误。因此还需要更强的逻辑覆盖准则检验判断内部条件。(c) 条件覆盖所谓条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。上例中,我们事先可对所有条件得取值加以标记。例如: 对于第一个判断:条件A>1取真值为T1,取假值为T1 条件B=1取真值为T2,取假值为T2对于第二个判断:条件A=2取真值为T3,取假值为T3 条件x>1取真值为T4,取假值为T4则可选取测试用例如下:测试用例 通过路径 条件取值 覆盖分支【(2,0,4),(2,0,3)】

7、 ace(L1) T1 T2 T3 T4 c,e【(1,0,1),(1,0,1)】 abd(L2) T1 T2 T3 T4 b,d【(2,1,1),(2,1,2)】 abe(L3) T1 T2 T3 T4 b,e或测试用例 通过路径 条件取值 覆盖分支【(1,0,3),(1,0,4)】 abe(L3) T1 T2 T3 T4 c,e【(2,1,1),(2,1,2)】 abe(L3) T1 T2 T3 T4 b,d注意,前一组测试用例不但覆盖了所有判断得取真分支和取假分支,而且覆盖了判断中所有条件得可能取值。但是后一组测试用例虽满足了条件覆盖,但只覆盖了第一个判断得取假分支和第二个判断得取真分支

8、,不满足判定覆盖得要求。为了解决这一矛盾,需要对条件和分支兼顾,有必要考虑以下得判定条件覆盖。(d) 判定条件覆盖所谓判定条件覆盖就是设计足够的测试用例,使得判断中每个条件得所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次。上例中可以设计如下测试用例:测试用例 通过路径 条件取值 覆盖分支【(2,0,4),(2,0,3)】 ace(L1) T1 T2 T3 T4 c,e【(1,1,1),(1,1,1)】 abd(L2) T1 T2 T3 T4 b,d判定条件覆盖也有缺陷。从表面上来看,它测试了所有条件得取值,但是事实并非如此。因为往往某些条件掩盖了另一些条件。对于条件表

9、达式(A>1)and (B=0)来说,若(A>1)的测试结果为真,则还有测试(B=0),才能决定表达式得值;而若(A>1)的测试结果为假,可以立刻确定表达式得结果为假。这时往往就不再测试(B=0)的取值了。因此,条件(B=0)就没有检查。同样,对于条件表达式(A=2)or (X>1)来说,若(A=2)得测试结果为真,就可以立即确定表达式的结果为真。这时,条件(X>1)就没有检查。因此,采用判定条件覆盖,逻辑表达式中的错误不一定能够查得出来。(e) 条件组合覆盖所谓条件组合覆盖就是设计足够得测试用例,运行被测程序,使得每个判断得所有可能得条件取值组合至少执行一次。上

10、例中,先对各个判断得条件取值组合加以标记。如下:记 A>1,B=0 作T1 T2,属第一个判断得取真分支; A>1,B0 作T1 T2,属第一个判断得取假分支; A1,B=0 作T1 T2,属第一个判断得取假分支; A1,B0 作T1 T2,属第一个判断得取假分支; A=2,x>1 作T3 T4,属第二个判断得取真分支; A=2,x1 作T3 T4,属第二个判断得取真分支; A2,x>1 作T3 T4,属第二个判断得取真分支; A2,x1 作T3 T4,属第二个判断得取假分支;对于每个判断,要求所有可能得条件取值得组合都必须取到。测试用例如下:测试用例 通过路径 条件取

11、值 覆盖分支【(2,0,4),(2,0,3)】 ace(L1) T1 T2 T3 T4 ,【(2,1,1),(2,1,2)】 abe(L3) T1 T2 T3 T4 ,【(1,0,3),(1,0,4)】 abe(L3) T1 T2 T3 T4 ,【(1,1,1),(1,1,1)】 abd(L2) T1 T2 T3 T4 ,这组测试用例覆盖了所有条件得可能取值的组合,覆盖了所有判断得可取分支,但路径漏掉了L4。测试还不完全。六种白盒子测试方法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组. 白盒测试的概述由于逻辑错误和不正确假设与一条程序路径被运行的可能性成反比。由于我们经常相信某逻辑路径

12、不可能被执行, 而事实上,它可能在正常的情况下被执行。由于代码中的笔误是随机且无法杜绝的,因此我们要进行白盒测试。白盒测试又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。白盒的测试用例需要做到:·保证一个模块中的所有独立路径至少 被使用一次·对所有逻辑值均需测试 true 和 false·在上下边界及可操作范围内运行所有循环 ·检查内部数据结构以确保其有效性白盒测试的目的:通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖

13、测试;在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。白盒测试的特点:依据软件设计说明书进行测试、对程序内部细节的严密检验、针对特定条件设计测试用例、对软件的逻辑路径进行覆盖测试。白盒测试的实施步骤:1.测试计划阶段:根据需求说明书,制定测试进度。2.测试设计阶段:依据程序设计说明书,按照一定规范化的方法进行软件结构划分和设计测试用例。3.测试执行阶段:输入测试用例,得到测试结果。4.测试总结阶段:对比测试的结果和代码的预期结果,分析错误原因,找到并解决错误。白盒测试的方法:总体上分为静态方法和动态方法两大类。静态分析是一种不通过执行程序而进行测试的技术。静态分

14、析的关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义。动态分析的主要特点是当软件系统在模拟的或真实的环境中执行之前、之中和之后 , 对软件系统行为的分析。动态分析包含了程序在受控的环境下使用特定的期望结果进行正式的运行。它显示了一个系统在检查状态下是正确还是不正确。在动态分析技术中,最重要的技术是路径和分支测试。下面要介绍的六种覆盖测试方法属于动态分析方法。黑盒测试(blackbox testing)又称功能测试、数据测试或基于规范的测试。用这种方法进行测试时,被测程序被当作看不见内部的黑盒。在完全不考虑程序内部结构和内部特性的情况下,测试者仅依据程序功能的需求规范考虑确定测试用例

15、和推断测试结果的正确性。因此黑盒测试是从用户观点出发的测试,黑盒测试直观的想法就是既然程序被规定做某些事,那我们就看看它是不是在任何情况下都做的对。完整的“任何情况”是无法验证的,为此黑盒测试也有一套产生测试用例的方法,以产生有限的测试用例而覆盖足够多的“任何情况”。由于黑盒测试不需要了解程序内部结构,所以许多高层的测试如确认测试、系统测试、验收测试都采用黑盒测试。    黑盒测试首先是程序通常的功能性测试。要求:    每个特性必须被一个测试用例或一个被认可的异常所覆盖;用数据类型和数据值的最小集测试;用一系列真实的数据类型和数据值

16、运行,测试超负荷、饱和及其他“最坏情况”的结果;用假想的数据类型和数据值运行,测试排斥不规则输入的能力;对影响性能的关键模块,如基本算法、应测试单元性能(包括精度、时间、容量等)。    不仅要考核“程序是否做了该做的?”还要考察“程序是否没做不该做的2”同时还要考察程序在其他一些情况下是否正常。这些情况包括数据类型和数据值的异常等等。下述几种方法:(a)等价类划分,(b)因果图方法,(c)边值分析法,(d)猜错法,(e)随机数法,就是从更广泛的角度来进行黑盒测试。每一个方法都力图能涵盖更多的“任何情况”,但又各有长处,综合使用这些方法,会得到一个较好的测试用例集

17、。1.等价类划分    等价类划分是一种典型的黑盒测试方法。等价类是指某个输入域的集合。它表示对揭露程序中的错误来说,集合中的每个输入条件是等效的。因此我们只要在一个集合中选取一个测试数据即可。等价类划分的办法是把程序的输入域划分成若干等价类,然后从每个部分中选取少数代表性数据当作测试用例。这样就可使用少数测试用例检验程序在一大类情况下的反映。    在考虑等价类时,应该注意区别以下两种不同的情况:    有效等价类:有效等价类指的是对程序的规范是有意义的、合理的输入数据所构成的集合。在具体问题中,有效等

18、价类可以是一个,也可以是多个。    无效等价类:无效等价类指对程序的规范是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。    确定等价类有以下几条原则:    如果输入条件规定了取值范围或值的个数,则可确定一个有效等价类和两个无效等价类。例如,程序的规范中提到的输入条包括“项数可以从1到999”,则可取有效等价类为“l考项数999”,无效等价类为“项数l,及“项数999”。    输入条件规定了输入值的集合,或是规定了“必须

19、如何”的条件,则可确定一个有效等价类和一个无效等价类。如某程序涉及标识符,其输入条件规定“标识符应以字母开头”则“以字母开头者”作为有效等价类,“以非字母开头”作为无效等价类。    如果我们确知,已划分的等价类中各元素在程序中的处理方式是不同的,则应将此等价类进一步划分成更小等价类。    输入条件 有效等价类 无效等价类     。    。 。    。 。    。     根据

20、已列出的等价类表,按以下步骤确定测试用例:    为每个等价类规定一个唯一的编号;    设计一个测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,最后使得所有有效等价类均被测试用例所覆盖;    设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步,使所有无效等价类均被覆盖。这里强调每次只覆盖一个无效等价类。这是因为一个测试用例中如果含有多个缺陷,有可能在测试中只发现其中的一个,另一些被忽视。等价类划分法能够全面、系统地考虑黑盒测试的测试用例设计问题,但是没有注意选用一些“高效的”、“

21、有针对性的”测试用例。后面介绍的边值分析法可以弥补这一缺点。2.因果图    等价类划分法并没有考虑到输入情况的各种组合。这样虽然各个输入条件单独可能出错的情况已经看到了,但多个输入情况组合起来可能出错的情况却被忽略。采用因果图方法能帮助我们按一定步骤选择一组高效的测试用例,同时,还能为我们指出程序规范的描述中存在什么问题。    利用因果图导出测试用例需要经过以下几个步骤:    分析程序规范的描述中哪些是原因,哪些是结果。原因常常是输入条件或是输入条件的等价类。结果是输出条件。  

22、  分析程序规范的描述中语义的内容,并将其表示成连接各个原因与各个结果的“因果图”。    由于语法或环境的限制,有些原因和结果的组合情况是不可能出现的。为表明这些特定的情况,在因果图上使用持殊的符号标明约束条件。把因果图转换成判定表。把判定表的每一列写成一个测试用例。3.边值分析法    边值分析法是列出单元功能、输入、状态及控制的合法边界值和非法边界值,设计测试用例,包含全部边界值的方法。典型地包括IF语句中的判别值,定义域、值域边界,空或畸形输入,末受控状态等。边值分析法不是一类找一个例子的方法,而是以边界情况的处理作

23、为主要目标专门设计测试用例的方法。另外,边值分析不仅考查输入的边值,也要考虑输出的边值。这是从人们的经验得出的一种有效方法。人们发现许多软件错误只是在下标、数据结构和标量值的边界值及其上、下出现,运行这个区域的测试用例发现错误的概率很高。    用边值分析法设计测试用例时,有以下几条原则:    如果输入条件规定了取值范围,或是规定了值的个数,则应以该范围的边界内及刚刚超出范围的边界外的值,或是分别对最大、最小及稍小于最小、稍大于最大个数作为测试用例。如有规范“某文件可包含l至255”个记录“,则测试用例可选1和255及0和256等。    针对规范的每个输出条件

温馨提示

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

评论

0/150

提交评论