一、问答题
1、阅读下列Java程序,回答下列问题。
1、请简述基本路径测试法的概念。(2分)
2、请画出上述程序的控制流图,并计算其控制流图的环路复杂度vfG.。(8分)
3、请给出问题2中控制流图的线性无关路径。(5分)
参考答案:1、基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。
2、控制流图
环路复杂度V(G)=5
3、线性无关路径:
1.1-2-4-5-6-8-9-10
2.1-2-4-5-7-8-9-10(1-2-4-5-7-8-10)
3.1-2-4-5-6-8-10(1-2-4-5-7-8-10)
4.1-2-3-4-5-6-8-9-10(1-2-3-4-5-7-8-9-10,1-2-3-4-5-6-8-10,1-2-3-4-5-7-8-10)
5.1-2-3-8-9-10(1-2-3-8-10)
解析:
第一题考查了基本路径测试法的概念。基本路径测试法是一种在程序控制流图的基础上,通过分析控制结构的环路复杂性来导出基本可执行路径集合,从而设计测试用例的方法。
第二题要求绘制控制流图并计算其环路复杂度。控制流图是描述程序控制流的图示方式,由节点和定向边构成。根据提供的代码片段,需要按照参考解析中的描述绘制控制流图。环路复杂度V(G)等于控制流图中判定节点的个数加1。在这个例子中,判定节点个数为4,所以V(G)=5。
第三题要求给出控制流图中的线性无关路径。线性无关路径是包含至少一条在其他线性无关路径中从未有过的边的路径。根据控制流图和环路复杂度,可以导出5条线性无关路径,如答案中所列。
2、阅读下列说明,回答下列问题。
[说明]
某商店的货品价格(P)都不大于20元(且为整数),假设顾客每次付款为20元且每次限购一件商品,现有一个软件能在每位顾客购物后给出找零钱的组合(找给顾客货币张数最少)。
假定此商店的找零货币面值只包括:10元(N10)、5元(N5)、1元(N1)3种。
4、请采用等价类划分法为该软件设计测试用例(不考虑P为非整数的情况)并填入到下表中。(<<N1,2>>表示2张1元,若无输出或输出非法,则填N/A. (8分)
5、请采用边界值分析法为该软件设计测试用例。(6分)
6、请给出采用决策表法进行测试用例设计的主要步骤。(6分)
参考答案:
问题1:
问题2:
答案:0、1、4、5、6、9、10、11、14、15、16、19、20、21
问题3:
答案:
(1)确定规则的个数:假如有n个条件,每个条件有两个取值(0,1),则有2的n次方种规则。
(2)列出所有的条件桩和动作桩。
(3)填入条件项。
(4)填入动作项:制定初始判定表。
(5)简化:合并相似规则(相同动作)。
解析:
问题4解析:采用等价类划分法设计测试用例时,首先确定输入条件的等价类。由于商品价格P的范围是0-20,且每次购物只能购买一件商品,因此可以将P的等价类划分为多个范围,如0、1~4、5等。对于找零组合,根据货币面值的不同组合进行测试用例设计。例如,当P为某个特定值时,应给出相应的找零组合方式。问题中的说明规定了找零货币的面额为三种情况,因此需要对每个范围内的值进行测试,以确定正确的找零组合方式。对于无效的情况或无法找零的情况,填写N/A。问题5解析:采用边界值分析法设计测试用例时,主要关注输入或输出的边界值。对于商品价格P的边界值,包括最小值0和最大值20。此外,还需要考虑接近这些边界值的值,如±1、±4等。这些测试用例旨在测试软件在极端和接近极端条件下的表现是否稳定可靠。问题6解析:采用决策表法设计测试用例的步骤包括确定规则的个数、列出所有的条件桩和动作桩、填入条件项和动作项以及简化决策表。首先根据条件的个数计算可能的规则组合数,然后列出所有相关的条件和动作。接着填入具体的条件取值和对应的动作或输出。最后,简化决策表,合并具有相同动作或输出的规则,以得到更简洁的测试用例集合。通过这个过程,可以确保设计的测试用例能够覆盖所有可能的条件和结果组合,从而全面测试软件的性能和行为。
3、阅读下列说明,回答下列问题。
[说明]
某MOOC(慕课)教育平台欲开发一基于Web的在线作业批改系统,以实现高效的作业提交与批改并进行统计。系统页面中涉及内部内容的链接、外部参考链接以及邮件链接等。页面中采用表单实现作业题目的打分和评价,其中打分为1~5分制整数,评价为文本。
系统要支持:
7在特定时期内300个用户并发时,主要功能的处理能力至少要达到16个请求/秒,平均数据量16kB/请求;
8系统前端采用HTML5实现,以使用户可以通过不同的移动设备的浏览器进行访问。
7、针对此在线系统进行链接测试时,需要测试哪些方面?(4分)
8、为了达到系统要支持的(2),设计一个兼容性测试矩阵。(5分)
9、给出计算系统的通信吞吐量的方法,并计算在满足系统要支持的(1)时系统的通信吞吐量。(5分)
10、设计4个打分和评价的测试输入,考虑多个方面的测试,如:正确输入、错误输入、XSS、SQL注入等测试。(6分)
参考答案:7、内部链接测试、外部链接测试、邮件链接测试、断链测试。
8、
9、通信吞吐量:P=N(并发用户的数量=300)×T(每单位时间的在线事务数量=16)×D(事务服务器每次处理的数据负载=16kB/S)
本系统满足条件(1)时的通信吞吐量为:300×16×16=76800kB/S(75MB/S)。
10、
(1)打分为任何在1~5范围内的数字,评价为任意文本;
(2)打分为任何在1~5范围外的数字,评价为任意文本;
(3)打分和评价其中任一字段包含HTML标签,如:<HTML>,<SCRIPT>等;
(4)打分和评价其中任一字段包含SQL功能符号,如包含’,OR、’--、2015’OR‘1’=‘1’等。
解析:
对于Web应用来说,链接测试是非常重要的一个环节,确保用户能够正常访问和使用系统中的各个功能和资源。内部链接、外部链接和邮件链接都是系统中常见的链接类型,需要进行全面测试。同时,断链测试也是必要的,确保系统中不存在无法访问的链接。
4、阅读下列说明,回答下列问题。
[说明]
某嵌入式系统中,存在16路数据采集通道。为了提高数据采集的可靠性,对16路采集通道均采用双余度设计;为了监控采集通道是否发生故障,对各路双余度通道采集值进行比较。只有当该通道两个余度设备采集值均不小于45时,才表示该路通道正常。设计人员设计函数num_of_passer用于统计无故障通道数目,在该函数的设计中考虑了如下因素:
11采用如下数据结构存储通道号及采集值:
struct Value
{ unsigned int No; //通道号,1到16
unsigned short value1; //余度1采集值
unsigned short value2; //余度2采集值
}
12当输入参数异常时,函数返回-1;
13若正确统计了无故障通道数目,则返回该数目;
14该函数需要两个输入参数,第一个参数是用于存储通道号及余度采集值的数组,第二个参数为通道总数目;
15调用函数sort16对存储通道号及余度采集值的数组进行排序处理。
开发人员根据上述要求使用ANSI C对代码实现如下(代码中每行的第一个数字代表行号):11、嵌入式软件中通常使用函数扇出数和注释率来衡量程序的可维护性,请计算函数num_of_passer的扇出数和注释率,并判断此函数扇出数和注释率是否符合嵌入式软件的一般要求。(6分)
12、请使用代码审查的方法找出该程序中所包含的至少4处错误,指出错误所在的行号和问题描述。(8分)
13、覆盖率是度量测试完整性的一个手段,也是度量测试有效性的一个手段。在嵌入式软件白盒测试过程中,通常以语句覆盖率、分支覆盖率和MC/DC覆盖率作为度量指标,请分别指出对函数num_of_passer达到100%语句覆盖、100%分支覆盖和100%MC/DC覆盖所需的最少测试用例数目。(6分)
参考答案:11、
扇出数:1
注释率:28.6%(4/14)
嵌入式软件一般要求扇出数不大于7和注释率不小于20%,所以此函数扇出数和注释率均符合要求。
12、
13、
解析:
:
本题主要考查了软件测试的一些基本概念和通过代码审查查找软件缺陷以及设计测试用例的能力。要求考生熟悉结构体数据类型和不同代码覆盖率的要求,结合软件测试的一些基本概念在嵌入式软件中进行实际应用。
对于扇出数和注释率的计算,模块num_of_passer的扇出数为1,注释率为28.6%,均满足嵌入式软件的一般要求。
通过代码审查,找到了四处错误。第一处是函数返回值的定义与说明不一致;第二处是变量counter使用前未初始化;第三处是对num的合法性检查存在问题;第四处是第10行的条件判断与说明不一致。
对于测试用例的设计,为了达到不同的覆盖率,需要构造不同的测试用例。对于语句覆盖,至少需要两个测试用例;对于分支覆盖,也需要两个测试用例覆盖所有分支;对于MC/DC覆盖,需要至少四个测试用例来满足MC/DC覆盖的要求。
5、阅读下列说明,回答下列问题。
[说明]
某互联网企业开发了一个大型电子商务平台,平台主要功能是支持注册卖家与买家的在线交易。在线交易的安全性是保证平台正常运行的重要因素,安全中心是平台中提供安全保护措施的核心系统,该系统提供的主要功能包括:
密钥管理功能,包括公钥加密体系中的公钥及私钥生成与管理,会话密钥的协商、生成、更新及分发等。
基础加解密服务,包括基于RSA、ECC及AES等多密码算法的基本加解密服务。
认证服务,提供基于PKI及用户名/口令的认证机制。
授权服务,为应用提供资源及功能的授权管理和访问控制服务。 现企业测试部门拟对平台的密钥管理与加密服务系统进行安全性测试,以检验平台的安全性。
14、给出安全中心需应对的常见安全攻击手段并进行简要说明。(4分)
15、针对安全中心的安全性测试,可采用哪些基本的安全性测试方法?(6分)
16、请分别说明针对密钥管理功能进行功能测试和性能测试各自应包含的基本测试点。(5分)
17、请分别说明针对加解密服务功能进行功能测试和性能测试各自应包含的基本测试点。(5分)
参考答案:14、该平台需应对的常见安全攻击手段应包括:
(1)网络侦听:指在数据通信或数据交互的过程中,攻击者对数据进行截取分析,从而实现对包括用户支付账号及口令数据的非授权获取和使用。
(2)冒充攻击:攻击者采用口令猜测、消息重演与篡改等方式,伪装成另一个实体,欺骗安全中心的认证及授权服务,从而登录系统,获取对系统的非授权访问。
(3)拒绝服务攻击:攻击者通过对网络协议的实现缺陷进行故意攻击,或通过野蛮手段耗尽被攻击对象的资源,使电子商务平台中包括安全中心在内的关键服务停止响应甚至崩溃,从而使系统无法提供正常的服务或资源访问。
(4)Web安全攻击:攻击者通过跨站脚本或SQL注入等攻击手段,在电子商务平台系统网页中植入恶意代码或在表单中提交恶意SQL命令,从而通过系统正常访问控制或恶意盗取用户信息。
15、可采用的基本安全性测试方法包括:
(1)功能验证:采用软件测试中的黑盒测试方法,对安全中心提供的密钥管理、加解密服务、认证服务以及授权服务进行功能测试,验证所提供的相应功能是否有效。
(2)漏洞扫描:借助于特定的漏洞扫描工具,对安全中心本地主机、网络及相应功能模块进行扫描,发现系统中存在的安全性弱点及安全漏洞,从而在安全漏洞造成严重危害之前,发现并加以防范。
(3)模拟攻击试验:模拟攻击试验是一组特殊的黑盒测试案例,通过模拟典型的安全攻击来验证安全中心的安全防护能力。
(4)侦听测试:通过典型的网络数据包获取技术,在系统数据通信或数据交互的过程中,对数据进行截取分析,从而发现系统在防止敏感数据被窃取方面的安全防护能力。
16、密钥管理功能的基本测试点:
(1)功能测试
①系统是否具备密钥生成、密钥发送、密钥存储、密钥查询、密钥撤销、密钥恢复等基本功能;
②密钥库管理功能是否完善;
③密钥管理中心的系统、设备、数据、人员等安全管理是否严密;
④密钥管理中心的审计、认证、恢复、统计等系统管理是否具备;
⑤密钥管理系统与证书认证系统之间是否采用基于身份认证的安全通信协议。
(2)性能测试
①检查证书服务器的处理性能是否具备可伸缩配置及扩展能力利用并发压力测试工具测试受理点连接数、签发在用证书数目、密钥发放并发请求数是否满足业务需求;
②测试是否具备系统所需最大量的密钥生成、存储、传送、发布、归档等密钥管理功能;
③是否支持密钥用户要求年限的保存期;
④是否具备异地容灾备份;
⑤是否具备可伸缩配置及扩展能力;
⑥关键部分是否采用双机热备和磁盘镜像。
17、加解密服务功能的基本测试点:
(1)功能测试
①系统是否具备基础加解密功能;
②能否为应用提供相对稳定的统一安全服务接口;
③能否提供对多密码算法的支持;
④随着业务量的逐渐增加,是否可以灵活增加密码服务模块,实现性能平滑扩展。
(2)性能测试
①各加密算法使用的密钥长度是否达到业内安全的密钥长度;
②RSA、ECC等公钥算法的签名和验证速度以及AES等对称密钥算法的加解密速度是否满足业务要求;
③处理性能如公钥密码算法签名等是否具备可扩展能力。
解析:
本题主要考查对安全保护措施进行安全性测试的相关知识。对于每一小题,需要结合电子商务平台的业务特征和安全中心的主要功能来解答。对于常见安全攻击手段,需要考虑数据通信或交互过程中的安全威胁。安全性测试方法包括功能验证、漏洞扫描、模拟攻击试验和侦听测试等。针对密钥管理功能和加解密服务功能的测试,需要涵盖主要功能的安全测试,并进行相应的性能测试。具体测试点包括密钥管理策略、密钥生成与存储、加解密算法的速度与安全性等。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!