版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1测试用例设计概述测试用例的定义测试用例的重要性好测试用例的特点设计测试用例的基本准则设计测试用例的着眼点测试用例的编写标准测试用例设计的误区2测试用例设计概述什么是软件测试用例(1)测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。(2)测试用例是执行的最小实体。3测试用例设计概述测试用例的重要性(待删)有效性可复用性易组织性可评估性可管理性4测试用例设计概述好测试用例的特点1.完整的完整性是对测试用例最基本的要求,尤其是一些基本功能项上,如果有遗漏,那将是不可原谅的。完整性还体现在临界测试、压力测试、性能测试等方面,这方面测试用例也要能够涉及到。2.准确测试者按照测试用例的输入一步步测试完成后,要能够根据测试用例描述的输出得出正确的结论,不能出现模糊不清的语言。3.清晰、简洁好的测试用例描述清晰,每一步都应该有响应的作用,有很强的针对性,不应该出现一些冗繁无用的操作步骤。测试用例不应该太简单,也不能够太过复杂,最大操作步骤最好控制在15步之内。5测试用例设计概述5.可维护性由于软件开发过程中需求变更等原因的影响,常常需要对测试用例进行修改、增加、删除等,以便测试用例符合相应测试要求。测试用例应具备这方面的功能。6.适当性测试例应该适合特定的测试环境以及符合整个团队的测试水平,如纯英语环境下的测试用例最好使用英文编写。7.可复用性要求不同测试者在同样测试环境下使用同样测试用例都能得出相同结论。6测试用例设计概述8.其他如可追朔性、可移植性也是对编写测试用例的一个要求。另外,好的测试用例也是最有可能抓住错误的;不重复、多余的;是一组相似测试用例中最有效的;7测试用例设计概述设计测试用例的基本准则测试用例的代表性能够代表并覆盖各种合理的和不合理的、合法的和非法的、边界的和越界的以及极限的输入数据、操作和环境设置等。测试结果的可判定性即测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果。测试结果的可再现性即对同样的测试用例,系统的执行结果应当是相同的。8测试用例设计概述设计测试用例的着眼点根据产品规格,测试基本功能;考虑设计一般用户(非专业人员)的使用方案;考虑设计稀有或特殊的使用方案;与系统其他组成部分的配合(如FAX和上网可能要用到MODEM,测试中考虑对设备的共享);考虑特殊情况(如内存和硬件的冲突等);设计极端情况(如内存泄漏、破坏性测试等);好的测试用例集能花费最小的代价(人力、物力、财力、时间)做最好的测试。9测试用例设计概述测试用例的编写标准在ANSI/IEEE829-1983标准中列出了和测试设计相关的测试用例编写规范和模板。标准模板中主要元素如下:标识符——惟一标识每一个测试用例测试项——准确的描述所需要测试的项及其特征测试环境要求——表征执行该测试用例需要的测试环境输入标准——执行测试用例的输入需求(这些输入可能包括数据、文件或者操作)输出标准——按照指定的环境和输入标准得到的期望输出结果测试用例之间的关联——标识该测试用例与其它的测试(或其它测试用例)之间的依赖关系10测试用例设计概述测试用例示例:对Windows记事本程序进行测试,选取其中的一个测试项——文件菜单栏的测试:测试对象——记事本程序文件菜单栏(测试用例标识10000,下同)所包含的子测试用例描述如下:|------------文件/新建(1001)|------------文件/打开(1002)|------------文件/保存(1003)|------------文件/另存为(1004)|------------文件/页面设置(1005)|------------文件/打印(1006)|------------文件/退出(1007)选取其中的一个子测试用例——文件/退出(1007)作为例子,测试用例如下表所示。11字段名称描
述标识符1007测试项记事本程序,“文件”菜单栏中的“文件”|“退出”命令的功能测试测试环境要求Windows2000Professional中文版输入标准(1)打开记事本程序,不输入任何字符,单击“文件”|“退出”命令(2)打开记事本程序,输入一些字符,不保存文件,单击“文件”|“退出”命令(3)打开记事本程序,输入一些字符,保存文件,单击“文件”|“退出”命令(4)打开一个记事本文件(*.txt),不做任何修改,单击“文件”|“退出”命令(5)打开一个记事本文件,修改后不保存,单击“文件”|“退出”命令输出标准(1)记事本未做修改,单击“文件”|“退出”命令,能正确地退出应用程序,无提示信息(2)记事本做修改未保存或者另存,单击“文件”|“退出”命令,会提示“未定标题文件的文字已经改变,想保存文件吗?”单击“是”,Windows将打开“保存”/“另存为”对话框,单击“否”,文件将不被保存并退出记事本程序,单击“取消”将返回记事本窗口测试用例间的关联12测试用例设计概述下表是另一个测试用例示例(登录功能测试)该测试用例并未涵盖所有的非法输入,如非法输入中可能会有“user=*,pw=*”的组合,对回车的默认操作,空格输入,对输入上溢的处理的处理(可能会跳过身份验证)等等。如果你有兴趣,至少可以再补充5-10条左右的输入组合(当然,如果步骤超过15步,用例的易操作性就降低,可以再创建一个测试用例)。13项目/软件技术出口合同网络申领系统
(企业端)程序版本
1.0.25功能模块名
Login编制人
xxx用例编号-TC-TEP_Login_1编制时间
2002.10.12相关的用例
无
功能特性
用户身份验证
测试目的
验证是否输入合法的信息,允许合法登陆,阻止非法登陆
预置条件
无
特殊规程说明
如数据库访问权限
参考信息
需求说明中关于“登陆”的说明测试数据
用户名=yiyh密码=114操作步骤
操作描述
数
据期望结果
实际结果
测试状态1输入用户名称,按“登陆”按钮。用户名=yiyh,密码为空显示警告信息“请输入用户名和密码!”
2输入密码,按“登陆”按钮。用户名为空,密码=1显示警告信息“请输入用户名和密码!”
3输入用户名和密码,按“登陆”按钮。用户名=yiyh,密码=2显示警告信息“请输入用户名和密码!”
4输入用户名和密码,按“登陆”按钮。用户名=xxx,密码=1显示警告信息“请输入用户名和密码!”
5输入用户名和密码,按“登陆”按钮。用户名=xxx,密码=2显示警告信息“请输入用户名和密码!”
6输入用户名和密码,按“登陆”按钮。用户名=空,密码=空显示警告信息“请输入用户名和密码!”
157输入用户名和密码,按“登陆”按钮。用户名=yiyh,密码=1进入系统页面。
8输入用户名和密码,按“登陆”按钮。用户名=Admin,密码=admin进入系统维护页面。
9输入用户名和密码,按“登陆”按钮。用户名=yiyh',密码=1显示警告信息“请输入用户名和密码!”
10输入用户名和密码,按“登陆”按钮。用户名=yiyh,密码=1'显示警告信息“请输入用户名和密码!”
11输入用户名和密码,按“重置”按钮。用户名=yiyh,密码=1清空输入信息
测试人员
开发人员
16测试用例设计概述测试用例设计的误区能发现到目前为止没有发现的缺陷的用例是好的用例作为测试实施依据的测试用例,应当作一个集合来认识,必须要能完整覆盖测试需求,而不应该针对单个的测试用例去评判好坏。测试用例应该详细记录所有的操作信息,使一个没有接触过系统的人员也能进行测试测试用例维护费用太高,测试资源难保证测试用例设计是一劳永逸的事情测试用例是动态的,一旦测试环境、需求、设计、实现发生了变化,测试用例都需要相应发生变化17测试用例设计概述测试用例不应该包含实际的数据测试用例是“一组输入、执行条件、预期结果”、毫无疑问地应该包括清晰的输入数据和预期输出,没有测试数据的用例最多只具有指导性的意义,不具有可执行性。当然,测试用例中包含输入数据会带来维护、与测试环境同步之类的问题。测试用例中不需要明显的验证手段“预期结果”的含义应不只是程序的可见行为。例如,对一个订货系统,输入订货数据,点击“确定”按钮后,系统提示“订货成功”,这样是不是一个完整的用例呢?是不是系统输出的“订货成功”就应该作为我们唯一的验证手段呢?显然不是。订货是否成功还需要查看相应的数据记录是否更新,因此,在这样的一个用例中,还应该包含对测试结果的显式的验证手段:在数据库中执行查询语句进行查询,看查询结果是否与预期的一致。黑盒测试
第四章19本章内容●三个被测程序●等价类划分测试●
边界值分析●决策表测试●其它黑盒测试方法20本章重点●掌握等价类划分测试方法●掌握边界值分析方法●
掌握决策表测试方法●
了解因果图测试方法黑盒测试是从软件的外部对软件实施测试,也常形容为闭着眼睛测试。在实践中,应针对软件开发项目的具体特点,选择适当的测试方法,有效地解决软件开发中的测试问题。21输入输出4.1三个被测程序在第四章和第五章,将采用三个例子说明各种单元测试方法。这三个例子是:三角形问题;NextDate函数——逻辑比较复杂;雇佣金问题——有代表性;这三个例子合在一起,足可以说明软件测试人员在单元级别上可能会遇到的大多数问题。4.1.1三角形问题
三角形问题是软件测试文献中使用最广泛的一个例子。
三角形问题:输入三个整数a、b和c分别作为三角形的三条边,程序判断由这三条边构成的三角形类型是:等边三角形、等腰三角形、一般三角形或非三角形(不能构成一个三角)。三角形问题之所以复杂,是因为输入与输出之间的关系比较复杂。三角形问题可以更详细地描述为:三角形问题:输入三个整数a、b和c分别作为三角形的三条边,要求a、b和c必须满足以下条件:Con1.1≤a≤100Con4.a<b+cCon2.1≤b≤100Con5.b<a+cCon3.1≤c≤100Con6.c<a+b如果a、b和c满足Con1、Con2和Con3,则输出为四种情况之一:1).如果不满足条件Con4、Con5和Con6中有一个,则程序输出为“非三角形”。2).如果三条边相等,则程序输出为“等边三角形”。3).如果恰好有两条边相等,则程序输出为“等腰三角形”。4).如果三条边都不相等,则程序输出为“一般三角形”。
4.1.2NextDate函数
NextDate函数是一个有三个变量month(月份)、day(日期)和year(年)的函数。输出为输入日期后一天的日期。例如,如果输入为:2012年10月12日,则NextDate函数的输出为:2012年10月13日。
要求输入变量month、day和year都是整数值,并且满足以下条件:
Con1.
1≤month≤12Con2.
1≤day≤31
Con3.
1912≤year≤2050NextDate函数规格说明可以更具体一些:包括对day、month和year的无效输入值的响应定义,对无效逻辑组合进行定义等。例如对任意年的2月31日的响应。如果Con1,Con2或Con3中任何一个条件失效,则NextDate都会产生一个输出,指明相应的变量超出了取值范围。例如,“month值不在1~12范围内”。存在大量的无效day-month-year的组合。NextDate函数中复杂性来源:一是所讨论输人域的复杂性,一是确定闰年的规则。一年有365.2422天,因此,闰年被用来解决“额外天”的问题。4.1.3雇佣金问题
第三个例子是一个典型的商务计算例子,包含了计算和决策,因此引出了许多有意思的测试问题。
前亚利桑那州境内的一位步枪销售商销售密苏里州制造的步枪机(lock)、枪托(stock)和枪管(barrel)。枪机卖45美圆、枪托卖30美圆,枪管25美圆。销售商每月至少要售出一支完整的步枪,制造商的生产限额可提供大多数销售商一个月内销售70个枪机、80个枪托和90个枪管。销售商每访问一个镇之后,都给密苏里州步枪制造商发封电报,说明那个镇出售的枪机、枪托和枪管数量。月末,销售商发出-1个枪机被售出,表明一个月结束,这样步枪制造商就知道当月的销售情况,并计算销售商的雇佣金。销售商的雇佣金计算如下:销售额不到(含)1000美元的部分为10%,1000(不含)~1800(含)美元的部分为15%,超过1800美元的部分为20%。雇佣金程序生成按月份的销售报告,汇总售出的枪机、枪托和枪管总数,销售商的总销售额以及雇佣金。这个问题可以分为三个不同的部分:1)输人数据部分,用来处理输入数据有效性;2)销售额计算部分;
3)雇佣金计算部分。
4.1.3雇佣金问题4.2等价类划分测试
等价类划分是一种典型的黑盒测试方法,该方法完全不考虑程序的内部结构,只根据对软件的要求和说明,即需求规格说明书,把程序输入域划分成若干部分,然后从每个部分中选取少数代表性数据为作测试输入。使用等价类划分方法设计测试用例,必须在分析需求规格说明的基础上划分等价类。4.2.1等价类划分
等价类划分把程序的输入域划分成若干个互不相交的子集——等价类。所谓等价类是指输入域的某个集合,等价类的并便是整个输入域。这对于测试有两个非常重要的意义:表示整个输入域提供了一种形式的完备性,而互不相交则可保证一种形式的无冗余性。4.2.1等价类划分
等价类由等价关系决定。因此等价类中的元素有一些共同的特点:如果用等价类中的一个元素作为测试数据进行测试不能发现程序中的故障,那么使用集合中的其它元素进行测试也不可能发现程序故障。
对揭露程序中的故障来说,等价类中的每个元素是等效的。等价类划分测试的实现分二步进行,一是确定等价类,二是确定测试用例。一、划分等价类
软件不能都只接收有效的、合理的数据,还要经受意外的考验,即接受无效的或不合理的数据,这样获得的软件才能具有较高的可靠性。确定等价类,是使用等价类测试方法的一个重要问题。
4.2.1等价类划分●有效等价类:
有效等价类是指对程序规格说明,是有意义的,合理的输人数据所构成的集合。
利用有效等价类,可以检验程序是否实现了规格说明预先规定的功能和性能。
在具体问题中,有效等价类可以是一个,也可以是多个。在考虑等价类时,应注意区别有效等价类和无效等价类。4.2.1等价类划分●无效等价类:
无效等价类是指对程序规格说明,是不合理或无意义的输入数据所构成的集合。
利用无效等价类,可以检查程序功能和性能的实现是否有不符合规格说明要求的地方。对于具体的问题,无效等价类至少应有一个,也可能有多个。
4.2.1等价类划分二、设计测试用例
在设计测试用例时,应同时考虑有效等价类和无效等价类测试用例的设计。
希望用仅可能少的测试用例,覆盖所有的有效等价类。但对每一个无效等价类,设计一个测试用例来覆盖它。4.2.1等价类划分根据已列出的等价类表,按以下步骤确定测试用例:
1)为每个等价类规定一个唯一的编号。
2)
设计一个新的测试用例,尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到测试用例覆盖了所有的有效等价类。
3)
设计一个新的测试用例,使其覆盖并且只覆盖一个还没有被覆盖的无效等价类。重复这一步,直至测试用例覆盖了所有的无效等价类。
4.2.1等价类划分
若用一个测试用例检测多个无效等价类,某些无效等价类可能永远不会被检测到。
因为第一个测试可能会屏蔽或终止其他无效等价类的测试执行。4.2.1等价类划分等价类测试也遵循边界值测试的两个决定因素:
健壮性和单/多故障假设。
弱健壮等价类测试——传统等价类测试形式,关注无效数据值。弱/强
等价类测试健壮/标准等价类测试4.2.2常见的等价类测试形式
为便于理解,我们也以一个有两个输入变量x1和x2的程序F为例,说明一般等价类测试和健壮等价类测试。
有效等价类因此,变量x1和x2,的无效值分别为:
x1<a,x1>d
和x2<e,x2>g无效等价类4.2.2常见的等价类测试形式假设:输入变量x1和x2在下列范围内取值:a≤x1≤d,区间[a,b],(b,c),[c,d]e≤x2≤g,区间[e,f],[f,g]其中方括号和圆括号分别表示闭区间和开区间的端点1.标准等价类测试
标准等价类测试不考虑无效数据值。测试用例使用每个等价类中的一个值。4.2.2常见的等价类测试形式x1有效等价类[a,b],(b,c),[c,d]x2有效等价类[e,f],[f,g]abcdefgx1x2图4.1标准等价类测试用例测试用例的数量和含最大子集数目的等价类中的数目相同。
4.2.2常见的等价类测试形式2.健壮等价类测试健壮源于这种等价类测试考虑了无效等价类。对有效输入来说,测试用例从每个有效等价类中只取一个值(和标准等价类测试一样)。注意这些测试用例里的每个输入都是有效的。2.对无效输入来说,一个测试用例有一个无效值,其它值都取有效值。4.2.2常见的等价类测试形式x1有效等价类[a,b],(b,c),[c,d]x2有效等价类[e,f],[f,g]
x1无效等价类
x1<a,x1>dx2无效等价类
x2<e,x2>g测试用例的数量3+2*2=7。abcdefgx1x2图4.2健壮性等价类测试用例4.2.2常见的等价类测试形式
健壮等价类测试有两个问题:1)规格说明常常没有定义无效测试用例所预期的输出是什么?2)强类型语言没有必要考虑无效输入。测试人员需要花大量时间来定义这些测试用例的输出。弱健壮等价类测试是FORTRAN和COBOL这样的语言占统治地位的产物。事实上,正是由于经常出现输入无效值这样的错误,才导致了强类型语言的出现。4.2.2常见的等价类测试形式1.三角形问题的等价类测试用例(1)传统等价类划分测试用例设计
在三角形问题中,输入条件要求:
4.2.3等价类划分测试举例
●整数;●三个数;●取值在1到100之间4.2.3等价类划分测试举例
仔细分析三角形问题,可得出其等价类表。表4-2三角形问题的等价类1
输入三个整数有效等价类号码无效等价类号码整数1一边为非整数二边为非整数三边均为非整数456三个数2只有一条边只有二条边多余三条边7893一边为零二边为零三边为零101112一边<零二边<零三边<零131415一边>100二边>100三边>1001617184.2.3等价类划分测试举例
覆盖无效等价类的测试用例见表4-3所示。表4-3三角形问题的无效等价类测试用例abc覆盖的等价类abc覆盖的等价类1.5,4,540,0,0123.5,2.5,55-3,4,6132.5,4.5,5.562,-7,-51437-3,-5,-7154,58101,4,8162,3,4,593,101,101173,0,810101,101,101180,6,011(2)标准和健壮等价类划分测试用例设计三角形问题有四种可能输出:非三角形,一般三角形,等腰三角形和等边三角形。利用这些信息来确定输出(值域)等价类。
R1={<a,b,c>:边为a,b,c的等边三角形}R2={<a,b,c>:边为a,b,c的等腰三角形}R3={<a,b,c>:边为a,b,c的一般三角形}R4={<a,b,c>:边a,b,c不能形成三角形}4.2.3等价类划分测试举例
四个标准等价类测试用例是:
测试用例abc预期输出Test1Test2Test3Test4523452415352等边三角形等腰三角形一般三角形非三角形4.2.3等价类划分测试举例
考虑a,b,c的无效值产生了下面7个健壮等价类测试用例,如下表所示。表4-5三角形问题的7个健壮等价类测试用例
测试用例abc预期输出Test1Test2Test3Test4Test5Test6Test73-1551015545-1551015555-155101一般三角形a值不在允许的范围内b值不在允许的范围内c值不在允许的范围内a值不在允许的范围内b值不在允许的范围内c值不在允许的范围内4.2.3等价类划分测试举例2.NextDate函数的等价类测试用例设计NextDate是一个含三个变量—month,day,year的函数。有效值区间定义如下:
M1={month:1≤month≤12}D1={day:1≤day≤31}Y1={year:1912≤year≤2050}无效等价类是:M2={month:month<1}M3={month:month>12}D2={day:day<1}D3={day:day>31}Y2={year:year<1912}Y3={year:year>2050}NextDate函数可以很好地说明选择等价关系的技巧。
2.NextDate函数的等价类测试用例设计只有一个标准等价类测试用例:
CaseIDMonthDayYearExpectedOutputTest181619648/17/19642.NextDate函数的等价类测试用例设计健壮等价类测试用例:
测试用例MonthDayYear预期输出Test1Test2Test3Test4Test5Test6Test78-11388881616168月17日month不在1..12中month不在1..12中day不在1..31中day不在1..31中year不在1912..2012year不在1912..201219641964196419641964191120512.NextDate函数的等价类测试用例设计
如果更仔细地选择等价关系,可以得到更有用的等价类。假设下面的等价类:M1={month:monthhas30days}M2={month:monthhas31days}M3={month:monthisFebruary}D1={day:1≤day≤28}D2={day:day=29}D3={day:day=30}D4={day:day=31}Y1={year:year=2000}Y2={year:yearisaleapyear}Y3={year:yearisacommonyear}简化month的处理对闰年问题
给予更多的注意
2.NextDate函数的等价类测试用例设计标准等价类测试用例:
机械地选择输入值而不考虑定义域,因此没有考虑两个不可能出现的日期。
测试用例MonthDayYear预期输出Test1Test2Test3Test445241529303120001996200220004/16/20005/30/19962/31/2002(不可能的日期)5/1/2000(不可能的输入日期)2.NextDate函数的等价类测试用例设计健壮等价类测试用例:
测试用例MonthDayYear预期输出Test1Test2Test3Test4Test5Test6Test7Test8Test9Test104524-1134526152930311529-132303120001996200220001996200220001996191120514/16/20005/30/19962/31/2002(不可能的日期)5/1/2000(不可能的输入日期)Month不在有效值域1..12中Month不在有效值域1..12中Day不在有效值域1..31中Day不在有效值域1..31中Year不在有效值域1912..2050中Year不在有效值域1912..2050中3.雇佣金问题的等价类测试用例设计
佣金问题的输入定义域很“自然地”受枪机,枪托和枪管的限制而被划分为3类。
有效等价类是:L1={locks:1≤locks≤70}L2={locks=-1}S1={stocks:1≤stocks≤80}B1={barrels:1≤barrels≤90}无效等价类是:L3={locks:locks=0ORlocks<-1}L4={locks:locks>70}S2={stocks:stocks<1}S3={stocks:stocks>80}B2={barrels:barrels<1}B3={barrels:barrels>90}3.雇佣金问题的等价类测试用例设计
除了变量名称和区间端点以外,其它和第一个版本的NextDate函数一样。因此,可以设计一个标准等价类测试用例。
Test1:枪机=4,枪托=5,枪管=9
有7个健壮性等价类测试用例如表4-8所示。3.雇佣金问题的等价类测试用例设计测试用例枪机枪托枪管预期输出Test1Test2Test3Test4Test5Test6Test74-1713535353554545-181454555.5枪机值不在允许范围内枪机值不在允许范围内枪托值不在允许范围内枪托值不在允许范围内枪管值不在允许范围内枪管值不在允许范围内955555555-191表4-8雇佣金问题的健壮等价类测试用例3.雇佣金问题的等价类测试用例设计输入域等价类不能产生令人满意的测试用例集合。
考虑在输出域上定义等价类。销售额是已售枪机,枪托和枪管的函数:销售额=45*枪机+30*枪托+25*枪管
可以在佣金域定义三个变量的等价类:S1={<locks,stocks,barrels>:sales≤1000}S2={<locks,stocks,barrels>:1000<sales≤1800}S3={<locks,stocks,barrels>:sales>1800}3.雇佣金问题的等价类测试用例设计输出域等价类测试用例:
测试用例LocksStocksBarrelsSalesCommissiontest1test2test35152550015002500501753605152551525表4-9雇佣金问题的输出域等价类测试用例4.2.4等价类测试的指导方针使用等价类测试时,应注意如下几点:●如果执行语言是强类型的,则没有必要使用健壮等价类测试。●如果错误输入检查非常重要,则应进行健壮等价类测试。●如果输入数据以离散值区间或集合的形式定义,则等价类测试是合适的。●在发现“合适”的等价关系之前,可能需要进行多次尝试。4.3边界值分析
使用边界值分析方法设计测试用例,首先应确定边界情况。输入等价类与输出等价类的边界,就是应着重测试的边界情况。边界值分析方法的基本思想是,选取正好等于,刚刚大于,或刚刚小于边界的值做为测试数据,而不是选取等价类中的典型值或任意值做为测试数据。
人们从长期的测试工作经验得知,大量的故障发生在输入或输出范围的边界上,而不是在输入范围的内部。实践表明,在设计测试用例时,对边界附近的处理必须给予足够的重视,为检验边界附近的处理专门设计测试用例,常常可以取得良好的测试效果。4.3.1边界条件
边界条件是一些特殊情况。程序在处理大量中间数值时都是正确,但是在边界处可能出现错误。
比如,在作三角形计算时,要输入三角形的三个边长:a、b和a。当满足a+b>c、a+c>b及b+c>a才能构成三角形。但如果把三个不等式的任何一个大于号“>”错写成大于等于号“≥”,那就无法构成三角形了。4.3.1边界条件再如:下面是一个极简单的程序。
/*Createa10elementintegerarray*//*Initiatizeeachelementto–1*/main(){intdata[10];inti;For(i=1;i<10;i++)data(i)=-1;}
这段代码的意图是创建包含10个元素的数组,并为数组中的每一个元素赋初值-1,即数组中从第1个元素到第10个元素被赋予数值-1。
4.3.1边界条件
但程序执行完毕,数组值如下:
data(0)=0;data(1)=-1;data(2)=-1;data(3)=-1;data(4)=-1;data(5)=-1;data(6)=-1;data(7)=-1;data(8)=-1;data(9)=-1;data(10)=-1
此时data(0)的值是0,而不是-1。如果程序员以后忘记了,或者其他程序员不知道这个数组只对data(1)到data(10)进行了初始化,那么他就可能会用到数组的第1个元素data(0),以为它的值是-1。
4.3.1边界条件
刚开始时,可能意识不到一组给定数据包含了多少边界。但是仔细分析总可以找到一些不明显的、有趣的和可能产生软件故障的边界。实际上,边界条件就是软件操作界限所在的边缘条件。一些可能与边界有关的数据类型有:数值,速度,字符,地址,位置,尺寸,数量,等等。同时,考虑这些类型的下述特征:
第一个/最后一个,最小值/最大值,开始/完成,超过/在内,空/满,最短/最长,最慢/最快,最早/最迟,最高/最低,相邻/最远,等等。4.3.2次边界条件
有些边界在软件内部,用户几乎看不到,但是软件测试仍有必要对这些边界条件进行检查。这样的边界条件称为次边界条件或者内部边界条件。
寻找次边界条件比较困难,虽然不要求软件测试员成为程序员或者具有阅读源代码的能力,但是要求软件测试员能大体了解软件的工作方式。4.3.2次边界条件1、2的幂次方表4-102的幂次方所表示的术语范围位0或1半字节0~15字节0~255字0~65,535或0~4,294,967,295千1024兆1,048,576亿1,073,741,8244.3.2次边界条件
例如,假设某种通讯协议支持256条命令,为了提高数据传输效率,通讯软件总是将常用的信息压缩到一个很小的单元中,必要时再扩展为大一些的单元。比如将常用的15条命令压缩为一个半字节数据,在遇到第16到256之间的命令时,软件转而发送一个一字节的命令。用户只知道可以执行256条命令,并不知道软件根据半字节/字节边界执行了不同的计算和操作。
为了覆盖所有可能的2的幂次方次边界,还要考虑临近半字节边界的14,15和16,以及临近字节边界的254,255和256。4.3.2次边界条件2、ASCII表表4-11部分ASCII值表
字符ASCII值字符ASCII值Null0B66space32Y89/47Z90048[91149‘96250a97957b98:58y121@64z122A65{1234.3.2次边界条件
表4-11中,0~9的ASCII值是48~57。斜杠字符(/)在数字0的前面,而冒号字符(:)在数字9的后面。大写字母A~Z对应65~90。小写字母对应97-~122。这些情况都代表次边界条件。如果对文本输入或文本转换软件进行测试,在考虑数据区间包含哪些值时,参考一下ASCII表是相当明智的。例如,如果测试的文本框只接受用户输入字符A~Z和a~z,就应该在非法区间中,检测ASCII表中位于这些字符前后的值——@,[,和{。4.3.2边界值分析测试
这里讨论一个有两个变量x1,x2的程序F,输入变量x1和x2在下列范围内取值:
a≤x1≤bc≤x2≤d
区间[a,b]和[c,d]是x1和x2的值域,强类型语言(例如Ada)允许显式地定义这种变量值域。事实上,边界值测试更适于采用非强类型语言编码的程序。cabdx1x2图4-3两个变量程序的输入域程序F的输入空间(定义域)如图4-3所示。带阴影矩形中的任何点都是程序F的有效输入。4.3.2边界值分析测试
边界值分析的基本思想是利用输入变量值的最小值,稍大于最小值,正常值,稍小于最大值和最大值。
边界值分析测试用例的获得,通过使所有变量取正常值,只使一个变量分别取最小值、略高于最小值、略低于最大值和最大值。4.3.2边界值分析测试x1abdx2图4-4有两个变量程序的边界值分析测试用例c{<xlnom,x2min>,<xlnom,x2min+>,<xlnom,x2nom>,<xlnom,x2max->,<xlnom,x2max>,<xlmin,x2nom>,<xlmin+,x2nom>,<xlmax,x2nom>,<xlmax+,x2nom>}N个变量,边界值分析产生4n+1个测试用例。4.3.4健壮性测试
健壮性测试是边界值分析的一种扩展。
变量除了取min,min+,nom,max-,max五个边界值外,还要考虑采用一个略超过最大值(max+)以及一个略小于最小值(min-)的取值,看看超过极限值时系统会出现什么情况。abdx2两个变量程序的健壮性测试用例x1abdx2x1
健壮性测试最有意义的部分不是输人,而是预期的输出,观察例外情况如何处理。4.3.3边界值分析举例
边界值分析测试用例的获得,通过使所有变量取正常值,只使一个变量分别取最小值、略高于最小值、略低于最大值和最大值。一、三角形问题的边界值分析测试用例边长下界为1,边长上界可取为100。
测试用例abc预期输出Test150501等腰三角形Test250502等腰三角形Test3505050等边三角形Test4505099等腰三角形Test55050100非腰三角形Test650150等腰三角形Test750250等腰三角形Test8509950等腰三角形Test95010050非三角形Test1015050等腰三角形Test1125050等腰三角形Test12995050等腰三角形Test131005050非三角形表4-边界值分析测试用例测试用例abc预期输出Test150501等腰三角形Test250502等腰三角形Test3505050等边三角形Test4505099等腰三角形Test55050100非腰三角形Test650150等腰三角形Test750250等腰三角形Test8509950等腰三角形Test95010050非三角形Test1015050等腰三角形Test1125050等腰三角形Test12995050等腰三角形Test131005050非三角形表4-12边界值分析测试用例测试用例abc预期输出Test150501等腰三角形Test250502等腰三角形Test3505050等边三角形Test4505099等腰三角形Test55050100非腰三角形Test650150等腰三角形Test750250等腰三角形Test8509950等腰三角形Test95010050非三角形Test1015050等腰三角形Test1125050等腰三角形Test12995050等腰三角形Test131005050非三角形表4-边界值分析测试用例测试用例abc预期输出Test150501等腰三角形Test250502等腰三角形Test3505050等边三角形Test4505099等腰三角形Test55050100非腰三角形Test650150等腰三角形Test750250等腰三角形Test8509950等腰三角形Test95010050非三角形Test1015050等腰三角形Test1125050等腰三角形Test12995050等腰三角形Test131005050非三角形表4-边界值分析测试用例二、NextDate函数的测试用例
NextDate函数是一个有三个变量month(月份)、day(日期)和year(年)的函数。输出为输入日期后一天的日期。
要求输入变量month、day和year都是整数值,并且满足下条件:
Con1.
1≤month≤12Con2.
1≤day≤31Con3.
1912≤year≤2050666661515-112191119121913197520491911年6月16日1911年6月16日1911年6月16日1911年6月16日1911年6月16日测试用例MonthDayYear预期输出151515151520502051197519751975197519751975Test1Test2Test3Test4Test5666661911年6月16日1911年6月16日Day不在有效值域1..31中1975年6月2日1975年6月3日1975年7月1日不可能的输入日期Day不在有效值域1..31中666303132Test6Test7Test8Test9Test10Test11Test12Test13表4-13NextDate函数健壮性测试用例二、NextDate函数的测试用例151515测试用例MonthDayYear预期输出197519751975197519751975-112month不在有效值域1..12中1975年1月16日1975年2月16日1975年11月16日
1975年12月16日
month不在有效值域1..12中111213151515Test14Test15Test16Test17Test18Test19表4-13NextDate函数健壮性测试用例二、NextDate函数的测试用例
雇佣金问题的测试用例生成步枪销售商销售密苏里州制造的步枪机(lock)、枪托(stock)和枪管(barrel)。枪机卖45美圆、枪托卖30美圆,枪管25美圆。销售商每月至少要售出一支完整的步枪,制造商的生产限额可提供大多数销售商一个月内销售70个枪机、80个枪托和90个枪管。销售商每访问一个镇之后,都给密苏里州步枪制造商发封电报,说明那个镇出售的枪机、枪托和枪管数量。月末,销售商发出-1个枪机被售出,表明一个月结束,这样步枪制造商就知道当月的销售情况,并计算销售商的雇佣金。三、佣金问题的测试用例
雇佣金问题的测试用例生成销售商的雇佣金计算如下:销售额不到(含)1000美元的部分为10%,1000(不含)~1800(含)美元的部分为15%,超过1800美元的部分为20%。三、佣金问题的测试用例123456789101112131415CaseLocksStocksBarrelsSalesCommComment11125101091010101114181811215109101010111014181712115910101011101014171810012513014550097597095510001025103010451400177517701012.51314.55097.59795.5100103.75104.5106.75160216.25215.5outputminimumoutputminimum+outputminimum+outputminimum+midpointborderpoint-borderpoint-borderpoint-borderpointborderpoint+borderpoint+borderpoint+midpointborderpoint-borderpoint-雇佣金问题输出边界值分析测试用例16171819202122232425CaseLocksStocksBarrelsSalesCommComment1718181819487070697018181819184880798080181819181848899090901755180018251830184548007775777077557800213.252202252262298201415141414111420borderpoint-borderpointborderpoint+borderpoint+borderpoint+midpointoutputmaximum-outputmaximum-outputmaximum-outputmaximum雇佣金问题输出边界值分析测试用例4.3.3边界值分析的局限性
基于函数(程序)输入定义域的测试方法,是所有测试方法中最基本的。
这类测试方法都有一种假设,即输入变量是真正独立的。
如果不能保证这种假设,则这类方法不能产生令人满意的测试用例。
在所有的黑盒测试方法中,基于决策表的测试是最严格,最具有逻辑严格性的测试方法。
决策表最突出的优点是,它能把复杂的问题按各种可能的情况一一列举出来,简明而易于理解,也可避免遗漏。
因此利用决策表可以设计出完整的测试用例集合。
4.4决策表测试
在一些数据处理问题中,某些操作的实施依赖于多个逻辑条件的取值,也即针对不同逻辑条件组合值,分别执行不同的操作。描述不同条件集合下采取行动的若干组合情况。
4.4决策表测试4.4.1
决策表决策表通常由4个部分组成:条件桩部分列出了问题的所有条件
,动作桩则给出了问题规定的可能采取的操作。
动作项和条件项紧密相关,指出了在条件项的各组取值情况下应采取的动作。
4.4决策表测试
在实际使用判定表时,常常先将它简化。
简化是以合并相似规则为目标的。
若表中有两条或多条规则具有相同的动作,并且在条件项之间存在着极为相似的关系,便可以设法将其合并。
4.4决策表测试合并规则的办法:“不关心”条目(don’tcare)条件无关或条件不适用。4.4决策表测试
1)确定规则的个数。每个条件可取两个取值,故应有2n种规则。
2)列出所有的条件桩和动作桩。
3)填入条件项。
4)填入动作项,这样便可得到初始决策表。
5)化简,合并相似规则后得到决策表。结合三角形问题给出构造决策表的5个步骤:4.4决策表测试c3:a,b,c构成一个三角形?c2:a=b?c3:a=c?c4:b=c?a1:非三角形a2:一般三角形a3:等腰三角形a4:等边三角形a5:不可能N---YYYY表4-18三角问题的决策表YYYNYYNYYYNNYNYYYNYNYNNYYNNN4.4决策表测试合并相似规则后三角形问题的决策表如下:
如果条件引用了等价类,则决策表会有一种典型的外观。条件c1:month在M1中?c2:month在M2中?c3:month在M3中?a1a2a3规则1T--规则2-T-规则3--T表4-19条件互斥的决策表M1={month:monthhas30days}M2={month:monthhas31days}M3={month:monthisFebruary}4.4决策表测试c1:a<b+c?c2:b<a+c?c3:c<a+b?c4:a=b?c5:a=c?c6:b=c?a1:非三角形a2:一般三角形a3:等腰三角形a4:等边三角形a5:不可能F-----TF----表4-20扩展的三角问题的决策表TTF---TTTTTTTTTTTFTTTTFTTTTTFFTTTFTTTTTFTFTTTFFTTTTFFF根据决策表,可开发出11个测试用例。4.4决策表测试4.4.2
决策表在黑盒测试中的应用用例abc预期输出test1412非三角形test2142非三角形test3124非三角形test4555等边三角形test5???不可能test6???不可能test7223等腰三角形test8???不可能test9232等腰三角形test10322等腰三角形test11345一般三角形表4-21三角形问题的决策表测试用例
选择NextDate函数是因为它可以说明输入域的相关性问题。决策表可以突出这种依赖关系。
等价类测试局限性之一是机械地选择等价类中的输入值,这可能会产生“奇怪的”测试用例。例如,找出2051年6月31日的下一天。问题由变量相互独立这个假设引起。4.4.2
决策表在黑盒测试中的应用
如果变量确实是相互独立的,那么使用等价类的笛卡儿积有意义。如果变量间存在逻辑依赖关系,那么这些依赖关系在机械地选取输入值时可能丢失。决策表方法通过使用“不可能动作”概念表示条件的不可能组合,来强调这种依赖关系。
4.4.2
决策表在黑盒测试中的应用NextDate函数能够使用的操作只有5种:
Day变量+1Month变量+1Day变量复位
Mongth变量复位
Year变量+14.4.2
决策表在黑盒测试中的应用M1:{month:month有30天}M2:{month:month有31天,12月除外}M3:{month:month是12月)M4:{month:month是2月)D1:{day:1≤day≤27)D2:{day:day:28)D3:{day:day:29)D4:{day:day:30}D5:{day:day:31)Y1:{year:year是闰年}Y2:{year:year不是闰年}4.4.2
决策表在黑盒测试中的应用建立决策表
将注意力集中到NextDate函数的日、月问题上,并仔细研究动作桩,可以在以下等价类集合上建立决策表。NextDate函数的测试用例
有30天的月份有31天的月份(非12月)12月份不可能规则可以简化关注2月和闰年使用决策表代数进一步简化这22个测试用例。
4.4.2
决策表在黑盒测试中的应用进一步简化后的决策表
1-3
4
5
6-9
10
11-14
15
16
17
18
19
20
21,22
条件:
c1:month在
c2:day在
c3:year在
M1
D1,D2,D3
—
M1
D4
—
M1
D5
—
M2
D1,D2,D3,D4
—
M2
D5
—
M3
D1,D2,D3,D4
—
M3
D5
—
M4
D1
—
M4
D2
Y1
M4
D2
Y2
M4
D3
Y1
M4
D3
Y2
M4
D4,D5
—
行为:
a1:不可能
a2:day加1
a3:day复位
a4:month加1
a5:month复位
a6:year加1
进一步简化后的决策表
1-3
4
5
6-9
10
11-14
15
16
17
18
19
20
21,22
条件:
c1:month在
c2:day在
c3:year在
M1
D1,D2,D3
—
M1
D4
—
M1
D5
—
M2
D1,D2,D3,D4
—
M2
D5
—
M3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗救助计划
- 《头部CT概述》课件
- 《求职简历的写作》课件
- 言语治疗技术失语症听理解评估
- 《纺织品工艺》课件
- 重庆市第一中学2019-2020学年高一下学期期末考试化学试题(解析版)
- 小组游戏带领班级分组学号尾号每组课前模拟并带领一
- 妇科手术患者血栓管理
- 社会保险发展历史社会保险第三讲
- 《终修订版装修手册》课件
- 2024年医疗器械经营质量管理规范培训课件
- 景区旅游安全风险评估报告
- GB/T 36187-2024冷冻鱼糜
- 22G101三维彩色立体图集
- 建筑施工安全生产治本攻坚三年行动方案(2024-2026年)
- DL-T 1476-2023 电力安全工器具预防性试验规程
- 国家开放大学《心理健康教育》形考任务1-9参考答案
- MOOC 法理学-西南政法大学 中国大学慕课答案
- (高清版)DZT 0399-2022 矿山资源储量管理规范
- 辩论赛评分表(完整版)
- 每日工作汇报表格
评论
0/150
提交评论