白盒测试用例设计方法_第1页
白盒测试用例设计方法_第2页
白盒测试用例设计方法_第3页
白盒测试用例设计方法_第4页
白盒测试用例设计方法_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、1白盒测试用例设计方法1.1白盒测试简介白盒测试又称结构测试、逻辑驱动测试或基于程序的测试,一般多发生在单元测试阶段。白盒测试方法主要包括逻辑覆盖法,基本路径法,程序插装等。这里重点介绍一下常用的基本路径法,对于逻辑覆盖简单介绍一下覆盖准则。1.2基本路径法在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出独立路径集合,从而 设计测试用例,设计出的测试用例要保证在测试中程序的每一个可执行语句至少执行一次。胃hi I楠句在介绍基本路径测试方法(又称独立路径测试)之前,先介绍流图符号:图1如图1所示,每一个圆,称为流图的节点,代表一个或多个语句,流程图中的处理方框 序列和菱形决策框可映射为

2、一个节点,流图中的箭头,称为边或连接,代表控制流,类似于 流程图中的箭头。一条边必须终止于一个节点,即使该节点并不代表任何语句,例如,图2中两个处理方框交汇处是一个节点,边和节点限定的范围称为区域。图2任何过程设计表示法都可被翻译成流图,下面显示了一段流程图以及相应的流图。783)流程图(Ej流图注意,程序设计中遇到复合条件时(逻辑or, and, nor等),生成的流图变得更为复杂,如(c)流图所示。此时必须为语句IF a OR b中的每一个a和b创建一个独立的节点。IF a OR h Then IF a OR h Then procedure xIpracedure yEnd IF(c)流

3、图独立路径是指程序中至少引进一个新的处理语句集合,采用流图的术语,即独立路径必 须至少包含一条在定义路径之前不曾用到的边。例如图(b)中所示流图的一个独立路径集合 为:路径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上面定义的路径1,2, 3和4包含了3)流图的一个基本集,如果能将测试设计为强迫 运行这些路径,那么程序中的每一条语句将至少被执行一次,每一个条件执行时都将分别 取true和false (分支覆盖)。应该注意到基本集并不唯一,实际上,给定的过程设计可派 生出任意数量的

4、不同基本集。如何才能知道需要寻找多少条路径呢?可以通过如下三种方法 之一来计算独立路径的上界:V=E-N+2,E是流图中边的数量,N是流图节点数量。V=P+1,P是流图中判定节点的数量V=R,R是流图中区域的数量例如,(b)流图可以采用上述任意一种算法来计算独立路径的数量V=11条边-9个节点+2=4V=3个判定节点+1=4流图有4个区域,所以V=4由此为了覆盖所有程序语句,必须设计至少4个测试用例使程序运行于这4条路径。在采用基本路径测试方法中,获取测试用例可参考以下方式:通过非路径分析得到的测试用例;找到尚未测试过的路径并生成相应的测试用例;指定特定路径生成相应的测试用例。对程序中的循环作

5、了执行了零次和一次的限制,这样程序路径的数目就是有限的。如果程序的数目有限,就可采用枚举法得到所有的路径。完成若干测试用例后,就可以知道所测路径是哪些,尚有哪些待测路径。在指出要测试的路径以后,可以自动生成相应的测试用例。1.3逻辑覆盖1.3.1循环测试简介逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。它的主要方法有:语 句覆盖;判定覆盖;条件覆盖;判定一条件覆盖;条件组合覆盖;路径覆盖。举例如下:(I X、W = 3 a( o a 3 (I X、W = 3 a( o a 3 ( I 5 X) P及v (【5学)=(LX) PS E = V)P 窗力 Q =迁)口( X)pm 很=

6、Y)( I V)=id X) ( E = V) I o = H) P (I V)| =(p。q。e) ZT.(i v/x) (o = a) pi-心(O = H)PC 仁二 Y)=(T y/x) (0 = a) pw (l Y) (: = y)冲(o = h) p(I v)=iT 1 )战 n d (日=0)中棒 d (& = 9 ) (盅 1);=j(A 1) o r (B = 0 )| and (A = 2)or (X 1);=(A 1)and (X 1) or(B = 0) and (A = 2) or (B = 0)and (X 1)=(A L)cr(B 芋 W) and (A = 2

7、) or (B 手 and(X 1 )尸,Vk=jc.-A1一 h申I L4 (a t e d)= (A1) mrf(B = 0)j 瑚(A = 2(X/A1)=(A 1) mcl (B = 0)(m(l (A = 2) cipcJ(X/A 1 ) and ( B = 0 ) and ( X /A 1 )(A 1 ) and (X 1 ) or(B 壬 0 ) and (A , 2 ) and (X 1取真为T,取假为甬;条件B = 0取真为T2,取假为T2。测试用例覆盖分支【(1, 0, 3),测试用例覆盖分支【(1, 0, 3),(1, 0, 4)】L3(b, e)【(2, 1, 1),(

8、2, 1, 2)】L3(b, e)条件取值叩2T3TT1T2T3T对于第二个判断:条件A=2取真为T3,取假为t3 ;条件X1取真为t4,取假为T4。测试用例覆盖分支条件取值【(2, 0, 4),(2, 0, 3)】L1(c, e)TTTT12 3 4【(1, 0, 1),(1, 0, 1)】L2(b, d)仃亍4【(2, 1, 1),(2, 1, 2)】L3(b, e)LE或1.3.5判定一条件覆盖判定一条件覆盖:判定一条件覆盖就是设计足够的测试用例,使得判断中每个条件的所 有可能取值至少执行一次,同时每个判断中的所有可能取值至少执行一次。例如:测试用例覆盖分支条件取值【(2, 0, 4),

9、(2, 0, 3)】L1(c, e)T1T2T3T4【(1, 1, 1),(1, 1, 1)】L2(b, d)TTX(A=2) and (B=0) or (A1) and (B=0) and (X/A1);(AW1) and (XW1) or (B尹0) and (A2) and (XW1)条件组合覆盖:条件组合覆盖就是设计足够的测试用例,运行被测程序,使得每个判断 的所有可能的条件取值组合至少执行一次。例: A1, B=0 作 T1T2A1, B约 作T1T2A上1, B = 0作中2A上1, B约 作TT2A=2, X1 作 T3T4A=2, X上 1 作 T3T4A, X1作百4A疙,X

10、上1作T3T4测1试用例覆盖条件覆盖组合【(2, 0, 4),(2,0, 3)】(L1)LT2T3T4,【(2, 1, 1),(2, 1, 2)】(L3) ET;,【(1, 0, 3),(1, 0, 4)】(L3)臣页,【(1, 1, 1),(1, 1, 1)】(L2) 丁3丁4,1.3.7路径覆盖路径覆盖:路径测试就是设计足够的测试用例,覆盖程序中所有可能的路径。测试用例通过路径覆盖条件【(2, 0, 4),(2, 0, 3)】ace (L1)TTTT12 3 4【(1, 1, 1),(1, 1, 1)】abd (L2)T1T2T3T4【(1, 1, 2),(1, 1, 3)】abe (L3

11、)丁3丁4【(3, 0, 3),(3, 0, 1)】acd (L4)T1T2T3T4循环测试主要关注循环体结构的正确性,对循环变量运用类似于边界值测试的方法以验证循环体结构的正确性。循环测试主要由四种不同类型的循环结构简单循环;嵌套循环;连接循环;非结构循环1.4.1简单循环如果n是循环次数,那么测试用例应包括直接跳过循环体;只执行一遍循环体;连续执行两遍循环体;如果循环次数为n,执行m( m 按照简单循环的测试方法测试最内层的循环体,外层循环仍旧取最小值向外扩展循环体,测试下一个循环所有外层循环变量取最小值;其余内层嵌套的循环体取典型值;继续本步骤直到所有的循环体均测试完毕。1.4.3连接循

12、环 如果相连接的循环体互相独立,按照简单循环测试每一个循环体;1.4.3连接循环 如果相连接的循环体互相独立,按照简单循环测试每一个循环体; 如果相连接的循环体1的循环变量的最终结果是循环体2循环变量的初始值,那么采用嵌套循环的方法来测试(靠前认为是内层循环)。 最好的方法是重新设计循环体结构1.5程序插桩程序插装是一种基本的测试手段。它是在程序特定部位插入“探针”,以便把程序执行过 程中发生的一些重要历史事件记录下来(如语句执行次数、某些变量值的变化情况等),只 有借助于插装技术,才能了解程序执行时的语句覆盖、分支覆盖及路径覆盖等结构覆盖情况。 在被测程序中插入的操作(语句)称为探测器”或探

13、针”。例如:求取两个整数X和Y的最大公约数程序如下:int gsd (int X, int Y) int Q=X;int R=Y;while(Q!=R) if(QR)Q=Q-R;else R=R-Q;return Q;为了记录改程序中语句的执行次数,我们使用插桩技术插入如下语句:C(i)=C(i)+1,i=1,2,6插桩之后的流程图如下:在程序入口处插入对 计数器C(i)的初始化 语句在程序入口处插入对 计数器C(i)的初始化 语句Ct 1) = C(4|- 1 i ; C3) = C(3) 4 1 iI 图中虚线框中的内容并不是源程序的内容,而是我们为了记录语句的执行次数而插入 的。虚线框中

14、的程序就是为了完成计数。形式就是C(n)=C (n)+1 ; n = 1, 2, 3, ,n ;该程序从入口开始,到出口执行结束。凡经历的计数语句都能记录下该程序点的执行 次数。如果我们在程序的入口处还插入了对计数器C(i)初始化的语句,在出口处插入了打印 这些计数器的语句,就构成了完整的插桩程序。它就能记录并输出在各程序点上语句的实际 执行次数。下图为插桩之后的程序,箭头所指为插入的语句。源程序的语句已略去。初始化叫)AC(2) = C(2 + 1AC(n) = C间卜 1A打印C(i)设计插桩程序时需要考虑的问题包括:(1)探测哪些信息。这个问题需要具体问题具体分析。(2)在程序的什么部位设置探测点。针对这个问题,在手机测试中,通常在下列一些部位设置探测点:程序块的第1个可执行语句之前for

温馨提示

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

评论

0/150

提交评论