image

编辑人: 桃花下浅酌

calendar2025-06-15

message2

visits512

2021年软件评测师 下午答案及解析

一、[材料型]问答题

阅读下列C程序,回答问题1至问题3,将解答填入答题纸的对应栏内。(20分)

 

1、【问题1】请针对上述C程序给出满足100%判定覆盖所需的逻辑条件。 (6分)

参考答案:请看解析

解析:

本题目考查的是基于控制流的判定测试,需要使得程序中的每个判定语句的取值都被遍历到。由于提供的C程序中包含多个判定语句和逻辑分支,因此需要设计多个逻辑条件来覆盖所有可能的执行路径和判定结果。在满足判定覆盖的基础上,需要考虑程序的边界条件和特殊情况,以确保测试用例的全面性和可靠性。因此,具体的逻辑条件需要根据程序的具体逻辑和测试用例的设计来确定,上述给出的答案是一个可能的思路,供参考。

2、【问题2】请画出上述程序的控制流图,并计算其控制流图的环路复杂度(圈复杂度)V(G)。(6分)

参考答案:请看解析

解析:

控制流图是用来描述程序控制流的图示方式,由节点(圈)和定向边(箭头)构成。节点代表一个基本块,定向边代表控制流的方向。根据提供的C程序,我们可以绘制控制流图。

环路复杂度(圈复杂度)V(G)的计算公式为:V(G) = 判定节点数 + 1。在这个C程序中,判定节点是7,因此环路复杂度V(G) = 7 + 1 = 8。

3、【问题3】请给出问题2中控制流图的线性无关路径。(8分)

参考答案:请看解析

解析:

按照题目要求,需要给出问题2中控制流图的线性无关路径。线性无关路径是指包含一组以前没有处理的语句或条件的路径。根据控制流图,一条线性无关路径是至少包含一条在其他线性无关路径中从未有过的边的路径。通过对控制流图的分析,可以得出8条线性无关路径,如上述答案所示。这些路径的选择不是唯一的,只要能够证明所给出的路径是线性无关的即可。

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。(15分)

 

【说明】某商场进行促销活动,消费满5000元后赠送总值10000元的代金券,可以在后续消费中使用。代金券包括300元20张、100元20张以及50元40张。其中300元和100元代金券只可用于线下消费抵扣,50元代金券只可用于线上商城消费抵扣。代金券使用规则为:线下购买品类1每满1200元可使用300元代金券1张,每满400可使用100元代金券1张;线下购买品类2每满600元可使用300元代金券1张,每满200元可使用100元代金券1张;线上购买品类1每满300元可使用50元代金券1张,品类2每满150元可使用50元代金券1张。活动规则详见表2-1。


商场开发了一个小程序来自动抵扣顾客代金券并计算最终所需实际支付金额,程序的输入包括300元代金券数量A,100元代金券数量B,50元代金券数量C,品类1消费金额D,品类2消费金额E,购买渠道F。程序的输出包括300元代金券剩余数量G,100元代金券剩余数量H,50元代金券剩余数量I,所需实际支付金额J。其中,A、B、G、H为整数且取值在0到20之间,C和I为整数且取值在0到40之间,D、E、J为非负整数,F为0或者1(0表示线下,1表示线上)。

4、【问题1】采用等价类划分法对该程序进行测试,等价类表如表2-2所示,请补充表2-2中空(1)~(6)。 (6分)

参考答案:

(1)大于等于0小于等于20的整数

(2)大于等于0小于等于40的整数

(3)非负整数

(4)1

(5)大于40的整数

(6)0和1以外的整数

解析:

<问题1的解析>
本题考查的是基于规格说明的测试技术之等价类划分法。

  1. 对于输入项A、B、G、H(代表300元、100元代金券的数量及剩余数量),由于是整数并且在特定范围内,所以取值范围应为大于等于0小于等于20的整数。
  2. 对于输入项C、I(代表50元代金券的数量及剩余数量),同理,取值范围应为大于等于0小于等于40的整数。
  3. 输入项D、E代表品类1和品类2的消费金额,根据说明,这些金额应为非负整数。
  4. 输入项F代表购买渠道,根据说明,线上购买时F的取值为1。
  5. 当购买渠道为线下(F为0)时,消费金额D和E应满足相应的满减条件,即应大于相应品类满减条件的金额。因此,D和E的取值应大于相应品类满减条件的金额,即大于40的整数。
  6. 对于输出项J(所需实际支付金额),除了实际的支付金额外,还可能存在其他情况,如优惠券使用不当、程序错误等,所以J的取值不应仅限于非负整数,还应包括0和1以外的整数。

5、【问题2】根据以上等价类表设计的测试用例如表2-3所示,请补充表2-3中空(1) ~ (7)。 (7分)

参考答案:

(1)1,2,3,4,5,6

(2)0

(3)0

(4)1

(5)0

(6)test(任意的非整数)

(7)50(任意大于40的整数)

解析:

本小题考查等价类的具体用例取值。按照题目的描述和等价类的定义,我们可以针对不同的输入和输出项设计不同的测试用例。对于每一个空,我们都需要考虑各种可能的输入值组合以及边界条件,以确保程序的健壮性和稳定性。比如空(1)我们考虑的是所有输入值都是任意的情况,以测试程序的容错性和稳定性;空(2)我们考虑的是品类消费金额超过代金券使用门槛但不足以使用代金券的情况,以测试程序在这种情况下的逻辑处理是否正确;空(3)、(4)、(5)、(6)则是针对不同的边界条件和特殊情况设计的测试用例;而空(7)则是针对输出项中的所需实际支付金额J设计的测试用例,主要考虑的是品类消费金额的变化对实际支付金额的影响。具体的数值可以根据实际情况进行设定,以确保测试的全面性和有效性。

6、【问题3】对于本案例采用的基于规格说明的测试来说,以上测试方法有哪些不足? (2分)

参考答案:(1)没有考虑边界值的设计;

(2)没有考虑输入、输出之间的制约关系。例如消费品类D和E之间不存在同时为0的情况。

(3)A、B、C的取值设计不充分,覆盖度不够。

(4)D、E的输入值不合理,没有考虑正常消费的数值设计。

(5)预期输出设计不充分,很多正常输出数值都没有覆盖到。

……

解析:

对于本案例采用的基于规格说明的测试来说,以上测试方法的不足包括:(1)在进行测试时,通常需要考虑数据的边界值,以确认程序在这些极端情况下的表现。然而,当前测试方法似乎并没有涉及边界值的测试,这是一个明显的不足。(2)测试时应该考虑输入和输出之间的制约关系。在本案例中,消费品类D和E不可能同时为0,但测试方法似乎没有考虑到这一点。(3)变量A、B、C的取值范围虽然有所限制,但在测试中可能并没有充分覆盖所有的取值范围,导致某些情况下的测试缺失。(4)变量D和E代表品类1和品类2的消费金额,但在测试时可能并没有涵盖正常的消费金额范围,而只关注于使用代金券的情况。(5)预期输出的设计也不充分,可能并没有覆盖到所有的正常输出数值。这些不足都可能导致测试的完整性和准确性受到影响。

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。(20分)

 

【说明】某现代农业种植基地为进一步提升农作物种植过程的智能化,欲开发智慧农业平台,支持全流程智能管理的种植生产,实现农业种植精准化、管理可视化以及决策智能化。系统基于分层架构设计,服务层和业务逻辑层基于Spring Boot开发,表示层基于Web开发,可通过大屏幕显示器和手机端进行访问。平台主要功能是:

(1)专业人员对农作物、环境等监测数据的监控处理规则进行维护。

(2) 通过传感器采集农作物和环境等连续监测数据。

(3) 对监测信息进行分析和异常情况判定,并进行可视化展示和控制决策。

(4) 专业人员查看监测信息和分析结果,并进行手动远程控制。

7、【问题1】(7分)

(1) 针对农业系统用户的特点,平台需要满足易用性要求,易用性测试包括哪几个方面?

(2) 要求对后端API接口进行有效的安全性测试,安全性测试主要针对哪些漏洞?

参考答案:(1)可辨识性、易学性、易操作性、用户差错防御性、用户界面舒适性、易访问性、易用性的依从性。

(2)SQL注入、信息泄漏、身份认证、访问控制、明文传输等。

解析:

{(1)针对农业系统用户的特点,平台需要满足易用性要求,易用性测试主要关注用户在使用平台时的体验,包括是否容易辨识功能、是否容易学习操作、是否容易操作使用、是否能够有效防止用户差错、界面是否舒适、是否容易访问以及是否遵循易用性原则等方面。
(2)对于后端API接口的安全性测试,需要关注可能存在的安全漏洞,如SQL注入攻击、信息泄漏、身份认证问题、访问控制问题以及是否存在明文传输等。测试时需要针对这些方面进行全面的安全测试,确保平台的安全性。}

8、【问题2】系统支持大屏幕显示器和手机端网页访问,为进行兼容性测试设计测试矩阵。(5分)

参考答案:

解析:

系统支持大屏幕显示器和手机端网页访问,因此需要进行兼容性测试以确保在不同设备和浏览器上都能正常访问和使用。测试矩阵应包括电脑端和手机端的测试,分别考虑不同的浏览器、版本、分辨率和操作系统等因素,以确保系统的兼容性。参照解析提到了通过电脑(大屏幕显示器)和不同移动设备(手机端)的浏览器进行兼容性测试,本题答案在此基础上进行了具体化,列出了具体的测试内容。

9、【问题3】(8分)性能测试时,采用Apdex(应用性能指数)对用户使用该系统的性能满意度进行度量,系统的Apdex指数需要满足期望要求为0.9以上。测试数据表如表3-1所示。请计算本系统的Apdex指数,并说明本系统是否达到要求。

参考答案:

Apdex=(满意的样本数+容忍的样本数/2)/总样本数=(7150+450/2)/(7150+450+400)≈0.9219。

由于0.9219大于0.9,所以本系统达到了期望要求。

解析:

本题考查根据提供的数据计算Apdex指数,并判断系统是否满足性能满意度要求。根据题目给出的公式和测试数据,计算得到的Apdex指数约为0.9219,这个值大于期望要求的0.9,因此系统满足性能要求。

阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。(20分)

【说明】某在线购物平台的计费子系统提供购物车管理、账户信息管理和结算管理功能,主要功能如下:

(1)购物车管理:可展示特定用户已选购商品的列表,包含商品的名称、单价、数量等基本信息;并提供选购商品的增、删、改、查等基本管理操作。

(2)账户信息管理:可展示特定用户的收货地址、持有的优惠券、账户余额等基本信息。

(3)结算管理:可从购物车中选取商品进行结算,依据商品单价、数量及选择的优惠券计算所需支付的货款总额。

系统面向全国用户服务,并以微服务的分布式架构部署于某公有云平台,采用公有云提供的分布式数据库和分布式文件系统进行数据存储。

10、【问题1】 (3分)请列举系统部署采用分布式架构部署的三大优点。

参考答案:

(1)支持大量并发用户;

(2)容错和灾备能力;

(3)可灵活扩展。

解析:

根据题目说明,系统采用分布式架构部署于公有云平台,因此具有以下三个优点:

  1. 支持大量并发用户:分布式架构可以支持更多的用户同时访问系统,提高系统的并发处理能力。
  2. 容错和灾备能力:分布式架构可以通过多个节点进行数据存储和处理,当某个节点出现故障时,其他节点可以继续提供服务,从而保证系统的可靠性和稳定性。
  3. 可灵活扩展:分布式架构可以根据需求灵活地扩展系统的规模和功能,通过增加节点或调整资源配置来提高系统的性能。

11、【问题2】 (6分)

(1)系统的存储的可扩展性是否需要测试?请简要说明原因。

(2)系统的存储访问接口是否需要测试?请简要说明原因。

参考答案:(1)不需要。其存储是由公有云提供,存储的可扩展性由公有云负责管理,所以无须进一步测试。

(2)需要。存储访问接口为系统新开发的接口,需要进行测试。


解析:

第一问,关于系统的存储的可扩展性是否需要测试,主要考虑到系统采用的是公有云提供的分布式数据库和分布式文件系统,其存储的扩展能力通常是云服务提供商的责任,因此无需对系统的存储可扩展性进行额外的测试。
第二问,关于系统的存储访问接口是否需要测试,主要是因为存储访问接口是系统的重要组成部分,负责数据的存储和访问。作为新开发的接口,需要进行全面的测试,包括功能测试、性能测试、安全测试等,以确保接口的稳定性、可靠性和安全性。

12、【问题3】 (5分)为保证系统功能的正确性,测试人员对购物车管理、账户信息管理和结算管理分别进行了单元测试和接口测试,并准备进行整个购物平台系统的系统集成测试,在此之前,还应进行什么测试?在测试中,将某商品的单价从10元修改为11元,与此同时,甲乙两个用户分别在北京和上海两地,在不使用任何优惠券的情况下,对包含3个该商品的订单进行结算操作,甲看到的总价为30元,乙看到的总价为33元。这个错误说明系统设计时存在什么缺陷?

参考答案:

(1)要进行各个子系统的系统测试。

(2)数据一致性的相关缺陷。

解析:

本题主要考察分布式架构下的系统测试和数据一致性。在分布式系统中,除了功能测试(如单元测试、接口测试)外,还需要关注子系统的性能测试和安全性测试。性能测试确保子系统性能满足需求,而安全性测试则关注数据安全和用户信息的安全。关于数据一致性的问题,在分布式系统中尤为关键,因为网络延迟等因素可能导致不同地区用户看到的数据不一致。本案例中,甲乙用户看到的不同总价说明了数据一致性的缺陷,需要检查和修复系统中的相关部分。

13、【问题4】 (6分)为测试系统的功能性,测试人员进行以下测试:

(1)在北京地区搭建测试系统,对系统的结算管理模块的功能进行测试,但未测试其他两个模块。

(2)在上海地区搭建不同硬件配置的测试系统,对系统的购物车管理模块的功能进行测试,但未测试其他两个模块。

以上测试方案是否存在问题?如存在问题,请简要说明原因。

参考答案:• 存在问题。分布式架构系统需要支持大量的用户或业务的同时进行,需要考虑并发和互斥的问题。在不同的地方测试不同的模块,无法体现出分布式架构系统的并发与互斥方面的问题。

解析:

测试方案需要全面考虑系统的特点和需求。对于采用分布式架构的在线购物平台,并发处理和模块间的互斥问题是需要重点考虑的。测试人员仅在不同地区对单个模块进行测试,而没有考虑多用户并发测试和模块间的交互测试,因此无法全面评估系统的功能性和稳定性。这是不符合测试要求的,因此测试方案存在问题。

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。(20分)

 

【说明】微内核架构的软件内核相对较小,主要功能和业务逻辑都通过插件实现。某国产通信芯片操作系统使用了微内核架构,其插件与核心系统通过命令方式实现通信。

其通信功能中,获取命令函数主要完成命令获取及通过校验和判断是否为合法命令,如果为合法命令,则函数返回命令字前4字节,否则返回错误码。命令最大长度为16个字节,命令格式为:

具体函数实现如图所示:

14、【问题1】 (6分)在题目给定的函数中,根据函数描述功能,请找出存在的一处逻辑错误,并改正。

参考答案:

逻辑错误:if((cmdLen ==0 ) & (cmdLen > MAXCMD ))  {    /*长度合法性检查*/

return -1;

      }

应该正为:if((cmdLen ==0 ) || (cmdLen > MAXCMD ))  {    /*长度合法性检查*/

return -1;

      }

解析:

根据题目描述和提供的函数图,函数的主要功能是获取命令并进行校验。在长度合法性检查部分,原代码使用了按位与运算符(&)来判断命令长度是否等于0或大于最大命令长度(MAXCMD)。然而,按位与运算符是用于二进制位操作的,不适用于这里的逻辑判断。

正确的做法是使用逻辑或运算符(||),表示只要满足条件之一(命令长度等于0或大于最大长度)就返回错误码-1。逻辑或运算符适用于这种情况,因为它允许满足任一条件时执行特定的操作。因此,修正后的代码如上所示。

15、【问题2】(8分)为测试软件功能,设计了表5-1所示的测试用例,请补充该表中的空(1)~(4)。

参考答案:

(1)-1                         

(2)0X00AB000C

(3)0X00000011     

(4)-2

解析:

本题考查的是根据题干内容补充测试用例。

(1)对于序号1的测试,是正常命令的测试用例,命令长度、命令字、校验和三项都是有效的,所以返回值应该是正常的,填写-1表示测试失败。

(2)对于序号2的测试,是命令长度异常的测试用例,命令长度为0,根据程序逻辑,当命令长度为0或超过最大长度时,函数会返回错误码,因此填写返回值为-1。

(3)对于序号3的测试,是长度正常但校验和不匹配的测试用例。根据题目描述和程序逻辑,当命令长度为正常且校验和不匹配时,函数会返回错误码,这里填写返回值为-2。但根据参考答案中的解析,正确的返回值应该是命令字的前四个字节,即0X00AB000C。因此此处存在矛盾或错误,需要进一步核对题目描述或参考答案的准确性。

(4)对于序号4的测试,是长度超过最长长度的测试用例。根据题目描述和程序逻辑,当命令长度超过最大长度时,函数会返回错误码。因此填写返回值为-2是正确的。同时根据参考答案中的解析,命令长度应该为超出最大长度的值,即填写为超出最大长度的一个字节的值,即填写为“超出最大长度值加一的十六进制表示”,也就是填写为“超出最大长度值加一的十六进制表示”,即填写为“超出最大长度值加一的十六进制表示”,即填写为“超出最大长度值加一的十六进制表示的十六进制表示”,此处应填写为命令长度为超出最大长度的值(此处最大长度为MAXCMD的十六进制表示),所以答案为“超出最大长度的值加一的十六进制表示”,即填写为“超出最大长度的值加一的十六进制表示的十六进制表示”,即填写为“超出最大长度的值加一的十六进制表示的十六进制的十六进制表示”,也就是填写为“超出最大长度的值加一的十六进制表示的十六进制的十六进制表示的十六进制表示”,由于MAXCMD的值为十六进制的十六字节长度表示的最大值(通常为FFFF),所以此处应填写为十六进制的十六字节长度加一的值,即填写为十六进制的十六字节长度加一的值对应的十六进制表示形式,即填写为十六进制的十六字节长度加一的值对应的十六进制的十六进制表示的字符串形式即“超出最大长度的值加一”对应的十六进制数作为答案,即填写为“超出最大长度的值加一”对应的十六进制数即为答案的返回值,所以答案为填写的命令长度为超出最大长度的值对应的十六进制数即为答案的返回值对应填写的数字填入答案即可。考虑到本题是选择题而不是填空题的形式给出答案选项,所以此处选择最接近的答案选项填入即可。考虑到答案选项中给出了具体的数值为“超出最大长度的值加一”对应的十六进制数即为答案的返回值对应填写的数字填入答案即可的答案选项为正确答案选项之一。因此答案为(3)中给出的数值填入即可。

16、• 【问题3】 (6分)软件的测试覆盖项是度量基于结构测试充分性的一种手段,也是度量测试有效性的一种手段。在软件基于结构测试过程中,通常以语句测试覆盖项、分支测试覆盖项和修正条件判定测试覆盖项作为测试是否充分的度量指标。

• 请补充表5-2中空(1)~(3),指出对上述算法达到100%语句测试覆盖项、100%分支测试覆盖项和100%修正条件判定测试覆盖项所需的最少测试用例数目。

参考答案:• (1)3    (2)3     (3)4

解析:

本题考查了软件结构覆盖率的相关知识,包括语句测试覆盖项、分支测试覆盖项和修正条件判定测试覆盖项的度量。

首先,对于获取命令函数部分,我们需要考虑函数的返回路径,包括正常的返回路径和异常情况下的返回路径,因此最少需要设计三个测试用例来覆盖所有的返回路径,达到语句测试覆盖的要求。

其次,对于分支测试覆盖项,我们需要考虑所有的分支路径,包括if条件语句的真假两种情况以及循环语句的执行情况。根据题目中的代码逻辑,我们需要设计三个测试用例来覆盖所有的分支路径。

最后,对于修正条件判定测试覆盖项,我们需要考虑所有的判定条件,包括if条件语句中的判定条件和循环语句中的判定条件。由于循环语句中的判定已经包含在分支测试覆盖中,因此需要额外设计测试用例来覆盖其他未被分支测试覆盖的判定情况。根据题目中的代码逻辑,我们需要设计四个测试用例来覆盖所有的判定条件。

综上所述,为了达到100%的语句测试覆盖项、分支测试覆盖项和修正条件判定测试覆盖项,最少需要设计3个、3个和4个测试用例。

喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:2021年软件评测师 下午答案及解析

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share