(精品)软件工程-09

上传人:痛*** 文档编号:244692063 上传时间:2024-10-05 格式:PPT 页数:92 大小:986KB
返回 下载 相关 举报
(精品)软件工程-09_第1页
第1页 / 共92页
(精品)软件工程-09_第2页
第2页 / 共92页
(精品)软件工程-09_第3页
第3页 / 共92页
点击查看更多>>
资源描述
软件工程,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第九章,软件测试用例设计,软件工程课件,1,软件工程第九章,软件测试用例设计,9.1,测试用例设计概述,9.2,软件测试用例设计方法,9.3,白盒测试用例设计方法,9.4,黑盒测试用例设计方法,9.5,单元测试的测试用例设计,9.6,集成测试的测试用例设计,9.7,系统测试的测试用例设计,2,软件工程,9.1,测试用例设计概述,测试用例,是为有效地发现软件缺陷的,最小测试执行单元。,测试用例的重要性,测试用例是测试人员执行测试的重要参考依据。,不同的测试人员根据相同的测试用例所得到的输出应该是一致的,测试实际上就是测试用例的计划、执行和跟踪过程。,良好的测试用例具有复用的功能,,在测试过程中可以重复使用。因此,设计良好的测试用例可以大大节约时间,提高测试效率。,测试用例是在长期测试实践中积累起来的,。组织好这些测试用例,可帮助测试者有效使用它们。,测试用例的通过率是检验程序代码质量的例证,。衡量程序代码的质量,量化的标准应该是测试用例的通过率和软件缺陷(,bug,)的数目。,测试用例也是检验测试人员进度、工作量以及跟踪管理测试人员的工作效率的因素。,尤其适用于对于新的测试人员考核,从而更加合理做出测试安排和计划。,3,软件工程,测试用例数和软件规模的关系,对软件质量的要求不同,测试用例数与程序源代码规模的比例不同,。如航天软件的测试用例数与程序源代码行数的比例就高于普通民用软件。,软件的规模不同,若要达到相同的软件质量,软件的测试用例数与程序代码行数的比例页不同,,大规模软件应该比小规模软件更高些。,测试用例数,软件规模,4,软件工程,测试用例设计说明的书写规范,在,ANSI,IEEE 829 1983,标准中列出了和测试设计相关的测试用例编写规范和模板。,标准模板中主要元素如下。,标识符,:每个测试用例应有一个惟一的标识,作为引用的基本元素。,测试项,:测试用例应准确地描述被测试项及其特征。如做,Windows,应用程序的窗口测试,测试对象是整个应用程序用户界面,其特性要求包括窗口缩放、界面布局、菜单等。,测试环境要求,:用来表明执行该测试用例需要的测试环境,可根据被测模块对测试环境的需求来描述测试用例的测试环境。,输入数据,:用来执行测试用例的输入数据。,对应输出数据,:表示按照指定的环境和输入标准得到的期望输出结果。,测试用例间的关联,:用来标识该测试用例与其他的测试(或其他测试用例)间的依赖关系。,5,软件工程,9.2,软件测试用例设计方法,静态测试和动态测两类的测试,静态测试:不必执行程序,目的是收集有关程序代码的结构信息而非查错。,主要采用检查、分析、评审等人工测试的方法;,动态测试,需要执行程序,目的是查错。,主要有:,黑盒测试、白盒测试,6,软件工程,9.2.1,黑盒测试(,Black-Box Test,),把,测试对象,看做,一个黑盒,,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明。,黑盒测试叫做,功能测试,或,数据驱动测试,。,采用黑盒测试方法就意味着测试要在软件的接口处进行。,7,软件工程,黑盒测试方法主要是为了发现以下几类错误:,1),是否有不正确或遗漏了的功能?,在接口上,输入能否正确地接受,?,能否输出正确的结果,?,是否有数据结构错误或外部信息,(,例如数据文件,),访问错误,?,性能上是否能够满足要求,?,是否有初始化或终止性错误,?,用黑盒测试发现程序中的错误,必须在,所有可能的输入条件和输出条件中,确定测试数据,来检查程序是否都能产生正确的输出。,但这是,不可能,的。,P,X,Y,Z,第三方测试大多采用黑盒测试方法,8,软件工程,9.2.2,白盒测试(,White-Box Test,),此方法,把测试对象看做一个玻璃盒子,,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。,白盒测试又称为结构测试、逻辑驱动测试、,开盒测试、玻璃盒测试、基于程序的测试,.,。,9,软件工程,对于有多重循环的程序,穷举测试是不可能的。,例如,给出一个小程序的流程图,它包括了一个执行,20,次的循环。,循环内有,5,条不同的路径,循环,20,次,则组合起来可能的不同执行路径数达,5,20,条。,假设对每一条路径进行测试需要,1,毫秒,一年工作,365,天,每天工作,24,小时,要想把所有路径测试完,需,3024,年。,循环,20,次,10,软件工程,9.3,白盒测试用例设计方法,逻辑覆盖,判定结构分析,循环结构分析,基本路径覆盖,11,软件工程,9.3.1,逻辑覆盖,逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。它属白盒测试。,语句覆盖,判定覆盖,条件覆盖,判定条件覆盖,条件组合覆盖,路径覆盖,介绍逻辑覆盖的方法时均以下页的图为例。,12,软件工程,(A1),and,(B=0),(A=2),or,(X1),X = X/A,X = X+1,T,T,F,F,a,b,d,c,e,13,软件工程,1.,语句覆盖,语句覆盖就是设计若干个测试用例,运行被测程序,使得,每一可执行语句至少执行一次,。,图中,正好所有的可执行语句都在,路径,ace,上,测试用例的设计格式如下,【,输入的,(A, B, X),,对应输出的,(A, B, X),】,为图例设计满足,语句覆盖,的测试用例是,:,Test1:,【(2, 0, 4),,,(2, 0, 3)】,覆盖,ace【P1】,。,“语句覆盖是最弱的逻辑覆盖准则” 。,如果第一个判 断,“,and,”,错为,“,or,”,,第二个判断,“,or,”,错为,“,and,”,,使用以上 测试用例,查不出问题。,因此,,使用语句覆盖,可能查不出判定中逻辑运算中出现的错误,。,(A1),and,(B=0),(A=2),or,(X1),X = X/A,X = X+1,T,T,F,F,a,b,d,c,e,14,软件工程,2.,判定覆盖,判定覆盖就是设计若干个测试用例,运行被测程序,使得程序中,每个判断的取真分支和取假分支至少经历一次,。,判定覆盖又称为,分支覆盖,。,对于图例,如果选择路径,P1,和,P2,,,就可得满足要求的测试用例。,Test1:,【(2, 0, 4),,,(2, 0, 3)】,覆盖,ace【P1】Test2:,【(1, 1, 1),,,(1, 1, 1)】,覆盖,abd【P2】,(A1),and,(B=0),(A=2),or,(X1),X = X/A,X = X+1,T,T,F,F,a,b,d,c,e,或者,Test1,:【(2, 1, 1),,,(2, 1, 2)】,覆盖,abe【P3】Test2,:【(3, 0, 3),,,(3, 0, 1)】,覆盖,acd【P4】,使用判定覆盖,有可能查不出在判定的条件中存在的错误。,例如,若把图例中第二个判定中的条件,X,1,错写成,X,1,,那么利用上面两组测试用例,仍能得到同样结果。,15,软件工程,3.,条件覆盖,条件覆盖:使得程序中,每个判断的每个条件的可能取值至少取得一次,。,(A1),and,(B=0),(A=2),or,(X1),X = X/A,X = X+1,T,T,F,F,a,b,d,c,e,测试用例,覆盖分支,条件取值,Test1:【(2, 0, 4),,,(2, 0, 3)】,P1(c, e),T1T2T3T4,Test2:【(1, 1, 1),,,(1, 1, 1)】 P,2(b, d),F1F2F3F4,对于第一个判断:条件,A,1,取真为,T1,,取假为,F1,;条件,B,0,取真为,T2,,取假为,F2,。,对于第二个判断:条件,A,2,取真为,T3,,取假为,F3,;条件,X,1,取真为,T4,,取假为,F4,。,测试用例,覆盖分支,条件取值,Test1:【(1, 0, 3),,,(1, 0, 4)】,P3(b, e),F1T2F3T4,Test2:【(2, 1, 1),,,(2, 1, 2)】 P,3(b, e),T1F2T3F4,为解决这一矛盾,需要对条件和分支兼顾,有必要考虑下面的,条件,判定覆盖,。,从结果来看,这一组测试用例,覆盖了所有条件的取值,但没有覆盖所有的分支。,16,软件工程,判定条件覆盖,:,判断中,每个条件的可能取值至少执行一次,,每个判断中的,每个分支至少执行一次,。,可取覆盖,P1,和,P2,的测试用例,覆盖所有分支和所有条件的取值。,4.,判定条件覆盖,真值表,X,Y,X and Y,动作,1,1,1,X,Y,都执行,1,0,0,X,Y,都执行,0,1,0,仅,X,执行,0,0,0,仅,X,执行,X,Y,X or Y,动作,1,1,1,仅,X,执行,1,0,0,仅,X,执行,0,1,0,X,Y,都执行,0,0,0,X,Y,都执行,先取覆盖,P1,和,P2,的测试用例,覆盖所有分支和所有条件的取值。再判断哪些条件取值执行不到,据此补充一个测试用例,测 试 用 例,条件取值,覆盖分支,执行条件,【(2, 0, 4), (2, 0, 3)】 T1T2T3T4 c, e T1T2T3,【(1, 1, 1), (1, 1, 1)】 F1F2F3F4 b, d F1F3F4,【(3, 1, 2), (3, 1, 3)】T1F2F3T4,b, e,T1,F2,F3,T4,第,3,个补充了前两个没有执行到的,T4,和,F2,。,(A1),and,(B=0),(A=2),or,(X1,),X = X/A,X = X+1,T,T,F,F,a,b,d,c,e,17,软件工程,5.,条件组合覆盖,条件组合覆盖就是设计足够的测试用例,运行被测程序,使得每个判断的,所有可能的条件取值组合至少执行一次,。,记,A,1, B,0,作,T,1,T,2,判定,1,的取真分支,A,1, B0,作,T,1,F,2,判定,1,的取假分支,A1, B,0,作,F,1,T,2,判定,1,的取假分支,A1, B0,作,F,1,F,2,判定,1,的取假分支,A,2, X,1,作,T,3,T,4,判定,2,的取真分支 ,A,2, X1,作,T,3,F,4,判定,2,的取真分支,A2, X,1,作,F,3,T,4,判定,2,的取真分支,A2, X1,作,F,3,F,4,判定,2,的取假分支,对于两个判定各,4,个条件取值组合,最多需要有,4,2,= 16,个测试用例,最少需要,4,个测试用例。,测 试 用 例,条件取值,覆盖组合,路径,【(2, 0, 4), (2, 0, 3)】 T,1,T,2,T,3,T,4, P1(c, e),【(2, 1, 1), (2, 1, 2)】 T,1,F,2,T,3,F,4, P3(b, e),【(1, 0, 3), (1, 0, 4)】 F,1,T,2,F,3,T,4, P3(b, e),【(1, 1, 1), (1, 1, 1)】 F,1,F,2,F,3,F,4, P2(b, d),(A1),and,(B=0),(A=2),or,(X1,),X = X/A,X = X+1,T,T,F,F,a,b,d,c,e,18,软件工程,6.,路径测试,路径测试就是设计足够的测试用例,,覆盖程序中所有可能的路径,。,测 试 用 例,通过路径,覆盖条件,执行条件,【(2, 0, 4), (2, 0, 3)】 P1(c, e) T,1,T,2,T,3,T,4,T,1,T,2,T,3,【(1, 1, 1), (1, 1, 1)】 P2(b, d) F,1,F,2,F,3,F,4,F,1,F,3,F,4,【(1, 1, 2), (1, 1, 3)】 P3(b, e) F,1,F,2,F,3,T,4,F,1,F,3,T,4,【(3, 0, 3), (3, 0, 1)】 P4(c, d) T,1,T,2,F,3,F,4,T,1,T,2,F,3,F,4,路径覆盖是最强的覆盖,但由此例知,,F,2,未执行。,(A1),and,(B=0),(A=2),or,(X1,),X = X/A,X = X+1,T,T,F,F,a,b,d,c,e,19,软件工程,9.3.2,判定结构分析,当程序中判定多于一个时,形成的分支结构可以分为两类:,嵌套型分支结构,和,连锁型分支结构,。,对于嵌套型分支结构,若有,n,个判定语句,则存在,n+1,条路径,需要,n+1,个测试用例;,对于连锁型分支结构, 若有,n,个判定语句,需要有,2,n,个测试用例,覆盖它的,2,n,条路径。,当,n,很大时,路径数成为天文数字,因此,就有覆盖率的问题。,嵌套型分支结构,连锁型分支结构,s1,s2,s3,s4,p1,p2,p3,s1,s2,s3,s4,s5,s6,p1,p2,p3,20,软件工程,为减少测试用例的数目,可采用实验设计法,抽取部分路径进行测试。,由于抽样服从均匀分布,因此,在假定各条路径的重要性相同,或暂不明确各条路径的重要性的情况下可以做到均匀抽样。,如果明确了各条路径的重要性,还可以采取加权的办法,筛选掉部分路径,再进行抽样。,21,软件工程,单重循环,嵌套循环,连锁循环,非结构循环,9.3.3,循环结构分析,循环分为,4,种不同类型:,简单循环,、,连锁循环,、,嵌套循环,和,非结构循环,。,22,软件工程,在数组,A1.n,中从第,i,个位置起选择最小值,用,k,记忆最小值的位置。,k = i;,for ( j = i+1; j = n; j+ ),if ( Aj Ak ),k = j;,单重循环情形,零次循环:从循环入口到出口,一次循环:检查循环初始值,二次循环:检查多次循环,m,次循环: 检查在多次循环,最大次数循环、比最大次数多一次、少一次的循环。,k = i ; j = i+1;,j = n?,AjAk?,k = j,j,+,f,d,c,a,b,e,测试用例选择,23,软件工程,嵌套循环情形,对,最内层循环做简单循环的全部测试,。所有其他层的循环变量置为最小值;,逐步外推,对其,外面一层循环进行测试,。测试时保持所有外层循环的循环变量取最小值,所有其他嵌套内层循环的循环变量取,“,典型,”,值。,反复进行,直到所有各层循环测试完毕。,对全部各层循环同时取最小循环次数,或者同时取最大循环次数。,连锁循环,如果各个循环,互相独立,,则可以用与简单循环相同的方法进行测试。,但如果几个循环不,是互相独立,的,则需要使用测试嵌套循环的办法来处理。,非结构循环,这一类循环应该使用结构化程序设计方法重新设计测试用例。,24,软件工程,9.3.4,基本路径测试,基本路径测试方法把覆盖的路径数压缩到一定限度内,,程序中的循环体最多只执行一次,。,设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次。,1.,程序的控制流图,顺序结构,IF,两分支,选择结构,while-do,先判断,重复结构,do-while,后判断,重复结构,switch,多分支,选择结构,25,软件工程,3,6,5,7,8,11,10,9,1,2,4,4,5,R,3,2,3,1,6,8,7,9,10,11,R,1,R,2,R,4,复杂性度量方法:,(1),控制流图的区域数,(,2,),V(G) =E N +2 =11-9+2=4,其中,,V(G),是图,G,中环路数,,E,是图中弧数,,N,是图中结点数,(,3,),V(G) =P+1 =3+1,P,是图,G,中判定结点数,26,软件工程,2.,程序环路复杂性,程序环路复杂性给出了,程序基本路径集中的独立路径条数,,这是确保程序中每个可执行语句至少执行一次所必需的测试用例数目的上界。,从控制流图来看,一条独立路径是,至少包含有一条在其他独立路径中从未有过的边,的路径。,例如,在控制流图中,一组独立的路径是,path1,:,1 - 11,path2,:,1 - 2 - 3 - 4 - 5 - 10 - 1 - 11,path3,:,1 - 2 - 3 - 6 - 8 - 9 - 10 - 1 - 11,path4,:,1 - 2 - 3 - 6 - 7 - 9 - 10 - 1 - 11,4,5,R,3,2,3,1,6,8,7,9,10,11,R,1,R,2,R,4,路径,path1,,,path2,,,path3,,,path4,组成了控制流图的一个基本路径集。,27,软件工程,确保基本路径集中的每一条路径的执行,。,3.,导出测试用例,举例:选择排序(,C/C+,描述),1,2,3,4,5,6,7,8,9,i=0;,in-1,k=i; j=i+1;,jn,VjVk,k=j;,j=j+1;,return,ik,i=i+1;,ViVk,基本路径集,path1: 1-3,path2: 1-2-5-8 ,path3: 1-2-5-9 ,path4: 1-2-4-6,path5: 1-2-4-7 ,测试用例,Path1:,1-3,取,n = 1,Path2:,1-2-5-8-3,取,n = 2,预期结果:路径,5-8-3,不可到达,Path3:,1-2-5-9-3,取,n = 2,预期结果:路径,5-9-3,不可到达,path4:,1-2-4-6-5-8-3,取,n = 2, v0 = 2, v1 = 1,预期结果:,k = 1, v0 = 1, v1 = 2,path4:,1-2-4-6-5-9-3,取,n = 2,,,v0 = 2, v1 = 1,预期结果:,k = 1,路径,9-3,不可到达,path5:,1-2-4-7-5-8-3,取,n = 2,,,v0 = 2, v1 = 1,预期结果:,k = 0,路径,8-3,不可到达,path5:,1-2-4-7-5-9-3,取,n = 2,,,v0 = 2, v1 = 1,预期结果:,k = 0, v0 = 1, v1 = 2,n,28,软件工程,9.4,黑盒测试用例设计方法,等价类划分,边界值分析,判定表法,因果图法,规范导出法,内部边界值法,错误推测法,接口测试,使用各种测试方法的综合策略,29,软件工程,9.4.1,等价类划分,等价类划分方法,把所有可能的输入数据,,,划分成若干部分,,然后,从每一部分中选取少数代表性的数据做为测试用例,。,等价类划分方法步骤:,1,、,划分等价类,(列出等价类表),2,、,选取测试用例,划分等价类,等价类是指在某个输入域的子集合中,,各个输入数据对于揭露程序中的错误都是等效的。,测试某等价类的代表值就等价于对这一类其他值的测试。等价类的划分有两种不同的情况:,有效等价类,:是对于程序规格说明来说,是合理的,有意义的输入数据构成的集合。,无效等价类,:是指对于程序规格说明来说,是不合理的,无意义的输入数据构成的集合。,在设计测试用例时,要同时考虑,有效等价类和无效等价类,的设计。,30,软件工程,划分等价类的原则。,(1),如果输入条件规定了取值范围,或值的个数,则可确立一个,有效等价类,和,两个无效等价类。,如,在程序规格说明中对输入条件有一句话:,“,项数可以从,1,到,999 ”,则有效等价类是“,1,项数,999,”,两个无效等价类是“,项数,1,”,或“,项数,999,”,。在数轴上表示成,:,无效等价类,有效等价类,无效等价类,1,999,(2),如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,这时可确立一个有效等价类和一个无效等价类。,例如,在,Pascal,语言中对变量标识符规定为“以字母打头的,串”。那么所有以字母打头的构成有效等价类,而不在此集合内(不以字母打头)的归于无效等价类。,31,软件工程,如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类。,为每一个输入值确立一个有效等价类,和一个无效等价类。,例如,在教师上岗方案中规定对教授、副教授、讲师和助教分别计算分数,做相应的处理。,因此可以确定,4,个有效等价类为教授、副教 授、讲师和助教,一个无效等价类,它是所有不符合以上身分的人员的输入值的集合。,如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。,例如,,Pascal,语言规定 “一个语句必须以分号,;,结束”。这时可以确定一个有效等价类,“以,;,结束”,,若干个无效等价类,“以,:,结束”,、,“以,结束”,、,“以 结束”,、,“以,LF,结束”。,32,软件工程,确立测试用例,在确立了等价类之后,建立等价类表,列出所有划分出的等价类。,再从划分出的等价类中按以下原则选择测试用例:,为每一个等价类规定一个唯一编号;,设计一个新的测试用例,使其,尽可能多地覆盖尚未被覆盖的,有效等价类,,重复这一步,直到所有的有效等价类都被覆盖为止;,设计一个新的测试用例,使其,仅覆盖一个尚未被覆盖的,无效等价类,,重复这一步,直到所有的无效等价类都被覆盖为止。,输入条件,有效等价类,无效等价类,33,软件工程,用等价类划分法设计测试用例的实例,在某一,Pascal,语言版本中规定:,“,标识符是由字母开头,后跟字母或数字的任意组合构成。编译器能够区分的有效字符数为,8,个,最大字符数为,80,个。,”,并且规定:,“,标识符必须先说明,再使用。,”“,在同一说明语句中,标识符至少必须有一个,。,”,用等价类划分方法,建立输入等价类表,:,输入条件,有效等价类,无效等价类,说明语句中标识符个数,1,个,(1),多个,(2),0,个,(3),标识符中字符数,1,8,个,(4),0,个,(5), 8,个,(6), 80,个,(7),标识符组成,字母,(8),数字,(9),非,字母数字字符,(10),保留字,(11),标识符第一个字符,字母,(12),非字母,(13),标识符使用,先说明后使用,(14),未说明就使用,(15),34,软件工程,VAR,x,,,T1234567,:,REAL,;,BEGIN,x,:= 3.414,;,T1234567 := 2.732,;,.,(1), (2), (4), (8), (9), (12), (14),VAR,:,REAL,;,(3),VAR,x,,:,REAL;,(5),VAR T12345678,:,REAL,;,(6),VAR T12345.,:,REAL,;,(7),多于,80,个字符,输入条件,有效等价类,无效等价类,说明语句中标识符个数,1,个,(1),多个,(2),0,个,(3),标识符中字符数,1,8,个,(4),0,个,(5), 8,个,(6), 80,个,(7),标识符组成,字母,(8),数字,(9),非,字母数字字符,(10),保留字,(11),标识符第一个字符,字母,(12),非字母,(13),标识符使用,先说明后使用,(14),未说明就使用,(15),VAR T$,:,CHAR,;,(10),VAR GOTO,:,INTEGER,;,(11),VAR 2T,:,REAL,;,(13),VAR PAR,:,REAL,;,(15),BEGIN . PAP := SIN (3.14 * 0.8) / 6,;,下面选取了,9,个测试用例,它们覆盖了所有的等价类。,35,软件工程,例题:对用户输入的分数进行评级,其中,90,到,100,为,A,,,80-89,为,B,,,70-79,为,C,,,60-69,为,D,,,60,以下为,E,。输入分数要求必须是正整数或,0,。根据分析得出以下等价类划分列。,输入条件,有效等价类,无效等价类,分数,0-59,60-69,70-79,80-89,90-100,空,负数,大于,100,的数,小数,含字母的字符串,36,软件工程,9.4.2,边界值分析,边界值分析也是黑盒测试方法,是对等价类划分方法的补充。,经验得知,,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部,。,因此针对各种边界情况设计测试用例,,可以查出更多的错误,。,例如,有一段小程序,输入三个整数,a,、,b,和,c,,判断它们能否构成三角形。只有在,a,0,、,b,0,、,c,0,、,a,+,b,c,、,a,+,c,b,、,b,+,c,a,时才能构成三角形。但如果把,六个不等式中的任一个大于号“”错写成大于等于号“”,,那就不能构成三角形。,问题恰出现在容易被疏忽的边界附近。边界是指,输入等价类时,,稍高于其边界值及稍低于其边界值的一些特定情况。,使用边界值分析方法设计测试用例,首先应确定边界情况。通常应当针对输入等价类的边界,选取,正好等于,,,刚刚大于,,或,刚刚小于边界,的值做为测试数据,而不是选取等价类中的典型值或任意值做为测试数据。,37,软件工程,如何确定边界?通常的边界检查原则:,数字:最大最小刚大于最大刚小于最小、,字符串:,位置(首位末位首位前末位后),长度(零 很大 超出缓冲区),取值范围(刚到达边界 刚超出边界),其他如质量、大小、速度、方位、尺寸、空间等都可按照,最轻 最重,最大最小,,,最快最慢、最高最低、最短最长、空满,等确定边界。,38,软件工程,使用边界值分析,最重要的是确定正确的边界值域。对于输入输出等价类,选取,正好等于,、,刚刚大于,和,刚刚小于,边界值的数据作为测试数据。,例如,判断三角形问题,问题的提法是:程序接受,3,个整数,a,、,b,和,c,作为输入,用做三角形的边。整数,a,、,b,和,c,必须满足以下条件:,C1,1,a,200 C2,1,b,200 C3,1,c,200,C4,a,b,+,c,C5,b,a,+,c,C6,c,a,+,b,按照构成三角形的条件,C1,、,C2,和,C3,,整数,a,、,b,、,c,的边界值为,1,和,200,,稍超出边界的值为,0,和,201,。,C4,、,C5,和,C6,的边界值分别是,b,+,c,a,+1,、,a,+,c,b,+1,和,b,+,c,a,+1,。,39,软件工程,测 试 用 例,a,b,c,a,b,c,达到最小边界,1,1,1,a,b,c,达到最大边界,200,200,200,a,超出最小边界,0,1,1,b,超出最小边界,1,0,1,c,超出最小边界,1,1,0,a,超出最大边界,201,200,200,b,超出最大边界,200,201,200,c,超出最大边界,200,200,201,b,c,a,1,到达边界,4,2,3,a,c,b,1,到达边界,2,4,3,b,c,a,1,到达边界,2,3,4,b,c,a,小于边界,3,1,2,a,c,b,小于边界,1,3,2,b,a,c,小于边界,1,2,3,C1,1,a,200 C2,1,b,200 C3,1,c,200,C4,a,b,+,c,C5,b,a,+,c,C6,c,a,+,b,40,软件工程,9.4.3,判定表法,判定表是一种用来表示和分析复杂逻辑关系的工具,最适合描述在多个逻辑条件取值的组合所构成的复杂情况下,分别要执行哪些不同的动作。,例如,下表给出了一个用于三角形问题的判定表的例子。在表中,c,i,是条件,,a,i,是判定结果,由(,c,i,a,i,)构成的规则可视为测试用例。,在某些条件取值中出现了“,”,,表示这个条件在相应规则中被忽略。,41,软件工程,规 则,1,2,3,4,5,6,7,8,9,c,1,:,a,b,c,构成三角形?,F,T,T,T,T,T,T,T,T,c,2,:,a,=,b,?,T,T,T,T,F,F,F,F,c,3,:,a,=,c,?,T,T,F,F,T,T,F,F,c,4,:,b,=,c,?,T,F,T,F,T,F,T,F,a,1,:,非三角形,Y,a,2,:,一般三角形,Y,a,3,:,等腰三角形,Y,Y,Y,a,4,:,等边三角形,Y,a,5,:,不可能,Y,Y,Y,三角形问题的判定表,42,软件工程,规 则,1,2,3,4,5,6,7,8,9,10,11,c,1,:,a,b,+,c,?,F,T,T,T,T,T,T,T,T,T,T,c,2,:,b,a,+,c,?,F,T,T,T,T,T,T,T,T,T,c,3,:,c,a,+,b,?,F,T,T,T,T,T,T,T,T,c,4,:,a,=,b,?,T,T,T,T,F,F,F,F,c,5,:,a,=,c,?,T,T,F,F,T,T,F,F,c,6,:,b,=,c,?,T,F,T,F,T,F,T,F,a,1,:,非三角形,Y,Y,Y,a,2,:,一般三角形,Y,a,3,:,等腰三角形,Y,Y,Y,a,4,:,等边三角形,Y,a,5,:,不可能,Y,Y,Y,细化后的判定表,43,软件工程,三角形问题的测试用例,测试用例号,a,b,c,预 期 输 出,备注,1,4,1,2,非三角形,c,1,:,b,+,c,a,2,1,4,2,非三角形,c,2,:,a,+,c,b,3,1,2,4,非三角形,c,3,:,a,+,b,c,4,2,2,2,等边三角形,c,4,:,a,=,b,=,c,5,2,2,3,等腰三角形,c,7,:,a,=,b,c,6,2,3,2,等腰三角形,c,9,:,a,=,c,b,7,3,2,2,等腰三角形,c,10,:,b,=,c,a,8,3,4,5,一般三角形,c,11,:,a,b,c,9,2,1,1,非三角形,c,12,:,a,=,b,+,c,10,1,2,1,非三角形,c,13,:,b,=,a,+,c,11,1,1,2,非三角形,c,14,:,c,=,a,+,b,44,软件工程,9.4.4,因果图法,因果图的适用范围,如果在测试时必须考虑,输入条件的各种组合,情况时,可使用一种适合于描述,多种条件的组合,相应产生多个动作,的形式来设计测试用例,这就需要利用因果图。,因果图方法最终生成的就是,判定表,。它适合于检查程序输入条件的各种组合情况。,用因果图生成测试用例的基本步骤,分析软件规格说明中,哪些是,原因,(即输入条件或其等价类),哪些是,结果,(即输出条件),并给每个原因和结果赋予一个标识符。,分析软件规格说明的语义,找出,原因与结果之间对应的关系,。根据这些关系,画出因果图。,由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号,标明约束或限制条件,。,把把因果图转换成判定表。,判定表的每一列拿出来作为依据,设计测试用例。,45,软件工程,在因果图中出现的基本符号,通常在因果图中用,C,i,表示原因,用,E,i,表示结果,各结点表示状态,,“,0,”,表示状态不出现,,“,1,”,表示状态出现。,主要的原因和结果之间的关系有,:,a),恒等,b),非,C,1,E,1,C,1,E,1,c),或,C,1,E,1,C,2,d),与,C,1,E,1,C,2,为了表示原因与原因之间,结果与结果之间可能存在的约束条件,在因果图中可以附加一些表示约束条件的符号。,a,b,E,a,b,I,(1) E(,互斥,) (2) I(,包含,) (3) O(,唯一,) (4) R(,要求,) (5) M(,屏蔽,),a,b,O,a,b,R,a,b,M,46,软件工程,例如,有一个处理单价为,5,元钱的饮料的自动售货机软件测试用例的设计。其规格说明如下:,若投入,5,元钱或,10,元钱的硬币,押下,橙汁,或,啤酒,的按钮,则相应的饮料就送出来。,若售货机没有零钱找,则一个显示,零钱找完,的红灯亮。这时,在投入,1 0,元钱并押下按钮后,饮料不送出来而且,10,元钱也退出来;,若有零钱找,则显示,零钱找完,的红灯灭,在送出饮料的同时退还,5,元硬币。,1),分析这一段说明,列出原因和结果,结果:,21.,售货机,零钱找完,灯亮,22.,退还,10,元硬币,23.,退还,5,元,硬币,24.,送出橙汁饮料,25.,送出啤酒饮料,2),画出因果图。,所有原因结点列在左边,所有结果结点列在右边。建立中间结点,表示中间状态,:,11.,投入,10,元硬币且押下饮料按钮,12.,押下,橙汁,或,啤酒,的按钮,13.,应找,5,元,零钱且售货机有零钱找,14.,钱已付清,3),由于,2,与,3,,,4,与,5,不能同时发生,分别加上,约束条件,E,。,4),因果图,转换成判定表,。,5),在判定表中,选择测试用例,。,原因,:,1.,售货机有零钱找,2.,投入,10,元硬币,3.,投入,5,元,硬币,4.,押下橙汁按钮,5.,押下啤酒按钮,47,软件工程,22,售货机有零钱找,售货机“零钱找完”,的灯亮,投入,10,元,退还,10,元,找回,5,元,投入,5,元,按下,橙汁按钮,送出橙汁饮料,按下,啤酒按钮,送出啤酒饮料,按下,按钮,钱付清,可找,5,元,该找,5,元,2,3,5,4,23,11,25,24,21,12,14,1,13,E,E,48,软件工程,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,条,2,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,3,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,件,4,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,5,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,中,11,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,间,12,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,条,13,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,件,14,1,1,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,21,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,结,22,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,23,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,果,24,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,25,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,测,用,试例,49,软件工程,9.4.5-1,规范(规格)导出法,规范导出法,是根据规格说明的描述来设计测试用例。,每一个测试用例用来测试一个或多个规格说明的陈述语句。,例如,考虑一个计算平方根的函数的规格说明:,输入,:实数(浮点数),输出,:实数(浮点数),规格,:当输入一个,0,或者比,0,大的数时,返回其正平方根;,当输入一个小于,0,的数时,显示错误信息,“,平方根非法,输入值小于,0,”,,并返回,0,;库函数,Print_Line,可以用来输出错误信息。,测试用例,1,:输入,4,,输出,2,。对应规范中的第一句陈述(当输入一个,0,或比,0,大的数时,返回其正的平方根)。,测试用例,2,:输入,-,1,,输出,0,。对应规范中的第二、第三句陈述,50,软件工程,9.4.5-2,内部边界值测试法,在许多情况下,可以从单元的功能规格说明中导出等价类和边界值测试。,但一个单元也可能有内部边界,它们只能从单元的结构化规格说明中找到。,例如,考虑用伪代码描述的用连续迭代法求平方根函数的一个片段:,Calculate first approximation,LOOP,Calculate error,EXIT_LOOP WHEN error,desired accuracyAdjust approximation,END_LOOP,RETURN,my_answer,对该内部边界值分析包括,3,个需要测试的条件:,测试用例,1,:误差恰好大于期望精度。,测试用例,2,:误差等于期望精度。,测试用例,3,:误差恰好小于期望精度。,内部边界值测试可以用来发现一些内部错误。如误把,“,”,写做,“,= 0,,不变式边界为,Stack.top,= 0,,违
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!