一、问答题
1、阅读下列C程序,回答问题1至问题3,将解答填入答题纸的对应栏内。
【问题1】(3分)
请针对上述C程序给出满足100%DC(判定覆盖)所需的逻辑条件。
【问题2】(8分)
请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。
【问题3】(4分)
请给出问题2中控制流图的线性无关路径。
参考答案:
【问题1】
i<ncycle;
i>=ncycle;
j<cyclelen;
j>=cyclelen;
pos>=panonopt_end;
pos<panonopt_end;
【问题2】
V(g)=4
【问题3】
1、2、8
1、2、3、4、2...
1、2、3、4、5、6、4...
1、2、3、4、5、7、4...
解析:
问题1要求给出满足100%DC(判定覆盖)所需的逻辑条件。在给出的C程序中,判定语句涉及到多个条件,包括i与ncycle的大小关系、j与cyclelen的大小关系以及pos与panonopt_end的大小关系。为了满足100%的判定覆盖,需要针对每个判定语句设置相应的逻辑条件,包括i小于ncycle、i大于或等于ncycle、j小于cyclelen、j大于或等于cyclelen、pos大于或等于panonopt_end以及pos小于panonopt_end。
2、阅读下列说明,回答问题1至问题2,将解答填入答题纸的对应栏内。
【说明】
某连锁酒店集团实行积分奖励计划,会员每次入住集团旗下酒店均可以获得一定积分,积分由欢迎积分加消费积分构成。其中欢迎积分跟酒店等级有关,具体标准如表2-1所示;消费积分跟每次入住消费金额有关,具体标准为每消费1元获得2积分(不足1元的部分不给分)。此外,集团会员分为优先会员、金会员、白金会员三个级别,金会员和白金会员在入住酒店时可获得消费积分的额外奖励,奖励规则如表2-2所示。
表2-1 集团不同等级酒店的欢迎积分标准
表2-2 额外积分奖励规则
该酒店集团开发了一个程序来计算会员每次入住后所累积的积分,程序的输入包括会员级别L、酒店等级C和消费金额A(单位:元),程序的输出为本次积分S。其中,L为单个字母且大小写不敏感,C为取值1到6的整数,A为正浮点数且最多保留两位小数,S为整数。
【问题1】(7分)
采用等价类划分法对该程序进行测试,等价类表如表2-3所示,请补充表2-3中空(1)-(7)。
表2-3 等价类
【问题2】(13分)
根据以上等价类表设计的测试用例如下表所示,请补充表2-4中空(1)-(13)。
表2-4 测试用例
参考答案:
【问题1】
(1)P (2) 1 (3) 4、5 (4)最多带2位校数的正浮点数
(5)M、G、P以外的单个字母 (6)小于1的整数 (7)非正浮点数
【问题2】
(1)300 (2)100 (3)3、6、8 (4)6
(5)1(非字母) (6)FF(非单个字母)
(7)N/A (8)2.3(非整数)
(9)1,13,8 (10)7(大于6的整数)
(11)a (非浮点数) (12)-100.12(非正浮点数)
(13)100.123(超过两位小数的正浮点数)
解析:
对于问题1,根据等价类划分原则,对于会员等级L,有效等价类为M、G、P,无效等价类为非字母、非单个字母及其他单个字母;对于酒店等级C,有效等价类为1、(2、3)、(4、5)、6,无效等价类为非整数、小于1的整数和大于6的整数;对于消费金额A,有效等价类为最多带两位小数的正浮点数,无效等价类为非浮点数、多于两位小数的浮点数以及负浮点数。因此,(1)-(7)的答案如上所示。
3、阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某公司欲开发一套基于Web的房屋中介系统,以有效管理房源和客户,提升成交效率。该系统的主要功能是:
(1)房源管理。员工或客户对客户拟出售/出租的意向房进行登记和管理。
(2)客户管理。员工对客户信息进行管理,支持客户交互。
(3)房源推荐。根据客户的需求和房源情况,进行房源推荐。
(4)交易管理。对租售客户双方进行交易管理,收取中介费,更改客户状态。
【问题1】(6分)
系统前端采用HTML5实现,以使用户可以通过电脑和不同移动设备的浏览器进行访问。请设计兼容性测试矩阵,对系统浏览器兼容性进行测试。
【问题2】(8分)
客户交易时,前端采用表单提交价格(正整数,单位:元)和中介费比例(0到1之间的小数,保留小数点后2位),针对这一功能设计4个测试用例。
【问题3】(6分)
采用性能测试工具在对系统性能测试时,采用Apdex(应用性能指数)对用户使用该系统的性能满意度进行度量,系统需要满足的Apdex指数为0.85以上。
Apdex量化时,对应的用户满意度分为三个区间,通过响应时间阈值(Threshold)T来划分,Apdex的用户满意度区间如下:
满意:(0,T],让用户感到很愉快
容忍: (T,4T],慢了一点,但还可以接受,继续这一应用过程
失望:高于4T,太慢了,受不了,用户决定放弃这个应用
Apdex的计算入如下:
Apdex= (满意的样本数+容忍的样本数/2) /总样本数
针对用户功能,本系统设定T=2秒,记录响应时间,统计样本数量,2秒以下记录数4000,2~8秒记录数1000,大于8秒500。
请计算本系统的Apdex指数,并说明本系统是否到达要求。
参考答案:
【问题1】
【问题2】
10000,0.12(正整数,0~1之间的小数)
1000.99,0.12(非整数,0~1之间的小数)
10000,1(正整数,非小数)
10000,2.12(正整数,不在0~1之间的小数)
【问题3】
不满足要求:Apdex=(4000+1000/2)/(4000+1000+500)=0.82,小于0.85的要求值
解析:
问题1中,设计兼容性测试矩阵时,需要考虑浏览器名称、版本、操作系统、设备类型等因素,以确保系统能在各种环境下正常访问。
问题2中,针对客户交易功能设计了四个测试用例,覆盖了价格(正整数和非整数)和中介费比例(小数和非小数)的各种情况,以测试系统的稳定性和准确性。
问题3中,根据响应时间数据计算了Apdex指数,发现不满足要求。要提升Apdex指数,需要优化系统性能,降低响应时间,以满足用户的使用需求。
4、阅读下列说明,回答问题1至问题3,将解答写在答题纸的对应栏内。
【说明】
某软件的积分计算模块每天定时根据用户发布的文章数、文章阅读数来统计用户所获取的积分,用户分为普通用户和专家用户,两类用户具有不同的积分系数。
图4-1是该模块的类图,图中属性和操作前的“+”、“#”和“-”分别表示公有成员、保护成员和私有成员。

其中:
(1)类Expert重新实现了类User的方法calPoints( );
(2)方法calPoints( )根据每个用户每天的文章数(articleNum)、文章阅读数(readNum)来计算当天的积分;
(3)类System中的方法statPoints( )中首先调用了该类的方法load( ),获取本系统用户列表,然后调用了类User中的方法calPoints( )。
现拟采用面向对象的方法进行测试。
【问题1】(4分)
(1)图4-1所示的类图中,类System和User之间是什么关系?
(2)类Expert重新实现了类User的方法calPoints(),这是面向对象的什么机制?
【问题2】(6分)
类Expert中的方法calPoints()和getPoints()是否需要重新测试?
【问题3】(10分)
(1)请结合题干说明中的描述,给出测试类User方法calPoints()时的测试序列。
(2)从面向对象多态特性考虑,测试类System中方法statPoints()时应注意什么?
(3)请给出图4-1中各个类的测试顺序。
参考答案:
【问题1】
(1)关联关系
(2)多态机制
【问题2】
calPoints ()需要重新测试;
getPoints()无须重新测试。
【问题3】
(1)测试序列:User( )—setArticleNum( )——setReadNum( )——calPoints( ) ——getPoints( ) ;
(2) 在测试System中statPoints()方法时涉及到父类User、子类Expert中的calPoints()方法,即需要分别对各类的calPoints()方法设计测试用例进行测试。
(3) 先测试User类,然后Expert类,最后测试System类。
解析:
【问题1】
(1)题考察类图的关联关系,表示类与类之间的连接,它使得一个类知道另外一个类的属性和方法。关联可以使用单箭头表示单向关联,使用双箭头或者不使用箭头表示双向关联。
(2)题考察面向对象里多态的知识,一个基类的引用符,可以指向多种派生类对象,具有多种不同的形态,这种现象叫多态性。多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。
【问题2】
对父类中已经测试过的成员函数,有两种情况需要在子类中重新测试:
(1)继承的成员函数在子类中做了改动;
(2)成员函数调用了改动过的成员函数的部分;
本题中Expert的calPoints()重新修改了需要重新测试,而getPoints()没有变化,无须重新测试。
【问题3】
(1)方法calPoints()根据每个用户每天的文章数(articleNum)、文章阅读数(readNum)来计算当天的积分;
(2) 只需要在原有的测试分析基础上增加对测试用例中输入数据的类型的考虑;先测试基类,然后再分别依据输入数据设计不同的测试用例。
(3)各种关系的强弱顺序:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖。
5、阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某智能家居系统软件设计中,家庭内网节点软件设计包括协调器软件、现场采集/执行器(室内温湿度采集节点、模拟台灯控制节点、模拟雨水窗户监控节点、模拟空调控制节点和火灾监测节点)的软件设计。软件功能组成如图5-1所示。
整个系统中,协调器是整个家庭内网的核心和起点,负责管理各个节点设备与PC网关的信息和控制指令的传输。温湿度采集终端将传感器的数据以点播的形式发送给协调器,其他采集/控制节点以广播的形式与协调器进行数据的交换,协调器和PC机采用串口通信协议。协调器软件主要完成以下功能:
(1)创建信道,组建网络;如果失败,则继续创建;
(2)组建网络成功,则进行各层事件扫描;
(3)如果检测到应用层有事件,则转第(4)步,否则反复扫描各层事件;
(4)判断数据类型,如果是室内环境数据,则经串口发送到网关;如果是控制指令,则向控制节点发送控制指令;如果前面两者均不是,则不处理;
(5)继续扫描各层事件。
【问题1】(4分)
在本软件开发过程中,开发人员使用了基于模型的嵌入式代码生成技术,目前对模型验证最主要的方法是(1)。通过此方法验证后,利用此验证结果可对模型的覆盖率进行分析,模型的覆盖率类型一般包括(2)?(至少写出两种类型)。
(1)备选项:A.评审 B.分析 C.仿真 D.测试
【问题2】(10分)
为了测试此软件功能,测试人员设计了表5-1所示的测试用例,请填写该表中的空(1) ~ (5)。
表5-1 测试用例
【问题3】(6分)
覆盖率是度量测试完整性和测试有效性的一个指标。在嵌入式软件白盒测试过程中,通常以语句覆盖率、条件覆盖率和MC/DC覆盖率作为度量指标。
在实现第4条功能时,设计人员采用了下列算法:
if (( 数据有效==TRUE) && (数据类型==室内环境数据))
{ 数据经串口发送到网关; }
if ((数据有效==TRUE) && ( 数据类型==控制指令))
{ 向控制节点发送控制指令; }
请指出对上述算法达到100%语句覆盖、100%条件覆盖和100%MC/DC覆盖所需的最少测试用例数目,并填写在表5-2的空(1) ~ (3)中。
表5-2 测试覆盖用例统计表
参考答案:
【问题1】
C
条件覆盖、判定覆盖
【问题2】
(1)各层扫描 (2)室内环境数据
(3)模拟雨水窗户监控节点发送控制指令
(4)台灯 (5)空调控制指令
【问题3】
2
2
4
解析:
对于模型验证,仿真是一种动态验证方法,能够发现模型在运行过程中的问题。因此,在本软件开发过程中,开发人员使用基于模型的嵌入式代码生成技术时,对模型验证最主要的方法是仿真。模型的覆盖率类型一般包括条件覆盖和判定覆盖等,这些类型可以评估模型的测试全面性和质量。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!