第3章 软件测试方法_第1页
第3章 软件测试方法_第2页
第3章 软件测试方法_第3页
第3章 软件测试方法_第4页
第3章 软件测试方法_第5页
已阅读5页,还剩156页未读 继续免费阅读

下载本文档

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

文档简介

1、第3章 软件测试的方法(fngf)西安财经学院共一百六十一页第3章 软件测试的方法(fngf)3.1 白盒测试方法3.2 黑盒测试方法3.3 静态测试和动态(dngti)测试3.4 主动测试和被动测试3.5 形式化测试方法3.6 基于风险的测试3.7 模糊测试方法3.8 ALAC测试和随机测试方法共一百六十一页方法论和具体方法从方法论看,更多体现了一种哲学的思想,例如辩证统一的方法,在测试中有许多(xdu)对立统一体,如静态测试和动态测试、白盒测试和黑盒测试、自动化测试和手工测试等。软件测试的方法论来源于软件工程的方法论,例如有面向对象的开发方法,就有面向对象的测试方法;有敏捷方法,就有和敏捷

2、方法对应的测试方法。共一百六十一页黑盒子(h zi)和白盒子(h zi)功能测试数据(shj)驱动测试 结构测试逻辑驱动测试 客户需求事件驱动输入输出共一百六十一页静态(jngti)的和动态的主持人作者记录员列席人员内审员技术专业人员用户代表不正式正式互审 走读 审查会议运行(ynxng)程序共一百六十一页自动测试和手工(shugng)测试手工模拟(mn)用户操作共一百六十一页3.1 白盒测试方法3.1.1 语句覆盖3.1.2 判定(pndng)覆盖3.1.3 条件覆盖3.1.4 判定条件覆盖3.1.5 条件组合覆盖3.1.6 路径覆盖3.1.7 基本路径测试法共一百六十一页白盒测试方法白盒测

3、试也称结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据(gnj)程序的控制结构设计测试用例,主要用于软件或程序验证。采用白盒测试方法必须遵循以下几条原则,才能达到测试的目的:保证一个模块中的所有独立路径至少被测试一次。所有逻辑值均需测试真 (true) 和假 (false) 两种情况。检查程序的内部数据结构,保证其结构的有效性。在上下边界及可操作范围内运行所有循环。共一百六十一页白盒测试方法白盒测试法检查程序内部逻辑结构,对所有逻辑路径进行测试,是一种穷举路径的测试方法。但即使每条路径都测试过了,仍然可能存在错误。因为:穷举路径测试无法检查出程序本身是否违反了设计规范,即

4、程序是否是一个(y )错误的程序。穷举路径测试不可能查出程序因为遗漏路径而出错。穷举路径测试发现不了一些与数据相关的错误。共一百六十一页测试覆盖(fgi)标准共一百六十一页测试覆盖(fgi)标准上页小程序的流程图,其中包括了一个执行达20次的循环。那么它所包含的不同执行路径数高达520(1013)条,若要对它进行(jnxng)穷举测试,覆盖所有的路径。假使测试程序对每一条路径进行(jnxng)测试需要1毫秒,同样假定一天工作24小时,一年工作365,那么要想把如图所示的小程序的所有路径测试完,则需要3170年。共一百六十一页白盒测试方法白盒测试主要是检查程序的内部结构、逻辑、循环和路径。常用测

5、试用例设计方法有:逻辑覆盖:以程序的内部逻辑结构为基础,分为语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖等。基本路径测试:在程序控制流程的基础上,分析控制构造(guzo)的环路复杂性,导出基本可执行路径集合,从而设计测试用例。共一百六十一页例:实现一个(y )简单的数学运算 Dim a,b As Integer Dim c As Double If (a0 And b0) Then c=c/a End if If (a1 or c1) Then c=c+1 End if c=b+c共一百六十一页3.1.1 语句(yj)覆盖语句覆盖法的基本思想是设计若干测试用例,运行被测程序,使程

6、序中的每个可执行语句至少被执行一次如果是顺序结构,就是让测试从头执行到尾如果有分支、条件和循环,需要利用下面的方法,执行足够(zgu)的测试覆盖全部语句共一百六十一页续只需设计一个(y )测试用例: a=2,b=1,c=6;即达到了语句覆盖。共一百六十一页续【优点】 :可以很直观地从源代码得到测试用例,无须细分每条判定表达式。【缺点】 :由于这种测试方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件是无法测试的。如在多分支的逻辑运算中无法全面的考虑。语句覆盖(fgi)是最弱的逻辑覆盖(fgi)。共一百六十一页3.1.2 判定(pndng)覆盖判定覆盖法的基本思想是设计若干用例,运行被测程序

7、,使得(sh de)程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。一个判定往往代表着程序的一个分支,所以判定覆盖也被称为分支覆盖。共一百六十一页续a=2,b=1 ,c=6可覆盖判断M的Y分支(fnzh)和判断N的Y分支; a=-2,b=-1 ,c=-3可覆盖判断M的N分支和判断N的N分支 。 这两组测试用例可覆盖所有判定的真假分支。判断(pndun)M判断N共一百六十一页续a=1,b=1 ,c=-3 可覆盖判断(pndun)M的Y分支和判断N的N分支 ; a=1,b=-2 ,c=3可覆盖判断M的N分支和判断N的Y分支 ; 同样的这两组测试用例也可覆盖所有判定的真假分支

8、。判断(pndun)M判断N共一百六十一页续【优点】:判定覆盖具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单(jindn)性,无须细分每个判定就可以得到测试用例。【缺点】:往往大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。判定覆盖仍是弱的逻辑覆盖。共一百六十一页3.1.3 条件(tiojin)覆盖条件覆盖的基本思想是设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能(knng)取值至少满足一次。result=maxint(iN) and (result=maxint)TrueFalsei

9、0 取真 记为 T1 取假 记为 F1 条件 b0 取真 记为 T2 取假 记为 F2判断Q表达式:设条件 a1 取真 记为 T3 取假 记为 F3 条件 c1 取真 记为 T4 取假 记为 F4判断(pndun)M判断N共一百六十一页续测试用例覆盖条件具体取值条件a=2,b=-1,c=-2T1, F2, T3, F4a0,b1,c=1a=-1,b=2,c=3F1, T2, F3, T4a0,a1它覆盖了判定M的N分支(fnzh)和判断N的Y分支。我们用条件覆盖设计(shj)的思想就是让测试用例能覆盖T1、T2、T3、T4、F1、F2、F3、F4判断M判断N共一百六十一页续【优点】:增加了对条

10、件判定(pndng)情况的测试,增加了测试路径。【缺点】:条件覆盖不一定包含判定覆盖。例如,我们刚才设计的用例就没有覆盖判断M的Y分支和判断N的N分支。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。共一百六十一页3.1.4 判定(pndng)条件覆盖判定-条件覆盖是判定和条件覆盖设计方法的交集,即设计足够的测试用例,使得(sh de)判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果至少执行一次测试用例取值条件具体取值条件判定条件通过路径输入:a=2,b=1,c=6输出:a=2,b=1,c=5T1,T2,T3,T4a0,b0, a1,c1M=.T.N=.T.P

11、1(1-2-4)输入:a=-1,b=-2,c=-3输出:a=-1,b=-2,c=-5F1,F2,F3,F4a=0, b=0, a=1, c0,b0,M取真2T1,F2M=.F.a0,b=0,M取假3F1,T2M=.F.a0,M取假4F1,F2M=.F.a=0,b1,c1,N取真6T3,F4N=.T.a1,c=1,N取真7F3,T4N=.T.a1,N取真8F3,F4N=.F.a=1,c=1,N取假按照条件组合覆盖的基本思想,对于前面的例子(l zi),我们把每个判断中的所有条件进行组合,设计组合条件如表所示,而我们设计的测试用例就要包括所有的组合条件。共一百六十一页续测试用例覆盖条件覆盖路径覆盖

12、组合输入:a=2,b=1,c=6输出:a=2,b=1,c=5T1,T2,T3,T4P1(1-2-4)1,5输入:a=2,b=-1,c=-2输出:a=2,b=-1,c=-2T1,F2,T3,F4P3(1-3-4)2,6输入:a=-1,b=2,c=3 输出:a=-1,b=2,c=6F1,T2,F3,T4P3(1-3-4)3,7输入:a=-1,b=-2,c=-3输出:a=-1,b=-2,c=-5F1,F2,F3,F4P4(1-3-5)4,8覆盖了所有组合(zh),但覆盖路径有限,1-2-5 没被覆盖共一百六十一页续测试用例覆盖条件覆盖判断覆盖组合a=2,b=1,c=6T1, T2,T3, T4M取Y

13、分支,Q取Y分支1,5a=2,b= -1,c= -2T1, F2, T3, F4M取N分支,Q取Y分支2,6a=-1,b=2,c=3F1, T2, F3, T4M取N分支,Q取Y分支3,7a= -1,b= -2,c= -3F1, F2, F3, F4M取N分支,Q取N分支4,8要满足(mnz)1、2、3、4、5、6、7、8条件组合共一百六十一页续【优点】:条件(tiojin)组合覆盖准则满足判定覆盖、条件(tiojin)覆盖和判定/条件覆盖准则。【缺点】:线性地增加了测试用例的数量。共一百六十一页3.1.6 路径(ljng)覆盖顾名思义,路径(ljng)覆盖就是设计所有的测试用例,来覆盖程序中

14、的所有可能的执行路径(ljng)。测试用例覆盖路径覆盖条件覆盖组合输入:a=2,b=1,c=6输出:a=2,b=1,c=5P1(1-2-4)T1,T2,T3,T41,5输入:a=1,b=1,c=-3输出:a=1,b=1,c=-2P2(1-2-5)T1,T2,F3,F41,8输入:a=2,b=-1,c=-2输出:a=2,b=-1,c=-2P3(1-3-4)T1,F2,T3,F42,6输入:a=-1,b=2,c=3 输出:a=-1,b=2,c=6P3(1-3-4)F1,T2,F3,T43,7输入:a=-1,b=-2,c=-3输出:a=-1,b=-2,c=-5P4(1-3-5)F1,F2,F3,F4

15、4,8共一百六十一页续测试用例覆盖组合覆盖路径a=2,b=1,c=61,51-2-4a=1,b=1,c=-31,81-2-5a=-1,b=2,c=34,71-3-4a=-1,b=-2,c=-34,81-3-5共一百六十一页续【优点】 :这种测试方法可以(ky)对程序进行彻底的测试,比前面五种的覆盖面都广。【缺点】 :需要设计大量、复杂的测试用例,使得工作量呈指数级增长,不见得把所有的条件组合都覆盖。共一百六十一页 从前面的例子我们可以看到,采用任何一种覆盖(fgi)方法都不能满足我们的要求,所以,在实际的测试用例设计过程中,可以根据需要将不同的覆盖(fgi)方法组合起来使用,以实现最佳的测试用

16、例设计 。共一百六十一页逻辑(lu j)覆盖法根据覆盖目标的不同,逻辑覆盖又可分为语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。语句覆盖:选择足够多的测试用例,使得程序中的每个可执行语句至少执行一次。判定覆盖:通过执行足够的测试用例,使得程序中的每个判定至少都获得一次“真”值和“假”值, 也就是使程序中的每个取“真”分支和取“假”分支至少均经历(jngl)一次,也称为“分支覆盖”。条件覆盖:设计足够多的测试用例,使得程序中每个判定包含的每个条件的可能取值(真/假)都至少满足一次。共一百六十一页逻辑(lu j)覆盖法(续)判定/条件覆盖:设计足够多的测试用例,使得(sh de

17、)程序中每个判定包含的每个条件的所有情况(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次。 满足判定/条件覆盖的测试用例一定同时满足判定覆盖和条件覆盖。组合覆盖:通过执行足够的测试用例,使得程序中每个判定的所有可能的条件取值组合都至少出现一次。 满足组合覆盖的测试用例一定满足判定覆盖、条件覆盖和判定/条件覆盖。路径覆盖:设计足够多的测试用例,要求覆盖程序中所有可能的路径。 共一百六十一页3.1.7 基本(jbn)路径测试程序流程图又称框图,是我们最熟悉,也是最容易理解的一种程序控制结构的图形表示了。在这种图上的框里面常常标明了处理要求或者条件,但是,这些标注在做路径分

18、析时是不重要的。为了了更加突出控制流的结构,需要对程序流程图做一些简化。控制流图(可简称流图)是对程序流程图进行简化后得到的,它可以更加突出的表示程序控制流的结构。控制流图中包括两种图形符号:节点和控制流线。节点由带标号的圆圈表示,可代表一个或多个语句、一个处理框序列(xli)和一个条件判定框(假设不包含复合条件)。控制流线由带箭头的弧或线表示,可称为边。它代表程序中的控制流。共一百六十一页续在控制流图中只有(zhyu)两种图形符号,它们是:1.节点:以标有编号的圆圈表示。它代表了程序流程图中矩形框表示的处理、菱形表示的两个到多个出口判断以及两条到多条流线相交的汇合点。2.控制流线或弧:以箭头

19、表示。它与程序流程图中的流线是一致的,表明了控制的顺序。为了方便讨论,控制流线通常标有名字,如图中所标的a、b、c等。在下图中,给出了简化的例子。其中(a)图示一个含有两个出口判断和循环的程序流程图,我们把它简化成(b)的形式,称这种简化了的程序流程图叫做控制流图。 (a) (b)共一百六十一页基本(jbn)路径测试法1.依据(yj)代码绘制流程图2.确定流程图的圈复杂度(cyclomatic complexity )3.确定线性独立路径的基本集合( basis set )4.设计测试用例覆盖每条基本路径共一百六十一页示例(shl) 源代码Procedure: process records1

20、.Do While records remain2.Read record;3.If record field 1 = 0 Then4.store in buffer;5.increment counter;6.Else If record field 2 = 0 Then7.reset counter;8.Else store in file;9.End If10.End If11.End DoEnd共一百六十一页示例(shl) 流程图1910112457836V(G) = 4共一百六十一页基本(jbn)路径测试:流程图简化12,387694,51011有的时候,我们可以把几个节点合并成一个

21、(y ),合并的原则是:若在一个(y )节点序列中没有分支,则我们可以把这个序列的节点都合并成一个(y )节点。共一百六十一页流程图的圈复杂度 V(G) = 区域数量(shling)(由节点、连线包围的区域,包括图形外部区域) V(G) = 连线数量 - 节点数量 + 2 V(G) = 简单可预测节点数量 + 1圈复杂度(Cyclomatic complexity):代码逻辑复杂度的 度量,提供了被测代码的路径(ljng)数量。复杂度越高,出错的概率越大。V(G)modules共一百六十一页流程图复杂度例子(l zi)V(G)=412,378694,51011Region 1Region 2R

22、egion 3Region 4共一百六十一页确定(qudng)线性独立的路径集合 独立路径: 至少引入一系列新的处理语句(yj)或条件的任何路径 基本集: 由独立路径构成的集合 由基本集导出的测试用例,保证每行代码语句至少被执行一次 基本集合不一定唯一共一百六十一页 Path1: 1-2-3-6-7-9-10-1-11示例(shl):基本路径测试用例 Path2: 1-2-3-6-8-9-10-1-11 Path3: 1-2-3-4-5-10-1-11Path4: 1-111910112458736共一百六十一页测试用例覆盖(fgi)集合中每条路径基本路径测试(csh)并不是测试(csh)所有

23、路径的组合,仅仅保证每条基本路径被执行一次 不需要活动图, 但最好绘制程序流程图 计算每个逻辑测试,也就是布尔操作符数加1 最好每个单元都进行基本路径测试,对关键组件则是必要的共一百六十一页目标: 在循环内部(nib)及边界上执行测试循环(xnhun)测试 11.简单循环(迭代次数n) 完全跳过循环 只经过循环一次 经过循环两次 经过循环m( m n )次 分别经过循环n-1, n, n+1 次共一百六十一页循环(xnhun)测试 22. 嵌套(Nested)循环在最里面的循环完成前面所述的简单循环测试,同时设定外部循环的最小迭代(di di)次数逐步向外循环进行直到所有循环被测试共一百六十一

24、页循环(xnhun)测试 34.其它非结构循环重新(chngxn)设计!3.串行连接的循环独立循环 可以分别看着简单循环测试依赖性循环 可以看着是嵌套循环共一百六十一页3.2 黑盒测试方法3.2.1 等价(dngji)类划分法3.2.2 边界值分析法3.2.3 判定表方法3.2.4 因果图法3.2.5 场景法3.2.6 正交试验法3.2.7 功能图法3.2.8 错误推测法共一百六十一页黑盒测试(csh)概述 黑盒测试也称功能测试或数据(shj)驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用。共一百六十一页软件输入黑盒测试不深入代码细节输出黑盒测试(csh)概述在

25、测试时,把程序看作一个不能打开(d ki)的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性,如图所示。共一百六十一页黑盒测试主要(zhyo)用于发现以下情况是否有不正确或遗漏了的功能在接口上,能否正确地接受输入数据(shj),能否产生正确地输出信息访问外部信息是否有错性能上是否满足要求界面是否错误,是否不美观初始化或终止错误共一百六十一页3.2.1 等价类划分(hu fn)方法为了保证软件质量,我们需要做尽量多的测试,

26、但不可能用所有可能的输入数据来测试程序,即穷尽测试是不可能的。我们可以选择一些有代表性的数据来测试程序,但怎样选择呢?等价类划分是解决这一问题的一个方法。等价类划分是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有(jyu)代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。等价类是某个输入域的子集,在该子集中每个输入数据的作用是等效的。共一百六十一页3.2.1 等价类划分(hu fn)方法等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。并合理地假定:测试某等价类的代表值就等于对这一类其它值

27、的测试。因此(ync),可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据,取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和无效等价类。有效等价类:是有意义的、合理的输入数据构成的集合。可检查程序是否实现了规格说明中所规定的功能和性能。无效等价类:与有效等价类的定义恰巧相反。 在分析需求规格说明的基础上划分等价类,列出等价类表。设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验。经过正反的测试才能确保软件具有更高的可靠性。all inputsi1i4i2i3共一百六十一页确定

28、(qudng)等价类的方法(1)如果输入(shr)条件规定了取值范围或值的个数,可定义一个有效等价类和两个无效等价类。例: 输入值是学生成绩,范围是0100有效等价类:0成绩100无效等价类:成绩100例:一个学生每学期只能选修13门课 有效等价类:选修13门 无效等价类:不选 或 选修超过3门共一百六十一页在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况(qngkung)下,可以确立一个有效等价类和一个无效等价类。在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类确定等价(dngji)类的方法(2)not member of setmember of setB

29、ooleanNon-Boolean共一百六十一页确定(qudng)等价类的方式 (3)在规定(gudng)了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理,则每个允许的输入值是一个有效等价类,并有一个无效等价类(所有不允许的输入值的集合)。例:输入条件说明学历可为:专科、本科、硕士、博士四种之一有效等价类:专科、本科、硕士、博士无效等价类:其它任何学历共一百六十一页确定等价(dngji)类的方式(4)如果(rgu)规定了输入数据必须遵循的规则,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。例:校内电话号码拨外线为9开头有效等价类: 9外线号码无效等价

30、类:非9开头外线号码 9非外线号码,共一百六十一页根据等价类创建(chungjin)测试用例的步骤建立等价类表,列出所有划分出的等价类:为每个等价类规定一个(y )唯一的编号;设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类重复c),最后使得所有有效等价类均被测试用例所覆盖;设计一个新的测试用例,使其只覆盖一个无效等价类。重复e)使所有无效等价类均被覆盖。输入条件有效等价类无效等价类共一百六十一页例1:报表(bobio)日期设某公司要打印20012010年的报表(bobio),其中报表(bobio)日期为6位数字组成,其中,前4位为年份,后两位为月份。共一百六十一页第一步:划分(h

31、u fn)等价类输入及外部条件有效等价类无效等价类报表日期的类型及长度6位数字字符有非数字字符 少于6个数字字符 多于6个数字字符 年份范围在20012010之间小于2001 大于2010 月份范围在112之间小于1 大于12 共一百六十一页第二步:为有效(yuxio)等价类设计测试用例对表中编号为的3个有效等价(dngji)类用一个测试用例覆盖:测试数据期望结果覆盖范围200105输入有效等价类共一百六十一页第三步:为每一个无效等价(dngji)类至少设计一个测试用例测试数据期望结果覆盖范围001MAY输入无效等价类20015输入无效等价类2001001输入无效等价类200001输入无效等价

32、类201201输入无效等价类200100输入无效等价类200113输入无效等价类本例的10个等价(dngji)类至少需要8个测试用例不能出现相同的测试用例共一百六十一页对招干考试系统“输入学生成绩”子模块设计测试用例 招干考试分三个专业,准考证号第一位为专业代号,如: 1-行政(xngzhng)专业, 2-法律专业, 3-财经专业. 行政专业准考证号码为:110001111215法律专业准考证号码为:210001212006财经专业准考证号码为:310001314015例2:准考证号码(hom)共一百六十一页例:准考证号码的等价(dngji)类划分 有效等价类: (1) 110001 1112

33、15 (2) 210001 212006 (3) 310001 314015 无效等价类: (4) - 110000 (5) 111216 210000 (6) 212007 310000 (7) 314016 + 共一百六十一页例3 电话号码(din hu ho m)城市的电话号码由两部分组成。这两部分的名称和内容分别是: 地区码:以0开头的三位或者四位数字(包括0); 电话号码:以非0、非1开头的七位或者八位数字。假定被调试的程序能接受一切符合上述规定的电话号码(hom),拒绝所有不符合规定的号码(hom),就可用等价分类法来设计它的调试用例。共一百六十一页划分等价(dngji)类并编号输

34、入数据有效等价类无效等价类地区码以0开头的3位数串以0开头的4位数串以0开头的含有非数字字符的串以0开头的小于3位的数串以0开头的大于4位的数串以非0开头的数串电话号码以非0、非1开头的7位数串以非0、非1开头的8位数串以0开头的数串以1开头的数串以非0、非1开头的含有非法字符7或者8位数串以非0、非1开头的小于7位数串以非0、非1开头的大于8位数串共一百六十一页为有效等价(dngji)类设计测试用例 测试数据期望结果覆盖范围010 23145678显示有效输入1、8023 2234567显示有效输入1、70851 3456789显示有效输入2、70851 23145678显示有效输入2、8共

35、一百六十一页为每一个无效等价类至少(zhsho)设计一个测试用例 测试数据期望结果覆盖范围0a34 23456789显示无效输入305 23456789显示无效输入401234 23456789显示无效输入52341 23456789显示无效输入6028 01234567显示无效输入9028 12345678显示无效输入10028 qw123456显示无效输入11028 623456显示无效输入12028 886234569显示无效输入13共一百六十一页例4:回顾(hug)NextDate问题NextDate 函数包含三个变量 month、day和year,函数的输出为输入日期后一天的日期。例

36、如,输入为1989年5月16日,则函数的输出为1989年5月17日。要求输入变量month、day和year均为整数(zhngsh)值,并且满足下列条件,也就是有效等价类:1 month12 1day31 1812year2012共一百六十一页续若条件(1)(3)中任何一个条件失效,则 NextDate 函数都会产生一个输出,指明相应的变量超出取值范围,比如 “month 的值不在 1-12 范围当中”。显然还存在着大量的 year、month、day 的无效组合,我们可以给出下列无效等价(dngji)类: month12day31year2012测试用例的设计这里就略过,请同学们根据划分好的

37、等价类自行设计。共一百六十一页3.2.2 边界值分析法定义:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。 与等价划分的区别边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。 边界值分析不仅考虑输入条件,还要考虑输出空间(kngjin)产生的测试情况。设计方法:确定边界情况(输入或输出等价类的边界)选取正好等于、刚刚大于或刚刚小于边界值作为测试数据共一百六十一页常见(chn jin)的边界值 1)对16-bit 的整数而言 32767 和 -32768

38、是边界(binji) 2)屏幕上光标在最左上、最右下位置 3)报表的第一行和最后一行 4)数组元素的第一个和最后一个 5)循环的第 0 次、第 1 次和倒数第 2 次、最后一次共一百六十一页确定(qudng)边界值的方法 (1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。 例如,如果程序的规格说明中规定:“重量在10公斤至50公斤范围内的邮件(yujin),其邮费计算公式为”。作为测试用例,我们应取10及50,还应取10.01,49.99,9.99及50.01等。如果输入条件定义了数值区间(a,b),那么测试用例应包括a、b、稍微比

39、a大、稍微比b大、稍微比a小和稍微比b小等几种情况. 举个例子,如果a,b是整数, 除在a,b之间取正常点外,a,b,a-1,b-1,a+1,b+1都应被测试。共一百六十一页确定(qudng)边界值的方法(2)如果输入条件规定(gudng)了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。 比如,一个输入文件应包括1255个记录,则测试用例可取1和255,还应取0及256等。共一百六十一页确定(qudng)边界值的方法(3)将规则1)和2)应用于输出条件,即设计测试用例使输出值达到边界值及其左右的值。例如,某程序的规格说明要求计算出每月保险金扣除额为0至116

40、5.25元,其测试用例可取0.00及1165.25、还可取-0.01及1165.26等。再如一程序属于情报检索系统,要求每次“最少显示(xinsh)1条、最多显示4条情报摘要”,这时我们应考虑的测试用例包括1和4,还应包括0和5等。 共一百六十一页确定(qudng)边界值的方法4)如果程序的规格说明给出的输入域或输出域是有序集合(jh),则应选取集合的第一个元素和最后一个元素作为测试用例。5)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。6)分析规格说明,找出其它可能的边界条件。共一百六十一页int a10;for(i=1;i=10;i+)ai=0;很明

41、显,这段代码的目的是创建包含10个元素的数组,并为数组中的每一个元素赋初值0。看看有什么(shn me)问题?例1:分析(fnx)以下代码段共一百六十一页功能描述某选课系统中规定每门课程的选修人数在20,60之间,小于20人不开设该门选修课,大于60人不接受后面的选课要求。测试设计(shj)输入变量:选课人数测试输入选择当选课人数分别为19,20,21, 59,60和61等几个边界点再加上一个正常值点40案例(n l) 共一百六十一页3.2.3 判定(pndng)表方法在实际应用中,许多输入是由多个因素(yn s)构成,而不是单一因素(yn s),这时就需要多因素(yn s)组合分析。对于多因

42、素,有时可以直接对输入条件进行组合设计,不需要进行因果分析,即直接采用判定表方法。一个判定表由“条件和活动”两部分组成,也就是列出了一个测试活动执行所需的条件组合,所有可能的条件组合定义了一系列的选择,而测试活动需要考虑每一个选择。共一百六十一页判定(pndng)表元素条件桩:列出问题的所有(suyu)条件动作桩:列出可能针对问题所采取的操作条件项:针对所列条件的具体赋值动作项:列出在条件项(各种取值)组合情况下应该采取的动作。规则:任何一个条件组合的特定取值及其相应要执行的操作。共一百六十一页判定(pndng)表方法步骤列出所有的条件桩和动作桩;填入条件项;填入动作项,制定初始(ch sh)

43、判定表;简化、合并相似规则或者相同动作共一百六十一页 问题说明:“某货运站收费标准如下:如果收件地点在本省,则快件每公斤5元,慢件(mn jin)每公斤3元;如果收件地点在外省,则在20公斤以内(含20公斤)快件每公斤7元,慢件每公斤5元,而超过20公斤时,快件每公斤9元,慢件每公斤7元。” 举例(j l)共一百六十一页条件(tiojin)取值分析表 条件取值含义收件地址在本省?Y是N否邮件重量20公斤?Y是N否快慢件?Y快件N慢件续共一百六十一页续判定(pndng)表12345678条件桩收件地址在本省?YYYYNNNN条件项邮件重量20公斤?YYNNYYNN快慢件?YNYNYNYN动作桩3

44、元/公斤XX动作项5元/公斤XXX7元/公斤XX9元/公斤X共一百六十一页续YYYNNN*Y-N*简化(jinhu)判定表共一百六十一页续化简后的判定(pndng)表 123456条件桩收件地址在本省?YYNNNN条件项邮件重量20公斤?_YYNN快慢件?YNYNYN动作桩3元/公斤X动作项5元/公斤XX7元/公斤XX9元/公斤X共一百六十一页举例(j l)示例三角形问题:输入(shr)三个整数,这三个值分别表示三角形三条边的长度,请判断这个三角形是等边三角形,还是等腰三角形还是不等边三角形并打印相应的结果a,b,c 分别代表输入的整数,三角形问题的决策表为:共一百六十一页测试用例规则1:测试

45、输入(shr) = (60,16,26), 预期结果 = 非三角形规则2:测试输入 = (50,50,0), 预期结果 = 非三角形规则3:测试输入 = (0,0,0), 预期结果 = 非三角形规则4:测试输入 = (60,60,60), 预期结果 = 等边三角形共一百六十一页测试用例规则(guz)5:这种组合在现实中不可能存在规则6:这种组合在现实中不可能存在规则7:测试输入 = (60,60,26), 预期结果 = 等腰三角形规则8:这种组合在现实中不可能存在共一百六十一页测试用例规则(guz)9:测试输入 = (60,26,60), 预期结果 = 等腰三角形.规则10:测试输入 = (2

46、6,60,60), 预期结果 = 等腰三角形规则11:测试输入 = (30,40,50), 预期结果 = 不等边三角形共一百六十一页注意:一共有8个测试用例 这8个测试用例仅仅(jnjn)测试了三角形问题的逻辑共一百六十一页3.2.4 因果(yngu)图法多种输入条件的组合,产生多种结果设计测试用例。设计方法:分析软件规格说明(shumng)文档描述的哪些是原因(输入条件),哪些是结果(输出条件),给每个原因和结果赋予一个标识符。找出原因与结果,原因与原因之间的对应关系,划出因果图在因果图上标上哪些不可能发生的因果关系,表明约束或限制条件根据因果图,创建判定表,将复杂的逻辑关系和多种条件组合很

47、具体明确的表示出来把判定表的每一列作为依据设计测试用例。共一百六十一页因果图 - 基本(jbn)符号.1若a1则b1若a1则b0共一百六十一页因果(yngu)图 - 基本符号.2若a或b或c1则d1 若ab1则c1共一百六十一页因果(yngu)图 - 约束条件.1为了表示原因与原因之间,结果与结果之间可能(knng)存在的约束条件,在因果图中可以附加一些表示约束条件的符号。 互斥:表示不同时为1,即a,b中至多只有一个1。共一百六十一页因果(yngu)图 - 约束条件.2包含:a、b、c中至少有一个(y )应为1a、b、c不能同时为0共一百六十一页因果(yngu)图 - 约束条件.3唯一:表示

48、a、b中必须(bx)有一个且仅有一个为1共一百六十一页因果(yngu)图 - 约束条件.4要求:如果(rgu)a=1,b也必须为1即不可能a=1且b=0.共一百六十一页因果(yngu)图 - 约束条件.5对于输出条件的约束只有M约束。屏蔽(pngb):如果结果a为1,则b强制为0共一百六十一页举例(j l)例1:某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个(y )数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。共一百六十一页续解答:1)根据题意,原因和结果如下(rxi): 原因: 1第一列字符是A; 2

49、第一列字符是B; 3第二列字符是一数字。 结果: E1修改文件; E2 给出信息L; E3给出信息M。共一百六十一页对应(duyng)的因果图其对应的因果图如下: 11为中间节点;考虑到原因1和原因2不可能同时为1,因此在因果图上施加(shji)E约束,如图所示。111E2E1E323VVE共一百六十一页根据因果图建立(jinl)判定表 12345678原因(条件)11111000021100110031010101011111100动作(结果)E1101000E2000011E3010101共一百六十一页把判定表的每一列拿出来(ch li)作为依据,设计测试用例 12345678原因(条件)

50、11111000021100110031010101011111100动作(结果)E1101000E2000011E3010101测试用例A6AaB9BPC5HYA0AB1B*H4E%共一百六十一页根据(gnj)决策表中的每一列设计测试用例:测试用例编号输入数据预期输出1A6修改文件2Aa给出信息N3B9修改文件4BP给出信息N5C5给出信息M6HY给出信息N和信息M共一百六十一页因果(yngu)图示例:自动售货机产品说明书:有一个处理单价为1元钱的盒装饮料的自动售货机软件。若投入1元硬币,按下“可乐(k l)”、“雪碧”、或“红茶”按钮,相应的饮料就送出来。若投入的是2元硬币,在送出饮料的同

51、时退还1元硬币。 共一百六十一页自动售货机:因果(yngu)图按“雪碧”按钮E(1)(2)(3)(4)(5)(11)(12)(21)(22)(23)(24)投入1元硬币投入2元硬币按“可乐”按钮按“红茶”按钮E退还1元硬币送出“可乐”饮料送出“雪碧”饮料送出“红茶”饮料输入条件(原因)输出条件(结果)共一百六十一页自动售货机:测试用例 共一百六十一页因果图法(t f)总结优点1、因果图法能够帮助我们按照一定步骤,高效的选择测试用例,设计多个输入(shr)条件组合用例2、因果图分析还能为我们指出,软件规格说明描述中存在的问题 3、可以依据因果图检验需求的逻辑和程序未来应包含的函数或方法。缺点1、

52、输入条件与输出结果的因果关系,有时难以从软件需求规格说明书得到。2、即时得到了这些因果关系,也会因为因果关系复杂导致因果图非常庞大,测试用例数目极其庞大。 共一百六十一页3.2.5 场景(chng jng)法为什么引入用例场景现在的软件几乎都是用事件触发来控制(kngzh)流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。这种在软件设计方面的思想也可引入到软件测试中,可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,同时使测试用例更容易理解和执行。提出这种测试思想的是Rational公司。用例场景的定义用例场景用来描述流经用例的路径,从用例

53、开始到结束遍历这条路径上所有基本流和备选流。共一百六十一页1、基本(jbn)流和备选流图中经过用例的每条路径都用基本流和备选(bi xun)流来表示。直黑线表示基本流,是经过用例的最简单的路径。备选流用不同的彩色表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中(如1和3);也可能起源于另一个备选流(如2),或者终止用例而不再重新加入到某个流(如2和4)。共一百六十一页举例(j l) 课程(kchng)注册用例的事件流课程注册系统共一百六十一页构造(guzo)场景 步骤根据事件流描述,构造事件流图根据事件流图,构造场景(chng jng)覆盖从用例开始到结束的路径 备

54、选流 5备选流 4备选流 3备选流 1 备选流 2共一百六十一页构造(guzo)场景 场景(部分)场景1-成功的注册:基本流 场景2-学生无法识别:基本流,备选流1 场景3-用户退出:基本流,备选流2 场景4-选课不成功:基本流,备选流3 场景5-课程目录系统不可(bk)用:基本流,备选流4 场景6-课程注册已经结束:基本流,备选流5 备选流 5备选流 4备选流 3备选流 1 备选流 2共一百六十一页设计(shj)测试用例 步骤: 确定执行用例场景(chng jng)所需的数据元素构造矩阵确定列内容:除了需要包含执行场景所需的数据元素,还需要包含测试用例标识、被测场景标识或名称确定行内容:根据

55、每一场景,确定与其相关的测试用例输入项,在设计时,须保证每个场景至少包含一个正面测试用例一个负面测试用例根据被测场景特征,补充相应测试用例共一百六十一页设计(shj)测试用例 对于课程注册用例,确定(qudng)其列内容为:确定行内容V表示这个条件必须是有效的才可执行基本流,I表示条件无效,n/a表示这个条件不适用于测试用例 共一百六十一页填入测试数据 步骤(bzhu)根据设计的矩阵结果,选择相应的测试数据共一百六十一页举例(j l):ATM例子测试用例:生成每个场景的测试用例是通过某个特定条件来完成的,这个特定(tdng)条件将导致特定(tdng)用例场景的执行。(1)例子描述ATM流程示意

56、图 共一百六十一页基本流:1.插入磁卡 2.ATM机验证帐户正确 3.输入密码正确,通过验证 4.输入取款金额 5.取出金额 6.取卡备选流一:帐户不存在或受限制备选流二:密码不正确,还有输入机会备选流三:密码不正确,没有(mi yu)输入机会备选流四:卡中余额不足备选流五:机中余额不足备选流六:超过每日最大提款限额备选流七:输入金额非100倍数共一百六十一页(2)场景(chng jng)设计场景描述基本流备选流场景1成功的提款基本流场景2帐户不存在/帐户受限基本流备选流1场景3密码不正确(还有输入机会)基本流备选流2场景4密码不正确(不再有输入机会)基本流备选流3场景5卡中余额不足基本流备选

57、流4场景6机中余额不足基本流备选流5场景7超过每日提款上限基本流备选流6场景8输入金额非100倍数基本流备选流7共一百六十一页 对于这7个场景中的每一个场景都需要确定测试用例。可以(ky)采用矩阵或决策表来确定和管理测试用例。下面显示了一种通用格式,其中各行代表各个测试用例,而各列则代表测试用例的信息。本示例中,对于每个测试用例,存在一个测试用例ID、条件(或说明)、测试用例中涉及的所有数据元素(作为输入或已经存在于数据库中)以及预期结果。(3)用例设计(shj)共一百六十一页TC(测试用例)ID号场景/条件PIN帐号输入的金额(或选择的金额)帐面金额(元)ATM内的金额(元)预期结果CW1场

58、景1:成功的提款VVVVV成功的提款。CW2场景2:帐户不存在/帐户受限n/aIn/aVV提款选项不可用,用例结束CW3场景3:密码不正确(还有输入机会)IVn/aVV警告消息,返回基本流步骤3输入密码CW4场景4:密码不正确(不再有输入机会)IVn/aVV警告消息,吞卡CW5场景5:卡中余额不足VVVIV警告消息,返回基本流步骤4,输入金额CW6场景6:机中余额不足VVVVI提示消息,返回基本流步骤4,输入金额CW7场景7:超过每日提款上限VVIVV警告消息,返回基本流步骤4,输入金额CW8场景8:输入金额非100倍数VVIVV警告消息,返回基本流步骤4,输入金额共一百六十一页一旦确定了所有

59、的测试用例,则应对这些用例进行复审和验证以确保其准确且适度,并取消多余或等效的测试用例。测试用例一经认可,就可以确定实际数据值(在测试用例实施矩阵(j zhn)中)并且设定测试数据。(4)数据(shj)设计共一百六十一页TC(测试用例)ID号场景/条件PIN帐号输入的金额(或选择的金额)帐面金额(元)ATM内的金额(元)预期结果CW1场景1:成功的提款4987809-498100500.002000成功的提款。帐户余额被更新为400CW2场景2:帐户不存在/帐户受限n/a809-497n/a500.002000提款选项不可用,用例结束CW3场景3:密码不正确(还有输入机会)4967809-49

60、8n/a500.0070.00警告消息,返回基本流步骤3输入密码CW4场景4:密码不正确(不再有输入机会)4967809-498n/a500.002000警告消息,吞卡CW5场景5:卡中余额不足4987809-498600200.002000警告消息,返回基本流步骤4,输入金额CW6场景6:机中余额不足4987809-498400500.00300提示消息,返回基本流步骤4,输入金额CW7场景7:超过每日提款上限4987809-498(24小时内已取款1900)20020003000警告消息,返回基本流步骤4,输入金额CW8场景8:输入金额非100倍数4987809-498150500.002

温馨提示

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

评论

0/150

提交评论