一、【C程序】
问题:1.1 (3分)
请针对上述C程序给出满足100%DC(判定覆盖)所需的逻辑条件。
本题考查白盒测试法及应用。
本问题考查白盒测试用例设计方法中的判定覆盖法。
判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“真”值和“假”值,从而使程序的每一个分支至少都通过一次。本题中程序有3个判定,所以满足判定覆盖一共需要6个逻辑条件。
问题:1.2 (8分)
请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。
控制流图
环路复杂度V(G)=8
本问题考查白盒测试用例设计方法中的基本路径测试法。涉及的知识点包括根据代码绘制控制流图、计算环路复杂度。
控制流图是描述程序控制流的一种图示方式,它由节点和定向边构成。控制流图的节点代表一个基本块,定向边代表控制流的方向。其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变复合条件的判断为一系列单个条件的嵌套的判断。本题程序中,while(*string&&*string!=和while(*string&&*string!= '&&*string!='\n'&&*string!=‘\t’)这两条判断语句中的判定由多个条件组成,因此在画控制流图的时候需要拆开成多条判断语句。需要注意的是,复合条件之间是“||”的关系还是“&&”的关系反应在控制流图的画法是不同的。
程序的环路复杂度等于控制流图中判定节点的个数加1,本题控制流图中判定节点个数为7,所以V(G)=8。
问题:1.3 (4分)
请给出问题2中控制流图的线性无关路径。
线性无关路径:
1. 1-2-3-4-2...5-6-13
2. 1-2-5-6-13
3. 1-2-3-5-6-13
4. 1-2...5-7-8-9-10-11-7...12-1...5-6-13
5. 1-2...5-7-12-1...5-6-13
6. 1-2...5-7-8-12-1...5-6-13
7. 1-2...5-7-8-9-12-1...5-6-13
8. 1-2...5-7-8-9-10-12-1...5-6-13
本问题考查白盒测试用例设计方法中的基本路径法。涉及的知识点包括根据控制流图和环路复杂度给出线性无关路径。
线性无关路径是指包含一组以前没有处理的语句或条件的路径。从控制流图上来看,一条线性无关路径是至少包含一条在其他线性无关路径中从未有过的边的路径。程序的环路复杂度等于线性无关路径的条数,所以本题中应该有8条线性无关路径。
二、【说明】
某银行B和某公司C发行联名信用卡,用户使用联名信用卡刷卡可累计积分,积分累计规则与刷卡金额和刷卡日期有关,具体积分规则如表2-1所示。此外,公司C的会员分为普通会员、超级会员和PASS会员三个级别,超级会员和PASS会员在刷卡时有额外积分奖励,奖励规则如表2-2所示。
银行B开发了一个程序来计算用户每次刷卡所累积的积分,程序的输入包括会员级别L、刷卡日期D和刷卡金额A,程序的输出为本次积分S。其中,L为单个字母且大小写不敏感,D由程序直接获取系统日期,A为正浮点数最多保留两位小数,S为整数。
问题:2.1 (5分)
采用等价类划分法对该程序进行测试,等价类表如下表所示,请补充表2-3中空(1)~(5)。
(1) P
(2) 12月12日
(3)最多两位小数的正浮点数
(4) 除M/S/P之外的单个字母
(5)非正的浮点数
本问题考查等价类划分法中等价类表的构造。
等价类划分法的等价类表是把程序的输入域按规则划分为若干子集。
本题中L由多个输入值构成,并且需要对每个(或者每组)输入值分别处理,按规则可以划分为n个有效等价类(每个或者每组值确定一个有效等价类)和一个无效等价类(所有不允许输入值的集合)。
对L来说,分成3个有效等价类(L分别取M、S、P)和1个无效等价类(其他情况),而这个无效等价类又可以进一步细分为非字母、非单个字母以及除M/S/P之外其他字母。
对D来说,根据日期可以分为4个有效等价类,这个有效等价类可以进一步细分为每月9日、19日,11月11日,12月12日和其他日期。
本题中对A是规定了输入值集合必须满足的条件(即最多两位小数的正浮点数),根据规则可以划分为1个有效等价类(K是最多两位小数的正浮点数)和3个无效等价类(非浮点数,非正的浮点数,多于两位小数的正浮点数)。
问题:2.2 (9分)
根据以上等价类表设计的测试用例如下表所示,请补充表2-4中空(1)~(9)。
(1) 1000
(2)大于等于499.50小于等于500.49之间的最多两位小数的浮点数
(3) 3,6,8
(4)其他日期(除每月9日、19日,11月11日,12月12日)
(5) 非字母
(6) N/A
(7)除M/S/P之外的单个字母,如A
(8) 1,7,12
(9)多于两位小数的正浮点数,如500.123
本问题考查等价类划分法中根据等价类表编写测试用例能力。
在编写等价类划分法的测试用例时,如果输入全部都来自有效等价类,则从每个有效等价类选取一个代表元素作为输入,如果要考虑无效等价类,则每次只选取一个无效等价类,其余输入都从有效等价类中选取
问题:2.3 (6分)
如果规定了单次刷卡的积分上限为20000( 即S取值大于等于0且小于等于20000),则还需要针对S的取值补充一些测试用例。假设采用等价类划分法和边界值分析法来补充用例,请补充表2-5、表2-6中的空(1)~(6)。
(1) S<0
(2) S>20000
(3) S=19999
(4) S=20001
(5) S=1
(6) S=-1
本问题考查等价类划分和边界值分析法及应用。
等价类划分法是将测试过程中的输入、输出、操作等相似内容分组,从每组中挑选具有代表性的内容作为测试用例测试,划分时分有效等价和无效等价来筛选。
边界值分析法是确认输入、输出的边界,然后取刚好等于、大于、小于边界的参数作为测试用例
三、【说明】
某公司欲开发一套基于Web的通用共享单车系统。该系统的主要功能如下:
1.商家注册、在线支付;后台业务员进行车辆管理与监控、查询统计、报表管理、价格设置、管理用户信息。
2.用户输入手机号并在取验证码后进行注册、点击用车后扫描并获取开锁密码、锁车(机械锁由用户点击结束用车)后3秒内显示计算的费用,用户确认后支付、查看显示时间与路线及其里程、预约用车、投诉。
问题:3.1 (6分)
采用性能测试工具在对系统性能测试时,用Apdex(应用性能指数)对用户使用共享单车的满意度进行量化,系统需要满足Apdex指数为0.90以上。
Apdex 量化时,对应用户满意度分为三个区间,通过响应时间数值T来划分,T值代表着用户对应用性能满意的响应时间界限或者说是"门槛" (Threshold) 。
针对用户请求的响应时间,Apdex 的用户满意度区间如下 :
满意: (0,T]让用户感到很愉快
容忍:(T, 4T] 慢了一点,但还可以接受,继续这一应用过程
失望: 大于4T,太慢了,受不了了,用户决定放弃这个应用
Apdex的计算如下:
Apdex= (小于T的样本数+T~4T 的样本数/2) /总样本数
针对用户功能,本系统设定T=2秒,记录响应时间,统计样本数量,2秒以下记录数3000,2~8秒记录数1000,大于8秒500。
请计算本系统的Apdex指数,并说明本系统是否达到要求。
Apdex指数=(满意:小于T的样本数+容忍:T〜4T的样本数/2) /总样本数
=(3000+1000/2) /4500
=0.78
0.78远小于0.90,所以该系统的用户满意度没有达到要求。
本题考査Web应用测试相关知识及应用。Web应用测试除了类似传统软件系统测试的性能测试、压力测试等之外,还需要测试页面、链接、浏览器、表单和可用性等多个方面,由于Web应用部署访问的大众化特点,对安全性尤其要重视。
此类题目要求考生阅读题目对现实问题的描述,根据对问题的分析,回答测试有关的问题。本题目说明和问题中,除了功能背景之外,给出了响应时间、HTML5、性能指数的概念、兼容性等技术点。
本问题考查Web应用性能性测试的内容,题目背景是通用共享单车系统,属于用户量大、交易密集型的应用平台,用户满意是一个系统成功与否的关键。题目还涉及对交易的时间要求,所以需要采用测试工具来测试系统性能。
针对用户功能,本系统设定T=2秒,记录响应时间,统计样本数量,2秒以下记录数3000, 2〜8秒记录数1000,大于8秒500。Apdex (应用性能指数)对用户使用共享单车的满意度进行量化,系统需要满足Apdex指数为0.90以上。在上述条件下计算Apdex指数,判定是否达到给定的要求。
Apdex (Application Performance Index,应用性能指数)是对用户满意度进行度量的指标,是由Apdex联盟(一个由众多网络分析技术公司和测量工业组成的联盟组织)联合起来开发的。用一句话来概括,Apdex是用户对应用性能满意度的量化值。它提供了一个统一的测量和报告用户体验的方法,第一次把最终用户的体验和应用性能联系在了一起。Web应用的响应时间,决定了用户的满意程度。
Apdex量化时,对应用户满意度分为三个区间,通过响应时间数值T来划分,T值代表着用户对应用性能满意的响应时间界限或者说是“门槛”(Threshold)。
针对用户请求的响应时间,Apdex的用户满意度区间如下:
满意:(0,T]让用户感到很愉快;
容忍:(T,4T]慢了一点,但还可以接受,继续这一应用过程;
失望:大于4T,太慢了,受不了了,用户决定放弃这个应用。
Apdex的计算如下:
Apdex=(小于T的样本数+T〜4T的样本数/2) /总样本数
在题目所给的测试数据条件下,T=2,小于T的样本数为3000,(T〜4T]的样本数为1000,(4T〜)的样本数为500,用这些数据对Apdex加以计算:
Apdex指数=(满意:小于T的样本数+容忍:T〜4T的样本数/2) /总样本数
=(3000+ 1000/2) /4500
= 0.78
0.78远没达到0.90,所以该系统的用户满意度没有达到要求。
问题:3.2 (6分)
系统前端采用HTML5实现,以使用户可以通过不同的移动设备的浏览器进行访问。设计兼用行测试矩阵,对系统浏览器兼容性进行测试。
本问题考查Web应用兼容性测试的内容。Web应用的兼容性是测试重要方面,包括:浏览器兼容性、操作系统平台兼容性、移动浏览、打印选项等。本题给出系统前端采用 HTML5加以实现,需要通过不同移动设备、操作系统和浏览器进行访问,因此需要设计兼容性测试矩阵,针对不同移动设备进行操作系统平台和浏览器的兼容性测试。包括移动操作系统Windows Phone、iOS和Android等,与其上可以使用的浏览器移动版IE、UCWEB、Google Chrome、Android browser和Safari等进行结合,构建兼容性二维矩阵,行列分别表示操作系统平台和浏览器。测试时分别在单元格记录操作系统和浏览器组合的测试情况,如下表所示。
问题:3.3 (8分)
针对用户手机号码获取验证码进行注册的功能,设计4个测试用例。(假设合法手机号码为11位数字,验证码为4位数字)
第一类:1234565432A或1234565432或123456543210,2017 (说明:针对手机号不合法字符输入、手机号长度少于11位、手机号长度大于11位);
第二类:12345654321,2017 (说明:针对合法的手机号码和正确的验证码);
第三类:12345654321,201x或201或20111 (说明:针对合法的手机号码和错误的验证码);
第四类:体现安全性的测试输入:其中任意输入域包含任何HTML,如:<HTML>,或任何脚本如:<SCRIPT>,或SQL功能符号,如:--、OR‘1’ = ‘1等,以测试XSS脚本和使SQL改变为不符合设计意图的用例。
本问题考查Web应用功能测试的测试用例设计。针对本系统中的用户用手机号码获取验证码进行注册的功能设计测试用例。测试的输入包括不同情况、安全性方面的SQL注入和XSS跨站攻击等。题目假设合法手机号码为11位数字,验证码为4位数字。对输入不同情况,可以采用等价类划分或边界值分析发等设计测试输入。
等价类划分法是把所有可能的输入数据,即程序的输入域划分为若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。其中,等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,它们具有等价特性,即每一类的代表性数据在测试中的作用都等价于这一类中的其他数据。这样,对于表征该类的数据输入将能代表整个子集合的输入。边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。边界值分析使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。
根据等价类划分原则,测试输入应该考虑手机号码和验证码是否合法的不同组合。
第一类:针对手机号码不合法、验证码合法的情况。输入针对手机号不合法字符(非数字)输入、手机号长度少于11位、手机号长度大于11位,与合法四位数字组合。
第二类:针对合法的手机号码和正确的验证码,长度为11位的全数字手机号与四位合法数字验证码的组合。
第三类:针对合法的手机号码和错误的验证码。输入长度为11为的全数字手机号与思维非法的验证码,即验证码长度大于4、小于4,或包含非法字符(非数字)。
第四类:体现安全性的测试输入,即输入的内容中输入某些功能符号可能会传到后台引起安全问题。
Web应用系统在某些情况下,接收页面上传的内容,并作为新页面的内容。例如,在本系统中需要提交手机号码、验证码,在提交之后,需要在系统存储中验证相关的内容,个人信息中还需要显示手机号码。
在将输入内容作为新页面中内容的情况下,如果用户输入如下带有HTML标记的内容,如:
在提交之后,标记将提交到服务器上,并在有用户访问新的页面中显示,此时所看到的网页中包含以上标记的部分元素可能是:
从客户的角度看,该网页中就出现了弹出窗口提示,显示Hello World!,如下图所示:
即:用户输入的内容已经被浏览器成功执行。
而如果这类代码可以执行,就存在被真正恶意攻击者攻击的可能,而且可能造成各类安全问题。所以网站提交代码中的任何脚本、页面功能符号都不应该被直接接受使其作为功能符号在后续使用。所以测试时需要考虑设计包含HTML标记符、脚本等测试输入,如<HTML>、<script>、<b>等功能符号。
对于Web应用系统采用某种数据库,接收用户从Web页面中输入,通过将输入作为与数据库相关操作的一部分。如果将用户输入的数据和设计好的SQL拼接后提交给数据库执行,在有些情况下,就可能存在用户输入的数据并非设计的正确格式,就给了恶意用户提供了破坏的机会,即SQL注入。恶意用户输入不期望的数据,拼接后提交给数据库执行,造成可能使用其他用户身份、查看其他用户的私密信息,还可能修改数据库的结构,甚至是删除应用的数据库表等严重后果。因此,在测试Web应用时,需要认真仔细设计测试输入,进行认真严格的测试,以保证如果存在SQL注入及早发现。
本系统测试时,设计测试如为:对任一字段设计包含SQL功能符号,如包含’OR、’--’OR‘1’=‘1’等,检查结果是否造成注入问题。
四、【说明】
图4-1是某企业信息系统的一个类图,图中属性和方法前的"+"、"#"和"- " 分别表示公有成员、保护成员和私有成员。其中:
(1)类Manager重新实现了类Employee的方法calSalary( ),类Manager中的方法querySalary( )继承了其父类Employee的方法querySalary( )。
(2)创建类Employee的对象时,给其设置职位(position)、基本工资(basicSalary)等信息。方法calSalary( )根据个人的基本工资、当月工资天数(workDays)和奖金(bonus)等按特定规则计算员工工资。
(3)类Department中的方法statSalary中首先调用了该类的方法load( ),获取本部门员工列表,然后调用了类Employee中的方法calSalary( )。
现拟采用面向对象的方法进行测试。
问题:4.1 (5分)
图4-1所示的类图中,类manager和类Employee之间是什么关系?该关系对测试的影响是什么?
继承关系。
若子类Manager重新实现父类Employee的方法或者子类的某方法中调用了自己实现的方法,需要重新进行测试。
本题考查面向对象测试的基本知识及应用,要求考生掌握面向对象测试的基本内容。
此类题目要求考生认真阅读题目对问题的描述,分析问题并结合面向对象的基本概念来回答。题目给出三个类,类Employee、类Manager及类Department。本问题考查面向对象的基本概念。
类和类之间的关系主要有继承、关联和依赖三种关系,其中关联又包括一般关联、聚合和组合三种。其中,继承是指一个类直接使用另一个类的属性和方法,即子类具有父类的属性和方法。类Employee和类Manager之间是继承关系。
继承关系对面向对象测试的影响主要体现在两个方面:若子类的某方法继承了其父类,方法进行了修改,则需要进行测试;继承的方法没有修改,用父类的方法,但是该方法调用了子类修改过的其他方法时,也需要对该方法进行测试。
问题:4.2 (6分)
(1)类Manager重新实现了类Employee的方法calSalary( ),这是面向对象的什么机制?是否需要重新测试该方法?
(2)类Manager中的方法querySalary( )继承了其父类Employee的方法querySalary( ),是否需要重新测试该方法?
(1) 多态;类Manager中的方法calSalaryO需要重新测试。
(2) 不需要。
(1) 在面向对象技术中,不同的对象收到同一消息可以产生完全不同的结果,这一现象叫作多态。多态可以利用类继承的层次关系来支持,即子类重新实现了父类的方法。此时,由于类Manager中的方法calSalary()和其父类Employee中的该方法有了不同的实现,因此需要重新测试。
(2) 子类Manager中的方法querySalary()继承了其父类Employee 的方法querySalary(),没有重新实现,因此不需要重新测试。
问题:4.3 (6分)
(1)请结合题干说明中的描述,给出测试类Employee方法calSalary( )时的测试序列。
(2)请给出类图4- 1中各个类的测试顺序。
(1) 测试序列:
new Employee()—calWorkDays()—-setBonus()—calSalary()—querySalary()。
(2) 测试顺序:Employee—Manager—Department。
(1) 由题干说明,方法calSalary()根据个人的基本工资、当月工资天数(workDays)和奖金(bonus)等按特定规则计算工资,因此测试时需要先生成一个Employee对象,然后计算工作时间calWorkDays()和计算奖金setBonus(),才能计算工资calSalary(),最后查询工资queirySalary()以判断计算是否正确。其中,计算工作时间calWorkDays()和计算奖金setBonus()是顺序无关的。因此,测试序列:
new Employee()—calWorkDays()—setBonus()—calSalary()—querySalary()。或
new Employee()—setBonus()—calWorkDays()—calSalary()—query Salary()。
(2) 由类结构图可以容易看出,类Employee最先测试,因为测试类Manager和类Department都需要依赖该类;而测试类Department还需要依赖类Manager,因此类的测试顺序为Employee——Manager—Department。
问题:4.4 (3分)
从面向对象多态特性考虑,测试方法statSalary()时应注意什么?
测试方法statSalary()时,要同时考虑类Employee和类Manager的calSalary()。
由题干描述,方法statSalary()中需要调用类Employee中的方法calSalary()。而方法calSalary()在父类Employee和子类Manager中有不同的实现,因此在测试方法statSalary() 时,要同时考虑类Employee和类Manager的calSalary()。
五、【说明】
某飞行器供油阀控制软件通过控制左右两边的油箱BL、BR 向左右发动机EL、ER供油,既要保证飞行器的安全飞行,又要保证飞行器的平衡,该软件主要完成的功能如下:
(1)无故障情况下,控制左油箱BL向左发动机EL供油,右油箱BR向右发动机ER供油,不上报故障;
(2)当左油箱BL故障时,控制右油箱BR分别向左、右发动机EL和ER供油,并上报二级故障一—左油箱故障;
(3)当右油箱BR故障时,控制左油箱BL分别向左、右发动机EL和ER供油,并上报二级故障——右油箱故障;
(4)当左发动机BL故障时,根据左右油箱的剩油量决定(如果左右油箱剩油量之差大于等于50升,则使用剩油量多的油箱供油,否则同侧优先供油)左油箱BL还是右油箱BR向右发动机ER供油,并上报一级故障——左发动机故障;
(5)当右发动机ER故障时,根据左右油箱的剩油量决定(如果左右油箱剩油量之差大于等于50升,则使用剩油量多的油箱供油,否则同侧优先供油)左油箱且还是右油箱BR向左发动机BL供油,并上报一级故障——右发动机故障;
(6)当一个油箱和一个发动机同时故障时,则无故障的油箱为无故障发动机供油,并上报一级故障——故障油箱和发动机所处位置;
(7)当两个油箱或两个发动机同时故障或存在更多故障时,则应进行双发断油控制,并上报特级故障——两侧油箱或两侧发动机故障;
(8)故障级别从低级到高级依次为二级故障、一级故障和特级故障,如果低级故障和高级故障同时发生,则只上报最高级别故障。
问题:5.1 (6分)
覆盖率是度量拥试完整性的一个手段,也是度量测试有效性的一个手段。在嵌入式软件白盒测试过程中,通常以语句覆盖率、条件覆盖率和MC/DC覆盖率作为度量指标。
在实现第6条功能时,设计人员采用了下列算法:
if ((BL==故障) && ( EL==故障))
{BR供油ER;BL断油;EL断油;}
if ((BL==故障) && ( ER==故障))
{BR供油EL;BL断油;ER断油;}
if ((BR==故障) && ( EL==故障))
{BL供油ER;BR断油;EL断油;}
if ((BR=故障) && ( ER==故障))
{BL供油EL;BR断油;ER断油;}
请指出对上述算法达到100%语句覆盖、100%条件覆盖和100%MC/DC覆盖所需的最少测试用例数目,填写表5-1中的空(1)~(3)。
(1)4
(2)8
(3)12
本题考查软件测试的一些基本概念和方法在测试实践中的应用。在软件测试过程中,测试人员通过对软件设计和算法的理解,运用测试概念和方法进行基于需求的测试用例设计,不仅需要选择恰当的测试用例设计方法,而且需要保证测试用例的充分性。
此题目要求考生认真阅读题目所给的软件需求和算法信息,结合嵌入式软件测试的测试用例设计要求,在此嵌入式软件测试中进行实际应用。
本问题主要考查对语句覆盖、条件覆盖和MC/DC覆盖概念的掌握以及应用。
语句覆盖要求设计适当数量的测试用例,运行被测程序,使得程序中每一条语句至少被运行一遍,语句覆盖在测试中主要用于发现错误语句。
条件覆盖要求设计适当数量的测试用例,运行被测程序,使得每个判断中的每个条件的可能取值至少满足一次。
修正判定条件覆盖(MC/DC)要求设计适当数量的测试用例,保证在一个程序中每一种输入输出至少得出现一次,在程序中的每一个条件必须产生所有可能的输出结果至少一次,并且每个判断中的每个条件必须能够独立影响一个判断的输出,即在其他条件不变的前提下仅改变这个条件的值,而使判断结果改变。
按照上述语句覆盖要求,语句覆盖就要使得问题1中的所有语句执行一次,问题1中共有四个语句块,由于问题1中程序片段实现第6条功能,即当一个油箱和一个发动机同时故障时的情况,这个前提条件导致问题1中四个语句块都不可能同时执行两个或两个以上,每次只能执行一个,故为了使问题1中的四个语句块都执行一次,就最少需要4个测试用例来覆盖。
按照上述条件覆盖要求,条件覆盖要使得每个判断中的每个条件的可能取值至少满足一次。对问题1中的四个判断进行分析,每个判断有两个条件,如果每个判断中的两个条件同时取真或同时取假,则就可以保证条件覆盖的要求,故每个判断最少需要2个测试用例就可满足条件覆盖要求,四个判断最少就需要8个测试用例来满足条件覆盖要求。
按照上述MC/DC覆盖要求,即每个判断中的每个条件必须能够独立影响一个判断的输出。对问题1中的四个判断进行分析,每个判断有两个条件,两个条件共有四种组合,即TT (TRUE 和TRUE)、TF (TRUE和FALSE)、FT (FALSE和TRUE)和FF(FALSE和FALSE)。但是由于每个判断均为“逻辑与”条件,当前一个条件为FALSE时,其整个判断值为FALSE,后一个条件的真或假均不能独立影响整个判断的输出,所以只需要TT、TF和FX (X表示后一个条件为TRUE或FALSE都可以)三种情况就可以,故每个判断至少需要3个测试用例满足MC/DC覆盖要求,总共四个判断至少需要12个测试测试用例来满足MC/DC覆盖要求。
问题:5.2 (12分)
为了测试此软件功能,测试人员设计了表5-2所示的测试用例,请填写该表中的空(1)~(12)。
(1)BR
(2)BL
(3)BR
(4)BL
(5)任意小于130的整数
(6)任意大于40且小于130的整数
(7)断油
(8)BL
(9)BL
(10)BR
(11)故障
(12)特级故障
为了测试某飞行器供油阀控制软件的功能,就要依据题目说明中对某飞行器供油阀控制软件的具体功能描述,进行测试用例的设计。此题考查测试用例的设计,不仅包括输入数据的设计,还包括前置条件(比如剩油量)及预期输出的垛计(比如给发动机供油的邮箱和上报故障情况),条件较多,需要综合考虑。
序号1,前置条件中两个油箱BL、BR剩余油量均为200,左、右油箱BL、BR与左、右发动机EL、ER均无故障,依据第1条设计说明,输出控制左油箱BL向左发动机EL供油,右油箱BR向右发动机ER供油,不上报故障。
序号2,前置条件中两个油箱BL、BR剩余油量均为200,左油箱BL故障,右油箱BR与左、右发动机EL、ER均无故障,依据第2条设计说明,输出控制右油箱BR分别向左、右发动机EL和ER供油,并上报二级故障——左油箱故障。
序号3,前置条件中两个油箱BL、BR剩余油量均为200,右油箱BR故障,左油箱BL与左、右发动机EL、ER均无故障,依据第3条设计说明,输出控制左油箱BL分别向左、右发动机EL和ER供油,并上报二级故障——右油箱故障。
序号4,前置条件中两个油箱BL、BR剩余油量均为200,左右油箱剩油量之差等于0升,左发动机故障,左、右油箱BL、BR与右发动机ER均无故障,依据第4条设计说明,输出控制左发动机EL故断油,右油箱BR向右发动机ER供油,并上报一级故障——左发动机故障。
序号5,前置条件中两个油箱BL、BR剩余油量均为200,左右油箱剩油量之差等于0升,右发动WER故障,左、右油箱BL、BR与左发动机ER均无故障,依据第5条设计说明,输出控制右发动机ER断油,左油箱BL向左发动机EL共油,并上报一级故障——右发动机故障。
序号6,前置条件中左油箱BL油量未知,BR剩余油量均为180,左右油箱剩油量之差未知,右发动机ER故障,左、右油箱BL、BR与左发动机EL均无故障,输出控制右发动机ER断油,右油箱BR向左发动机EL供油,并上报一级故障——右发动机故障,依据第5条设计说明,得到这样的输出控制,需要左右油箱剩油量之差大于等于50升,所以这时左油箱的剩余油量为任意小于(180-50)的整数,即任意小于130的整数。
序号7,前置条件中左油箱BL剩余油量为90, BR剩余油量未知,左右油箱剩油量之差未知,右发动即ER故障,左、右油箱BLBR与左发动机EL均无故障,输出控制右发动机ER断油,左油箱BL向左发动机EL共油,并上报一级故障——右发动机故障,依据第5条设计说明,得到这样的输出控制,需要左右油箱剩油量之差小于50升,所以这时左油箱的剩余油量为(90-50)至(90+50)之间的整数,即任意大于40且小于130 的整数。
序号8,前置条件中两个油箱BL、BR剩余油量均为200,左右油箱剩油量之差等于0升,左油箱BL与左发动机EL均故障,右油箱BR与右发动机ER均无故障,依据第6条设计说明,输出控制故障发动机(左发动机EL)断油,无故障的油箱(右油箱BR) 为无故障发动机(右发动机ER)供油,并上报一级故障——故障油箱(左油箱BL)和故障发动机(左发动机EL)。
序号9,前置条件中两个油箱BL、BR剩余油量均为200,左右油箱剩油量之差等于0升,右油箱BR与右发动机ER均故障,左油箱BL与左发动机EL均无故障,依据第6条设计说明,输出控制故障发动机(右发动机ER)断油,无故障的油箱(左油箱BL) 为无故障发动机(左发动机EL)供油,并上报一级故障——故障油箱(右油箱BR)和故障发动机(右发动机ER)。
序号10,前置条件中两个油箱BL、BR剩余油量均为200,左右油箱剩油量之差等于0升,右油箱BR与左发动机EL均故障,左油箱与右发动机ER均无故障,依据第6条设计说明,输出控制故障发动机(左发动机EL断油,无故障的油箱(左油箱BL) 为无故障发动机(右发动机ER)供油,并上报一级故障——故障油箱(右油箱BR)和故障发动机(左发动机EL)。
序号11,前置条件中两个油箱BL、BR剩余油量均为200,左右油箱剩油量之差等于0升,左油箱BL与右发动机ER均故障,右油箱BR与左发动机EL均无故障,依据第6条设计说明,输出控制故障发动机(右发动机ER)断油,无故障的油箱(右油箱BR) 为无故障发动机(左发动机EL)供油,并上报一级故障——故障油箱(左油箱BL)和故障发动机(右发动机ER)。
序号12,前置条件中两个油箱BL、BR剩余油量均为200,左右油箱剩油量之差等于0升,左、右油箱BL、BR均故障,左、右发动机EL、ER均无故障,依据第7条设计说明,输出控制左、右发动机EL、ER均断油,并上报特级故障——两侧油箱均故障。
序号13,前置条件中两个油箱BL、BR剩余油量均为200,左右油箱剩油量之差等于0升,左、右油箱BL、BR无故障,左发动机EL故障,右发动机ER未知,但是输出控制左、右发动机均EL、ER均断油,并上报特级故障,依据第7条设计说明,只有当两个油箱或两个发动机同时故障或存在更多故障时,才会得到如此的控制,故推断右发动机ER—定故障。
序号14,前置条件中两个油箱BL、BR剩余油量均为200,左右油箱剩油量之差等于0升,左油箱BL故障,左、右发动机ELER均故障,只有右油箱BR无故障,依据第7条和第8条设计说明,输出控制左、右发动机EL、ER均断油,并上报特级故障——两侧发动机均故障。左油箱故障的二级故障和两侧发动机均故障的特级故障同时发生,只上报特级故障。
问题:5.3 (2分)
常见的黑盒测试的测试用例设计方法包括等价类划分、决策表、因果图、边界值分析等。测试人员在针对本题设计测试用例时,使用哪种测试用例设计方法最恰当。
等价类划分。
软件测试人员在基于需求设计测试用例的过程中,通常需要使用一些黑盒测试方法,黑盒测试方法一般包括功能分解、等价类划分、边界值分析、判定表、因果图、随机测试、猜错法和正交试验法等。就本题而言,由于设计说明中是依据故障数目来进行说明的,从无故障、一个故障、两个故障到多个故障进行软件设计说明,所以采用以故障数目进行等价类划分来设计测试用例方法最恰当。