2020年下半年软件评测师下午真题
第 1 题
阅读下列C程序,回答问题1至问题3。
【C程序】
【问题1】 (4分)
请针对上述C程序给出满足100%DC (判定覆盖)所需的逻辑条件。
第10章软件评测师 下午试题分析与解答
【问题2】(8分)
请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。
【问题3】(8分)
请给出问题2中控制流图的线性无关路径。
答案与解析
- 试题难度:一般
- 知识点:下午应用题>基于结构的测试
- 试题答案:
【问题1】
【问题2】控制流图如下图所示。
环路复杂度V(G)=8。
【问题3】
线性无关路径1、2、11、12
1、2、3、11、12
1、2、3、4、11、12
1、2、3、4、5、7、12
1、2、3、4、5、6、7、12
1、2、3、4、5、6、8、2…
1、2、3、4、5、6、8、9、2…
1、2、3、4、5、6、8、9、10、2… - 试题解析:
【问题1】
判定覆盖(DC):设计足够的测试用例,使得使程序中的每个判定至少都获得一次“真值”或“假值”。
本题中有4个判定:for(i=0;i=tn ||table[idx]==0xff);if(i&3);if(op-ob 要满足100%的DC,就需要使得4个判定的结果为真、为假都出现过一次,所以需要8个逻辑条件:
iidx>=tn ||table[idx]==0xff)为真、为假
i&3为真、为假
op-ob【问题2】
控制流图是描述程序控制流的一种图示方法。其基本符号有圆圈和箭线:圆圈为控制流图中的一个结点,表示一个或多个无分支的语句;带箭头的线段称为边或连接,表示控制流。基本结构如下所示:
控制流程图的环路复杂性 V(G)等于:
(1)控制流程图中的区域个数。
(2)边数-结点数+2。
(3)判定数+1。
V(G)=8
【问题3】
线性无关路径是指包括一组以前没有处理的语句或条件的一条路径。从控制流图来看,一条线性无关路径是至少包含有一条在其他线性无关路径中从未有过的边的路径:
本题由于主干有分支,所以线性无关路径可能有多种组合。1、2、11、12
1、2、3、11、12
1、2、3、4、11、12
1、2、3、4、5、7、12
1、2、3、4、5、6、7、12
1、2、3、4、5、6、8、2…
1、2、3、4、5、6、8、9、2…
1、2、3、4、5、6、8、9、10、2…
第 2 题
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某航空公司考虑到在今年特殊形势下,很多会员无法通过搭乘航班延续之前的会员等级,特推出了“回望升级”活动。对2017年1月1日至2019年12月31日三个自然年度任意连续12/24/36 个月机票消费达到一定金额时,奖励会员相应等级。
活动规则为:任意连续12/24/36个月机票消费金额达到人民币2.5/4.75/6.75万元及以上,给予银卡会员等级;任意连续12/24/36个月机票消费金额达到人民币5/9.5/13.5万元及以上,给予金卡会员等级;任意连续12/24/36 个月机票消费金额达到人民币15/28.5/40.5 万元及以上,给予白金卡会员等级。活动规则详见表2-1。
此外,为了鼓励在官网和官方App购票,针对不同的购票渠道,有不同的奖惩系数。官网购票不奖励不惩罚,官方App购票消费金额按1.2倍计算,第三方购票消费金额按0.8倍计算,详见表2-2。
航空公司开发了一个程序来计算会员在该活动后的奖励等级,程序的输入包括会员在2017年1月1日至2019年12月31日中任意连续12个月最大消费金额A (单位:万元),任意连续24个月最大消费金额B (单位:万元),36个月消费金额C (单位:万元),购票渠道代码D,程序的输出为本次活动奖励等级L。其中,A、B、C为非负浮点数最多保留4位小数,D为正整数且取值为1、2、3之一,L为字母M、S、G、P中之一。
【问题1】 (4分)
采用等价类划分法对该程序进行测试,等价类表如表2-3所示,请补充表2-3中空(1)~(4)。
【问题2】(9分)
根据以上等价类表设计的测试用例如下表所示,请补充表2-4中空(1) ~ (9)。
【问题3】(2分)
对于本案例的黑盒测试来说,以上测试方法有哪些不足?
答案与解析
- 试题难度:一般
- 知识点:下午应用题>基于规格说明的测试技术
- 试题答案:
【问题1】
(1)最多4位小数的非负浮点数
(2) 多于4位小数的非负浮点数
(3)非正整数
(4)除1、2、3之外的其他正整数
【问题2】
(1) 1,2,3
(2) M
(3) N/A
(4) 7,2,3
(5)任意负浮点数,如-1
(6)任意多于4位小数的非负浮点数,如0.12345
(7)任意非整数,如A
(8)任意非正整数,如0
(9)除1、2、3之外的其他任意正整数,如4
【问题3】
(1)没有考虑边界值;
(2)没有考虑对输出进行等价类划分;
(3) ..... - 试题解析:
【问题1】
划分等价类的6条原则:
(1)在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类。
(2)在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类。
(3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。
(4)在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。
(5)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
(6)在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则再将该等价类进一步地划分为更小的等价类。
题干中“A、B、C为非负浮点数最多保留4位小数,D为正整数且取值为1、2、3之一”结合表2-3来分析;A、B、C的约束相同,在表2-3中A、B、C分别缺失的部分不相同,所以综合表2-3,不难得出:(1)最多4位小数的非负浮点数;(2)多于4位小数的非负浮点数;对于D,题干描述为:D为正整数且取值为1、2、3之一,所以(3)非正整数;(4)除1、2、3之外的正整数
【问题2】
测试编号1:A、B、C的取值都为0,覆盖的等价类为1、2、3,结合输出会员代号应为M
测试编号5:A输入的值为A,B、C的取值都为0,结果为N/A,覆盖的等价类为7、2、3
测试编号6: 覆盖的等价类为8、2、3,因此A的输入值应该为:负浮点数,如-1.1
测试编号7: 覆盖的等价类为9、2、3,因此A的输入值应该为:多于4位小数的非负浮点数,如1.12345
测试编号14: 覆盖的等价类为1、2、3、16,因此D的输入值应该为:非整数,如:A,1.111
测试编号15: 覆盖的等价类为1、2、3、17,因此D的输入值应该为:非正整数,如-1
测试编号16: 覆盖的等价类为1、2、3、18,因此D的输入值应该为:除1、2、3之外的其他正整数,如4,5
【问题3】
本题中使用了等价类划分法,只是对输入进行等价类划分,输出都是M,没有考虑其他输出值;
本题中没有考虑边界取值,而错误往往发生在边界的取值上,因此需要适当考虑采用边界值分析法适当补充测试用例
第 3 题
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
为了应对疫情防控下的学生返校管理,某高校管理平台新开发紧急疫情管控系统,以有效管理师生员工的活动及身体情况。该系统提供Web和微信小程序两种不同的访问途径。系统主要功能是:
(1)专职管理人员对基础信息管理和设置。
(2)师生员工每日信息申报,返校、离校活动申报,所在位置通过定位实时获取。
(3)对各类人员的活动申请进行审批。
(4)根据相关审批结果进行门禁控制。
(5)各级管理人员可对所辖部门的人员申报情况进行查询和统计。
【问题1】 (7分)
(1)信息申报采用表单进行实现,输入测试需要测试哪几个方面?
(2)什么情况下表单中输入的内容可能会传到后台引起安全问题?如何设计测试用例进行输入测试?
【问题2】(6分)
系统前端采用HTML5实现,以使用户可以通过电脑和不同移动设备的浏览器进行访问。设计兼容性测试矩阵,对系统兼容性进行测试(不考虑机型)。
【问题3】(7分)
申报审批有时间段约束,性能测试时,采用Apdex (应用性能指数)对用户使用该系统的性能满意度进行度量,系统的Apdex指数需要满足基本要求为0.7以上,满足期望要求为0.85以上。
Apdex量化时,对应用户满意度分为三个区间,通过响应时间阈值(Threshold) T来划分,Apdex的用户满意度区间如下:
满意: (0, T],让用户感到很愉快
容忍:(T, 4T],慢了一点,但还可以接受,继续这一应用过程
失望:高于4T,太慢了,受不了了,用户决定放弃这个应用
Apdex的计算如下:
Apdex =(满意的样本数+容忍的样本数/2)/总样本数
请计算本系统的Apdex指数,并说明本系统是否达到要求。
答案与解析
- 试题难度:一般
- 知识点:第1版本考点>web应用测试
- 试题答案:
【问题1】
(1)表单输入测试需要验证:输入域、错误输入是否有错误提示、必填项和选填项。
(2) Web应用系统在某些情况下,接收页面上传的内容,并作为新页面的内容,若输入的内容中输入某些功能符号可能会传到后台弓|起安全问题。在测试设计时,在输入域包含HTML,如:<HTML>,或脚本,如: <SCRIPT>,或SQL功能符号,如:’、2020'OR'1'='1等, 以测试是否存在XSS脚本和SQL注入等安全问题。
【问题2】
【问题3】Apdex指数= (满意:小于T的样本数+容忍:T~4T的样本数/2)/总样本数
= (150 + (40/2))/220
=0.77
0.77大于0.7,小于0.85,所以该系统的用户满意度达到基本要求,没有达到期望要求。 - 试题解析:
【问题1】
表单测试结合本题来看应为:每个字段的验证;字段的缺省值;表单中的输入;错误提示;必填/选填等方面进行测试
表单中输入的内容在特定的情况下会传给数据库,当这些信息中含有SQL注入式攻击、XSS攻击信息时,可能引发安全方面的问题。因此,在进行表单测试时需要考虑SQL注入式攻击检测和XSS攻击的检测,常见的主要特征为--、1OR‘1’=‘1’、等
【问题2】
本题要求对不同电脑和不同移动设备等浏览器,来考虑兼容性测试(不考虑机型)
所以兼容测试中,应该包含操作系统、浏览器(不同版本)、微信(不同版本)
【问题3】
Apdex量化时,对应用户满意度分为三个区间,通过响应时间阈值(Threshold) T来划分,Apdex的用户满意度区间如下:
满意: (0, T],让用户感到很愉快
容忍:(T, 4T],慢了一点,但还可以接受,继续这一应用过程
失望:高于4T,太慢了,受不了了,用户决定放弃这个应用
Apdex的计算如下:
Apdex =(满意的样本数+容忍的样本数/2)/总样本数
结合题干将相关数据带入公式:Apdex =(150+40/2)/220=0.77<0.85
因此没有到达预期
第 4 题
阅读下列说明,回答问题1至问题3,将解答写在答题纸的对应栏内。
【说明】
为了有效控制疫情,需要记录所有人最后一次出行的信息。其中:
(1)类Travel 记录了一次旅行的基本信息,包括出发地(Source)、 目的地(Des)、15日内是否有境外旅行史(OverSeas) 和15日内是否去过高风险疫区(HighDanArea)。
(2)类HighTrain 和AirPlane分别表示高铁旅行和飞机旅行,这两个类继承了类Travel的属性和方法。HighTrain 定义了自己的属性车厢号(CaseNo)和座位号(SeatNo)。AirPlane定义了自己的属性座位号( SeatNo)。
(3)函数checkIso调用Travel 的相关方法读取旅行者的出发地、目的地以及15日内是否有境外和高风险区域的信息,判断该旅行者是否需要被隔离。
现拟采用面向对象的方法进行测试。
【问题1】(9分)
(1)面向对象的测试分为哪几个阶段?
(2)类Person 和Travel之间是什么关系?
(3)该关系是否影响测试?
【问题2】(6分)
为了更方便函数checkIso的实现,程序员在Person类中增加了属性IsIso和方法checkDan,具体实现如下:
方法checkDan中判断该旅行者是否需要被隔离,并且把结果写入IsIso,在checkIso中直接读取旅行者的IsIso属性值就可以得出结论。
(1)这种实现方法破坏了面向对象的哪种机制?
(2)这种问题的测试需要在面向对象测试的哪个阶段实施?
【问题3】(5分)
请给出各个类的测试顺序。
答案与解析
- 试题难度:一般
- 知识点:第1版本考点>面向对象测试
- 试题答案:
【问题1】
(1)面向对象分析的测试,面向对象设计的测试,面向对象编程的测试,面向对象单元测试,面向对象集成测试,面向对象确认和系统测试。(每个0.5 分)
(2)关联关系。
(3)影响测试。
【问题2】
(1)破坏了封装机制。
(2)在面向对象编程的测试中进行。
【问题3】
Travel-→HighTrain,AirPlane- → Person-→main - 试题解析:
【问题1】
面向对象测试分:面向对象分析的测试、面向对象设计的测试、面向对象编程的测试、面向对象单元测试、面向对象集成测试、面向对象确认和系统测试
在程序示例中,Person类调用了Travel类作为其成员变量,并无其他的关系,因此Person类与Travel类之间应为关联关系
由于Person类调用了Travel类,如果Travel类存在问题,而先测试Person类,同样也会导致Person类产生问题,所以测试Person类之前应该先测试Travel类
【问题2】
在需要修改调用类的属性时应该采用SET方法,直接修改成员属性,破坏了封装机制。
应在面试对象编程阶段进行测试
【问题3】
本题中:Travel与HighTrain、AirPlance是继承关系,所以先测试Travel类,在测试HighTrain、AirPlance(两个先后顺序可以调整);由于Person调用了Travel作为其成员变量,因此Person应该在Travel类及其子类测试后测试;最后测试main。
第 5 题
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某测湿仪用于测量目标物体的相对湿度。该仪器中软件主要完成AD数据采集,并通过数学运算将数据转换为湿度值,在显示终端显示。软件主要包括主程序模块、测湿程序模块、显示程序模块、报警程序模块等。
程序的主要功能说明如下:
1.主程序模块判断是否存在按键按下的情况,如果没有按键按下,继续执行1;否则执行2。
2.如果按下键为“设置键”,则通过“+”键每次增加1或通过“_”键每次减少1,设置最高湿度报警值(默认值为70), 再次按下“设置”键进行确认,并通过“+”键或“_”键设置最低湿度报警值(默认值为40),再次按下“设置”键进行确认后执行1。
3.如果按下键为“测湿”键,则读取测湿程序模块送回的目标湿度信息。
4.将读取的湿度信息与设定的最大值与最小值比较,如果大于等于最大值或小于等于最小值,则执行5;否则向显示程序模块发送显示的湿度信息,并执行6。
5.调用报警处理程序,并向显示程序模块发送报警信息。
6.显示程序模块显示湿度过高报警或湿度过低报警或者湿度信息。
【问题1】(8 分)
为了测试软件功能,测试人员设计了表5-1所示的测试用例。假定开始执行测试用例时,最高湿度和最低湿度报警值为默认值,请填写该表中的空白(1) ~ (8), 将答案填写在答题纸的对应栏中。
【问题2】(6分)
软件的结构覆盖率是度量测试充分性的一种手段,也是度量测试有效性的一-种手段。在嵌入式软件白盒测试过程中,通常以语句覆盖率、分支覆盖率和MC/DC覆盖率作为度量指标。在实现题目说明的第4条“判断湿度是否在正常范围”的功能时,设计人员采用了下列算法:
请完成表5-2中的(1) ~ (3)空白,指出对上述算法达到100%语句覆盖、100%分支覆盖和100%MC/DC覆盖所需的最少测试用例数目。请将答案填写在答题纸的对应栏中。
【问题3】(6分)
嵌入式软件中通常使用注释率来衡量程序的可维护性,嵌入式软件的注释率一般要求不小于(1)。
本项目在开发过程中通过测试发现了11个缺陷,在实际使用中用户反馈了1个缺陷,缺陷探测率(DDP)为(2)( 结果保留小数点后1位)。
答案与解析
- 试题难度:一般
- 知识点:下午应用题>基于结构的测试
- 试题答案:
【问题1】
(1) 63
(2) 50
(3) 55
(4)被测目标容器湿度为52
(5)湿度过高报警信息
(6) 51
(7)湿度过低报警信息
(8) 50
【问题2】
(1) 3
(2) 3
(3) 3
【问题3】
(1) 20%或1/5 或等效解答
(2) 91.7% - 试题解析:
【问题1】
(1)依据题干描述,默认最高湿度为70,每次按下 - 少1,共计按了7次,所以最高湿度设置值为70-7=63
(2)依据题干描述,在表序号1之后,按下设置变为设置最低湿度值,默认最低湿度为40,连续按10次+(每次按+增加1)所以这时最低湿度应该为40+10=50
(3)依据题干描述,按下测湿键,则读取测湿模块送回目标湿度信息;结合题干输出值为55,在前面设置的合理范围,应该是将测湿仪置湿度为55的目标容器
(4)依据题干描述,再结合表序号3的信息可以得出输出为:屏幕显示被测目标容器湿度为52
(5)依据题干描述,再结合表序号1设置的最高湿度为63,题干中达到了63,因此应按说明4、5综合处理,即触发边界值报警处理,再集合表中表序号6的信息提示,应输出:屏幕显示湿度过高报警信息
(6)依据题干描述,51属于正常范围,再结合表序号3,应该将测湿仪置入湿度为51的目标容器
(7)依据题干描述,结合表序号2的设置,最低值为50,50已经达到了最低边界,再结合表序号8的信息,因此应输出:屏幕显示湿度过低报警信息
(8)依据题干描述,结合表序号2、7的信息,应该设置的值小于、等于50,就触发最低边界报警。
【问题2】
语句覆盖(SC):使被测试程序中每条语句至少执行一次
判定覆盖(DC):使程序中的每个判定至少都获得一次“真值”或“假值”
修正条件判定覆盖要求在一个程序中每一种输入输出至少得出现一次,在程序中的每一个条件必须产生所有可能的输出结果至少一次,并且每一个判定中的每一个条件必须能够独立影响一个判定的输出,即在其他条件不变的前提下仅改变这个条件的值,而使判定结果改变,其测试用例数一般为条件数+1~条件数*2的范围内。
本题的程序控制图为:从上述控制流程图,可以看出语句覆盖需要3个测试用例分别走不同的路径
从上述控制流程图,由于第一个判断为假时,会覆盖第二判断,所以综合起来所以需要3个测试用例,1个使判断1为真,1个使判断1为假,判断2为真;1个使判断1为假,判断2为假
MCDC判断1有两个条件目标物体湿度<高湿报警值、目标物体湿度>低湿报警值;判断2只有一个条件目标物体湿度>=高湿报警值;综合分析如下表
因此需要3个测试用例
【问题3】
嵌入式软件的注释率一般不小于代码行数的20%
缺陷探测率(DDP)=测试发现的软件问题/软件总的发现问题
11/(11+1)=91.7%