软件测试牛倩第五章白盒测试上机作业_第1页
软件测试牛倩第五章白盒测试上机作业_第2页
软件测试牛倩第五章白盒测试上机作业_第3页
软件测试牛倩第五章白盒测试上机作业_第4页
软件测试牛倩第五章白盒测试上机作业_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

1、软件测试第五章 白盒测试牛倩黑盒测试 等价类划分 边界值分析 因果图 决策表本章要点 白盒测试的含义 白盒测试无法实现穷举测试的原因 白盒测试的优点和局限性 白盒测试中的静态测试和动态测试 逻辑覆盖法、基本路径测试及控制结构测试 白盒测试方法的综合使用策略什么是白盒测试?,是一种测试用例设计方法,它从程序的控制结构导出测试用例。 测试人员利用程序的内部逻辑结构和相关信息,对程序的内部结构和路径进行测试,检验其是否达到了预期的设计要求。谁来负责白盒测试? 白盒测试一般由进行 在集成测试阶段,如果需要白盒测试,则由有经验的测试人员和软件开发人员共同完成。有了黑盒测试为什么还要白盒测试? 黑盒测试只

2、能观察软件的外部表现,即使软件的输入输出都是正确的,却并不能说明软件就是正确的。因为程序有可能用错误的运算方式得出正确的结果,例如“负负得正,错错得对”,只有白盒测试才能发现真正的原因。 白盒测试能发现程序里的隐患,象内存泄漏、误差累计问题。在这方面,黑盒测试存在严重的不足。 白盒测试的 与黑盒测试相比,白盒测试深入到程序的内部进行测试,更易于定位错误的原因和具体位置,弥补了黑盒测试只能从程序外部进行测试的不足。白盒测试的 即使白盒测试覆盖了程序中的所有路径,仍不一定能发现程序中的全部错误。这是因为: 白盒测试不能查出程序中的设计缺陷。 白盒测试不能查出程序是否遗漏了功能或路径。 白盒测试可能

3、发现不了一些与数据相关的错误。 白盒测试的主要 保证一个模块中的所有独立路径至少被执行一次; 对所有的逻辑值均需要测试真、假两个分支; 在上下边界及可操作范围内运行所有循环; 检查内部数据结构以确保其有效性。白盒测试的 白盒测试分为和两大类。 静态测试:代码检查法、静态结构分析法、代码质量度量法等。 动态测试:、控制结构测试、程序插桩等。 静态白盒测试(略) 代码检查法 代码检查包括等。 代码检查主要检查代码和设计的一致性,代码是否遵循标准,代码的可读性,代码的逻辑正确性,代码结构的合理性等。 代码检查应在编译和动态测试之前进行,并且应尽早进行。静态白盒测试(略) 静态结构分析法 静态结构分析

4、主要是以图形的方式表现程序的内部结构,供测试人员对程序结构进行分析。 在静态结构分析中,测试人员通过使用测试工具分析程序源代码的系统结构、数据结构、数据接口、内部控制逻辑等内部结构,生成函数调用关系图、模块控制流图、内部文件调用关系图、子程序表、宏和函数参数表等各类图形图表,以清晰地表示程序的内部结构,供测试人员对其进行分析,进而查找程序中的错误。静态白盒测试(略) 代码质量度量法 根据iso/iec 9126国际标准的定义,软件质量包括以下 六个方面: 功能性(functionality) 可靠性(reliability) 可用性 (usability) 效率 (efficiency) 可维

5、护性(maintainability) 可移植性(portability)可根据iso 9126质量模型构造软件的静态质量度量模型,通过量化的数据评估被测程序的质量。逻辑覆盖法 逻辑覆盖法(logic-coverage testing)是。 根据对程序内部的逻辑结构的覆盖程度,逻辑覆盖法具有不同的覆盖标准:。例子程序(画出程序控制流图):if( (a1) & (b=0) (a1) & (b=0) x=x/a; if (a=2) | (x1)(a=2) | (x1) x=x+1;程序框图(a1) and (b=0)(a=2) or (x1)ax=x/ax=x+1effttbdc1.1.语句覆盖

6、设计若干条测试用例,用例abx执行路径case1203acecase2213abe语句覆盖case1:a=2, b=0, x=3(a1) and (b=0)(a=2) or (x1)ax=x/ax=x+1effttbdc语句覆盖case2:a=2, b=1, x=3(a1) and (b=0)(a=2) or (x1)ax=x/ax=x+1effttbdc此语句未覆盖此语句未覆盖语句覆盖case1:a=2, b=0, x=3(a1) and (b=0)(a=2) or (x1)ax=x/ax=x+1effttbdc错写成错写成or错写成错写成and语句覆盖是最弱的覆盖语句覆盖 2. 2. 判定

7、覆盖(分支覆盖) 设计测试用例,使程序中的。用例abx执行路径case1203acecase3101abd第一组:case1:a=2, b=0, x=3(a1) and (b=0)(a=2) or (x1)ax=x/ax=x+1effttbdc判定覆盖第一组:case3:a=1, b=0, x=1(a1) and (b=0)(a=2) or (x1)ax=x/ax=x+1effttbdc判定覆盖n 判定覆盖无法确定(a1) and (b=0)(a=2) or (x1)ax=x/ax=x+1effttbdc错写成错写成x1) and (b=0)(a=2) or (x1)x=x/ax=x+1eff

8、ttbdc错写成错写成x1 t1 f1 a1 t1 f1 b=0 t2 f2 b=0 t2 f2 a=2 t3 f3 a=2 t3 f3 x1 t4 f4 x1 t4 f4取真表为取真表为取假表为取假表为n满足条件覆盖的一组测试用例a b x路径覆盖分支覆盖条件case6 2 1 1a b eb et1 f2 t3 f4case7 1 0 3a b eb ef1 t2 f3 t43.3.条件覆盖条件覆盖 case6:a=2, b=1, x=1 case7:a=1, b=0, x=3(a1) and (b=0)(a=2) or (x1)ax=x/ax=x+1effttbdc 两个测试用例覆盖了四

9、个条件八种可能取值。但未覆盖c、d分支,不满足判定覆盖的要求。条件覆盖4.4.判定- -条件覆盖。 判定-条件覆盖能同时满足判定、条件两种覆盖标准。满足判定-条件覆盖的一组测试用例a b x路径覆盖分支覆盖条件case12 0 3a c ec et1 t2 t3 t4case81 1 1a b db df1 f2 f3 f4判定-条件覆盖(a1) and (b=0)(a=2) or (x1)ax=x/ax=x+1effttbdccase1:a=2, b=0, x=3判定-条件覆盖case8:a=1, b=1, x=1(a1) and (b=0)(a=2) or (x1)ax=x/ax=x+1e

10、ffttbdc判定-条件覆盖5.5.条件组合覆盖 设计用例,; 上例中需考虑4个条件的8种组合 a 1, b = 0 t1 t2 判定一为真 a 1, b0 t1 f2 a1, b = 0 f1 t2 判定一为假 a1, b0 f1 f2 a = 2,x 1 t3 t4 a = 2,x1 t3 f4 判定二为真 a2,x1 f3 t4 a2,x1 f3 f4 判定二为假条件组合覆盖满足条件组合覆盖的一组测试用例a b x路径 覆盖组号 覆盖条件case12 0 3a c et1 t2 t3 t4case82 1 1a b e t1 f2 t3 f4case91 0 3a b e f1 t2 f

11、3 t4case101 1 1a b d f1 f2 f3 f4条件组合覆盖6.6.路径覆盖 设计足够多的测试用例,。 上述满足条件组合覆盖的测试用例不能覆盖路径。满足路径覆盖的一组测试用例用例abx执行路径case1203acecase7101abdcase8211abecase11301acd路径覆盖语句覆盖语句覆盖判定覆盖判定覆盖条件覆盖条件覆盖判定判定/条件覆盖条件覆盖条件组合覆盖条件组合覆盖路径覆盖路径覆盖习题 为以下流程图所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。x8 and y5x0 or y0z = 1z = 2

12、nynyx16 or y10z =3ny 路径测试控制流图程序环路复杂性基路径测试 循环测试控制流图 控制流图是退化的程序流程图,图中每个处理都退化成一个结点,流线变成连接不同结点的有向弧。 控制流图将程序流程图中结构化构件改用一般有向图的形式表示。控制流图 在控制流图中用圆“”表示节点,一个圆代表一条或多条语句。 控制流图中的基本元素: 节点 边基本控制流图顺序结构if选择结构while循环结构until循环结构case多分支结构 复合逻辑下的控制流图 a or bx+x-(a)(b)(b)(c)(c)ax+x+x-b 路径覆盖的困难含4个分支循环次数20从a到b的可能路径: 问题引入a a

13、b b= =5 +5 +.+5 +51020201 12 2191914141. 程序环路复杂性 程序的又叫: 是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的。必须包含一条在定义之前不曾用到的边。(每一条新的路径都包含了一条新边) 程序环路复杂性计算方法(三种):e:边数,n:节点数,p:连接区域数当p=1时,v(g)= e - n + 2; p是图g 中判定节点的数量 对于强连接图的圈复杂度的计算: v(g)= e - n + p;1. 程序环路复杂性 (续)3edbacfg9187654210例:如下图所示的程序环路复杂性是多少?图形矩阵 导出控制流图和决定基本测试路

14、径的过程均需要机械化,为了开发辅助基本路径测试的软件工具,称为图形矩阵的数据结构很有用。 有m个节点的控制流图矩阵,是一个mm矩阵:a=( a (i,j) ),其中a(i,j)是1,当且仅当从节点i到节点j有一条弧,否则该元素为0。例:12345671000000200000300000400000050000006000000700000006354217 把覆盖的路径数压缩到一定限度内,例如程序中的,就成为基路径测试。 通过分析程序控制流图的环路的复杂性,导出基本路径集合,从而设计测试用例,保证这些路径至少通过一次。2.基本路径测试法2.基本路径测试法 基本路径测试: 1.导出程序的控制流

15、图; 2.计算控制流图的环路复杂度v(g); 3.确定只包含独立路径的基本路径集; 4.设计测试用例;习题4 应用基本路径法给出测试用例。(见kp83)1.main()2. 3. char c; int i=0,j=0,k=0; 4. c=getchar(); 5. while (c!=#) 6. 7. if (c=a&c=a&c=0&c=9) 10. j+; 11. else 12. k+; 13. c=getchar(); 14. 15. printf(i=%d,j=%d,k=%dn,i,j,k);16.习题3 解答3.程序插桩 程序插桩是一种。在单元测试中运用较多。 在测试或调试程序时,

16、常常需要在程序中插入一些打印语句,使其在程序执行过程中能打印出我们关心的信息,通过这些信息来了解程序执行过程中的动态特性,如程序的实际执行路径、程序中某语句的执行次数、程序中各路径的被覆盖程度、程序中某变量在特定时刻的值等。这些是可以通过程序插桩来完成的。 下面以计算整数x和整数y的最大公约数的程序为例,来说明程序插桩方法的要点。计算整数x和整数y的最大公约数的程序流程图如图4-9所示。 图4-9中的虚线框是为了记录语句的执行次数而插入的,其形式为: c(i) = c(i) +1 i=1,2,6 程序从入口开始执行到出口结束执行,经过的计数语句记录下该程序点语句的执行次数。若在程序的入口处插入

17、了对计数器c(i)初始化的语句,在程序出口处则插入打印这些计数器的语句,则构成了一个完整的插桩程序。开始开始c(1) = c(1) +1c(2) = c(2) +1为为x、y赋值赋值c(4) = c(4) +1结束结束c(3) = c(3) +1xyx yc(5) = c(5) +1c(6) = c(6) +1x = x yy=yxftft3.程序插桩 设计程序插桩方法时需考虑如下问题: 应探测程序中的哪些信息。 在程序的什么位置设置探测点。4.3 白盒测试方法的综合使用策略 一般可先进行静态测试,接着进行动态测试。 覆盖率测试是白盒测试的重点,一般可使用基本路径测试方法来使基本路径集合中的每条独立路径至少执行一次。 在单元测试阶段,以代码检查法、逻辑覆盖法、基本路

温馨提示

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

评论

0/150

提交评论