一、问答题
1、阅读下列C程序,回答问题1至问题3,将解答填入答题纸的对应栏内。
问题1:(3分) 请针对上述C程序,给出满足100%DC(判定覆盖)所需的逻辑条件。
问题2:(7分)请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。
问题3:(3分)请给出【问题2】中控制流图的线性无关路径。
参考答案:
问题1:答案:
1)、*string && *string !='-';
2)、! (*string && *string !='-');
3)、!*string;
4)、*string;
5)、*string&&*string!=' ' && *string!=' \n' &&*string!='\t';
6)、!(*string&&*string!=' ' && *string!=' \n' &&*string!=' \t');
问题2:答案:
(1)、控制流图如下图所示:

(2)、V(G)=7+1=8
问题3:答案:
1.1、2、5、6、13;
2.1、2、3、5、6、13;
3.1、2、3、4、2、5、6、13;
4.1、2、5、7、12、1. . .
5.1、2、5、7、8、12、1. . .
6.1、2、5、7、8、9、12、1. . .
7.1、2、5、7、8、9、10、12、1. . .
8.1、2、5、7、8、9、10、11、7、12、1. . .
解析:
问题1的解析正确,判定覆盖法需要设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“真”值和“假”值。问题2的解析中,控制流图的绘制需要按照程序的流程进行,环路复杂度V(G)的计算是通过判定节点的数量加1得出的。问题3的解析正确,线性无关路径是至少包含一条在其他线性无关路径中从未有过的边的路径,本题的线性无关路径共有8条,这些路径覆盖了程序中的所有可执行语句和条件分支。
2、阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某银行 B 和某公司 C 发行联名信用卡,用户使用联名信用卡刷卡可累计积分,积分累计规则与刷卡金额和刷卡日期有关,具体积分规则如表 2-1 所示。
此外,公司 C 的 会员分为普通会员、超级会员和 PASS 会员三个级别,超级会员和 PASS 会员在刷卡时有额外积分奖励,奖励规则如表 2-2 所示。
银行 B 开发了一个程序来计算用户每次刷卡所累积的积分,程序的输入包括会员级别 L、刷卡日期D 和刷卡金额 A,程序的输出为本次积分 S。其中,L 为单个字母且大小写不敏感,D 由程序直接获取系统日期,A 为正浮点数最多保留两位小数,S 为整数。
问题1:(5分)采用等价类划分法对该程序进行测试,等价类表如下表所示,请补充表2-3中空(1)~(5)。问题2:(9分)根据以上等价类表设计的测试用例如下表所示,请补充表2-4中空(1)~(9)。

参考答案:
问题1:答案:
(1):P;
(2):12月12日;
(3):正浮点数带2位小数;
(4):MSP以外的字母;
(5):非正浮点数;
问题2:答案:
(1):1000;
(2):500;
(3):3、6、8;
(4):1月1日 (除特殊日期之外的其它日期);
(5):1 (非字母即可);
(6):N/A;
(7):K (MSP以外的单个字母);
(8):1、7、12;
(9):500.123(多于两位小数的正浮点数);
问题3:答案:
(1):S<0;
(2):s>20000;
(3):S=19999;
(4):S=-1;
(5):S=20001;
(6):S=1;
解析:
问题一的答案需要根据具体的等价类划分和输入条件来填写,注意考虑各种边界和特殊情况。问题二需要根据等价类表设计的测试用例来填写,尽可能覆盖各种可能的输入情况。问题三需要针对积分的取值补充测试用例,包括上下限的边界值和特殊情况。在填写答案时,需要仔细阅读题目要求和说明,理解等价类划分法和边界值分析法的应用,以及具体测试用例的设计思路。
3、
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某公司欲开发一套基于Web的通用共享单车系统。该系统的主要功能如下:
1.商家注册、在线支付;后台业务员进行车辆管理与监控、查询统计、报表管理、 价格设置、管理用户信息。
2.用户输入手机号并在获取验证码后进行注册、点击用车后扫描并获取开锁密码、锁车(机械锁由用户点击结束用车)后 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指数,并说明本系统是否达到要求。
【问题2】(6分)系统前端采用HTML5实现,已使用户可以通过不同的移动设备的浏览器进行访问。设计兼容性测试矩阵,对系统浏览器兼容性进行测试。【问题3】(8分)针对用户手机号码获取验证码进行注册的功能,设计4个测试用例。(假设合法手机号码为11位数字,验证码为4位数字)
参考答案:
【问题1】答案:未达到要求。
因为Apdex = (3000+1000/2)/(3000+1000+500) = 3500/4500 = 0.78 < 0.90.,所以未达到要求。
【问题2】参考答案:

【问题3】参考答案:
用例1:13801234567 ,1234(合法的11位数字的手机号码,正确的4位数字验证码);(正确测试)
用例2:1380123456 ,1234(小于11位数字的手机号码,正确的4位数字验证码);
用例3:138012345678 ,1234(大于11位数字的手机号码,正确的4位数字验证码);
用例4: 13801234567 ,123(合法的11位数字的手机号码,不合法的数字验证码);
解析:【问题1】解析:本小题考查根据题意进行简单的计算,不要被大量的文字描述吓到,根据提示,其实本题是送分题。
【问题2】解析:本小题考查兼容性测试用例矩阵的简单应用,要求对不同的移动设备的浏览器进行兼容性测试。只需要把设计的思路表示出来即可,可以不用写上具体的移动设备平台和浏览器,具体的情况可以在真实实践中根据实际要求设计。
【问题3】解析:本小题考查测试用例设计的简单应用,用例很多,只需要设计符合条件的4条即可,最好包含有效等价类和无效等价类。
4、阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。
【说明】
下图是某企业信息系统的一个类图,图中属性和方法前的"+"、"#"和"- " 分别表示公有成员、保护成员和私有成员。其中:

(1)类Manager重新实现了类 Employee的方法 calSalary( ),类Manager中的方法querySalary( )继承了其父类Employee的方法querySalary( )。
(2)创建类 Employee的对象时,给其设置职位(position)、基本工资(basicSalary)等信息。方法calSalary( ),根据个人的基本工资、当月工资天数(workDays)和奖金(bonus)等按特定规则计算员工工资。
(3)类Department中的方法statSalary中首先调用了该类的方法load( ),获取本部门员工列表,然后调用了类 Employee中的方法calSalary( )。
现拟采用面向对象的方法进行测试。
【问题1】(5分)图4-1 所示的类图中,类manager 和类Employee之间是什么关系?该关系对测试的影响是什么?
【问题2】(6分)1.类Manager重新实现了类 Employee的方法calSalary( ),这是面向对象的什么机制?是否需要重新测试该方法?
2.类Manager中的方法querySalary( )继承了其父类 Employee 的方法querySalary( ),是否需要重新测试该方法?
【问题3】(6分)
1.请结合题干说明中的描述,给出测试类Employee 方法calSalary( )时的测试序列。
2.请给出类图中各个类的测试顺序。
【问题4】(3分)从面向对象多态特性考虑,测试方法statSalary( )时应注意什么?参考答案:
【问题1】答案:
1.泛化关系;
2.继承的成员函数是否需要测试;对父类的测试是否能用到子类上。
【问题2】答案:(1)、多态机制;需要重新测试,因为在子类中重新进行了定义,所以需要重新测试;
(2)、不需要重新测试,因为子类继承了父类的方法,只要父类的该方法通过测试了即可。
【问题3】参考答案:1、测试序列:Employee-calWorkdays()-setBonus()-calSalary()-querySalary();
2、先测试Employee类,然后Manager类,最后测试Department类。
【问题4】参考答案:
在测试Department中的方法statSalary()时涉及到父类Employee、子类Manager中的方法calSalary( )方法,即需要分别对各类的calSalary()方法设计测试用例进行测试。
解析:
问题1解析:类图和继承关系在面向对象编程中非常重要,通过继承可以实现代码的复用和扩展。在测试中需要考虑继承关系对测试的影响,包括继承的成员函数是否需要测试以及父类的测试是否能应用到子类上。
问题2解析:该问题考察面向对象的多态机制和继承机制。多态允许使用父类的引用调用子类的方法,这是面向对象的一个重要特性。在测试中,如果子类重写了父类的方法,需要重新测试该方法以确保其正确性。而继承的方法则不需要重新测试,只要父类的方法通过测试即可。
问题3解析:在测试中需要考虑方法的执行顺序和类的依赖关系。对于calSalary()方法的测试序列,需要先计算工资天数和设置奖金,然后才能计算工资和查询工资。在测试顺序上,需要先测试基类Employee,然后测试Manager类(继承自Employee),最后测试Department类(依赖于Employee和Manager类)。
问题4解析:在面向对象编程中,多态性是一个重要特性。在测试中需要考虑多态对测试用例设计的影响。对于涉及到多态的方法(如statSalary()),需要分别对各类的相关方法进行测试,并考虑输入数据的类型对测试结果的影响。同时,先测试基类,然后再根据输入数据设计不同的测试用例进行测试。
5、阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某飞行器供油阀控制软件通过控制左右两边的油箱BL、BR,向左右发动机 EL、ER 供油,既要保证飞行器的安全飞行,又要保证飞行器的平衡,该软件主要完成的功能如下:
(1)无故障情况下,控制左油箱 BL 向左发动机 EL 供油,右油箱BR向右发动机 ER供油,不上报故障;
(2)当左油箱 BL 故障时,控制右油箱BR分别向左、右发动机EL 和 ER 供油,并上报二级故障一一左油箱故障;
(3)当右油箱 BR故障时,控制左油箱BL 分别向左、右发动机EL 和 ER 供油,并上报二级故障一一右油箱故障;
(4)当左发动机EL 故障时,根据左右油箱的剩油量决定(如果左右油箱剩油量之差大于等于 50 升,则使用剩油量多的油箱供油,否则同侧优先供油)左油箱BL 还是右油箱 BR 向右发动机 ER 供油,并上报一级故障——左发动机故障;
(5)当右发动机ER故障时,根据左右油箱的剩油量决定(如果左右油箱剩油量之差大于等于 50 升,则使用剩油量多的油箱供油,否则同侧优先供油)左油箱且还是右油箱 BR 向左发动机EL 供油,井上报一级故障——右发动机故障;
(6)当一个油箱和一个发动机同时故障时,则无故障的油箱为无故障发动机供油, 并上报一级故障——故障油箱和发动机所处位置;
(7)当两个油箱或两个发动机同时故障或存在更多故障时,则应进行双发断油控制, 并上报特级故障——两侧油箱或两侧发动机故障;
(8)故障级别从低级到高级依次为二级故障、一级故障和特级故障,如果低级故障和高级故障同时发生,则只上报最高级别故障。
【问题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 覆盖所需的最少测试用例数目,填写下表中的空(1)~(3)。【问题2】(12分)为了测试此软件功能,测试人员设计了下表所示的测试用例,请填写该表中的空(1)~(12)。
【问题3】(2分)常见的黑盒测试的测试用例设计方法包括等价类划分、决策表、因果图、边界值分析等。测试人员在针对本题设计测试时,使用哪种测试用例设计方法最恰当?
参考答案:
【问题1】答案:(1)4 (2)2 (3)4
【问题2】答案:
(1)BR (2)BL (3)BR
(4)BL (5)100 (6)90
(7)断油 (8)BL (9)BL
(10)BR (11)故障 (12)特级故障
【问题3】答案:决策表法。解析:
本题考查语句覆盖、条件覆盖和 MC/DC 覆盖。语句覆盖需要让程序中的语句都执行一遍,因此需要四个测试用例。条件覆盖需要使得每个判断中的每个条件的可能取值至少满足一次,因此需要两个测试用例。MC/DC 覆盖需要设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身所有可能结果也至少出现一次,也需要四个测试用例。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!