一、问答题
1、【老版知识点】[说明]
某酒店预订系统有两个重要功能,检索功能和预订功能。检索功能根据用户提供的关键字检索出符合条件的酒店列表,预订功能是对选定的某一酒店进行预订,现需要对该系统执行负载压力测试。
该酒店预订系统的性能要求为:
1交易执行成功率100%;
2检索响应时间在3s以内;
3检索功能支持900个并发用户;
4预订功能支持100个并发用户;
5CPU利用率不超过85%;
6系统要连续稳定运行72小时
1、[问题1] 简述该酒店预订系统在生产环境下承受的主要负载类型。(3分)
2、[问题2] 对系统检索功能执行负载压力测试,测试结果如表1-1所示。请指出响应时间和交易执行成功率的测试结果是否满足性能需求并说明原因。(5分)
表1-1 检索功能测试结果3、[问题3] 对系统检索功能及预订功能执行负载压力测试,测试结果如表1-2所示。请指出服务器资源利用情况cpu占用率的测试结果是否满足性能需求并说明原因。(5分)
表1-2 系统测试结果
4、[问题4] 根据[问题2]和[问题3]的测试结果,试分析该系统的可能瓶颈。(6分)
参考答案:1、该酒店预订系统在生产环境下承受的主要负载类型:
(1)检索功能、预订功能并发用户的操作是属于并发执行负载;
(2)连续运行72小时是属于疲劳强度负载;
(3)大量“稿件查询”操作是属于大数据量负载。
2、对系统检索功能执行负载压力测试,响应时间和交易执行成功率的测试结果不能满足性能需求。
因为:
(1)、系统检索功能执行并发用户数为900时,其响应时间为3.7s与检索响应时间在3s以内不能满足性能需求,交易执行成功率为100%满足性能需求。
(2)、系统检索功能执行并发用户数为1000时,其响应时间为6.6s与检索响应时间在3s以内不能满足性能需求,交易执行成功率为98%不能满足性能100%需求。
3、暂缺答案
4、根据[问题2]和[问题3]的测试结果,该系统的存在瓶颈。
服务器资源利用情况:
(1)、在执行检索功能测试时并发用户为900、1000时响应时间超过3s;
(2)、在检索功能并发用户为900,预订功能并发用户数为100时,CPU占用率(%)(平均值)达到87.3超过85%;
(3)、在检索功能并发用户为1000,预订功能并发用户数为120时,CPU占用率(%)(平均值)达到92.6超过85%;
可能的瓶颈如下: (1)服务器CPU 性能不足; (2)数据库设计不足或者优化不够; (3)检索功能预订功能应用软件设计不足或没有优化; (4)网络带宽不足。
解析:
问题1解析:本小题考查系统的负载类型。 参考答案如下:
(1) 并发用户的操作是属于并发执行负载;
(2) 连续运行72小时是属于疲劳强度负载;
(3) 大量检索操作是属于大数据量负载。
问题2解析:本题考查负载压力测试结果的分析。
测试结果不能满足性能需求。 原因如下:
1、系统检索功能执行并发用户数为900时,其响应时间为3.7s,不能满足检索响应时间在3s以内的需求;
2、系统检索功能执行并发用户数为1000时,其响应时间为6.6s,交易执行成功率为98%。但是检索功能并发用户要求中最多只提到900,所以当用户为1000时,并不能体现出是否符合要求,因为要求中没有涉及1000的并发量。
问题3解析:本题考查负载压力测试结果的分析。
测试结果不能满足性能指标,原因如下:
1、在检索功能并发用户为900,预订功能并发用户数为100时,CPU占用率达到87.3%,超过85%;
2、在检索功能并发用户为1000,预订功能并发用户数为120时,不能算不满足要求。因为要求检索功能只提到支持900个并发用户和100个预定并发用户的情况;
问题4解析:本题考查对系统瓶颈的初步判断。 l服务器资源利用情况分析:
1、在执行检索功能测试时并发用户为900、1000时响应时间超过3s;
2、在检索功能并发用户为900,预订功能并发用户数为100时,CPU占用率达到87.3%,超过85%;
因此可能的瓶颈如下:
(1)服务器CPU性能不足;
(2)数据库设计不足或者优化不够;
(3)系统没有采用合适的并发/并行策略;
(4)服务器的网络带宽不足。
2、阅读下列说明,回答下列问题。
[说明] 逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。
Struct_ProtobufCIntRange{
Int start_value;
Unsigned orig_index;
};
typedef struct_ProtobufCIntRange ProtobufCIntRange;
int int_range_lookup(unsigned n_ranges,const ProtobufCIntRange*ranges,int value) {
unsigned start,n; //1
start=0;
n=n_ranges;
while (n>1) { //2
unsigned mid=start+n/2;
if(value< ranges[mid].start_value) { //3
n=mid-start; //4
}
else if (value>=ranges[mid].start_value+ (int)(ranges[mid+1].orig_index-ranges[mid].orig_index)) { //5
unsigned new_start=mid+1; //6
n=start+n-new_start;
start=new_start;
}
else //7
return (value-ranges[mid].start_value)+ranges[mid].orig_index;
}
if(n>0){ //8
unsigned start_orig_index=ranges[start].orig_index;
unsigned range_size=ranges[start+1].orig_index-start_orig_index;
if (ranges[start].start_value<=value && value<(int)(ranges[start].start_value+range_size)) //9,10
return (value-ranges[start].start_value)+start_orig_index; //11
}
return -1; //12
} //13
5、[问题1] 请给出满足100%DC(判定覆盖)所需的逻辑条件。(6分)6、[问题2] 请画出上述程序的控制流图,并计算其控制流图的环路复杂度VG.。(6分)
7、[问题3] 请给出[问题2]中控制流图的线性无关路径。(4分)
参考答案:
5、本题考查白盒测试法的应用。
本问题考查白盒测试用例设计方法中的判定覆盖法。
判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“真”值和“假”值,从而使程序的每一个分支至少都通过一次。本题中程序有5个判定,所以满足判定覆盖一共需要10个逻辑条件,如下表所示。6、本问题考查白盒测试用例设计方法中的基本路径法。涉及到的知识点包括:根据代码绘制控制流图、计算环路复杂度。
控制流图是描述程序控制流的一种图示方法。其基本符号有圆圈和箭线:圆圈为控制流图中的一个结点,表示一个或多个无分支的语句;带箭头的线段称为边或连接,表示控制流。基本结构如下所示:
根据题中程序绘制的控制流图如下所示。其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变复合条件的判断为一系列之单个条件的嵌套的判断。本题程序中,if (ranges[start].start_valueihg<=value&&value<(int)(ranges[start].start_value+range_size))这条判断语句中的判定由两个条件组成,因此在画控制流图的时候需要拆开成两条判断语句。
环路复杂度用来衡量一个程序模块所包含的判定结构的复杂程度,数量上表现为独立路径的条数,即合理地预防错误所需测试的最少路径条数。环路复杂度等于图中判定结点的个数加1,图中判定结点个数为6,所以(G)=7。
7、本问题考查白盒测试用例设计方法中的基本路径法。
(2) 1-2-3-5-6-2...
(3) 1-2-3-5-7-13 l
(4) 1-2-8-9-10-11-13
(5) 1-2-8-9-10-12-13
(6) 1-2-8-9-12-13
(7) 1-2-8-12-13
解析:
问题一:判定覆盖是白盒测试的一种重要方法,其核心思想是设计足够的测试用例,使得程序中的每个判定至少有一次为真和一次为假的情况,以确保每个分支至少执行一次。因此,需要根据程序中的判断条件来构造测试用例。由于无法得知具体的程序逻辑细节,无法给出具体的逻辑条件。
问题二:控制流图是描述程序控制流的图示方法,根据程序的流程结构绘制。环路复杂度是衡量程序模块判定结构复杂度的指标,等于判定结点的个数加1。在绘制控制流图时,需要注意判断条件复合的情况,需要拆开成多个单一条件的判断。根据提供的代码,需要绘制控制流图并计算环路复杂度。
问题三:线性无关路径是程序在运行时可能采取的不同路径,这些路径由程序的控制结构决定。在控制流图中,线性无关路径表现为一系列节点和边的组合,从入口到出口。需要分析控制流图中的节点和边的关系,找出所有可能的线性无关路径。由于无法得知具体的控制流图结构,无法给出具体的线性无关路径。
3、阅读下列说明回答下列问题。
[说明] 某企业想开发一套B2C系统,其主要目的是在线销售商品和服务,使顾客可以在线浏览和购买商品和服务,系统的用户的IT技能,访问系统的方式差异较大,因此系统的易用性、安全性、兼容性等方面的测试至关重要。
系统要求:
1、所有链接都要正确;
2、支持不同移动设备,操作系统和浏览器;
3、系统需通过SSL进行访问,没有登录的用户不能访问应用内部的内容。
[问题1] 简要叙述链接测试的目的以及测试的主要内容。(5分)
[问题2] 简要叙述为了达到系统要求(2),要测试哪些方面的兼容性。(4分)
[问题3] 本系统强调安全性,简要叙述Web应用安全测试应考虑哪些方面。(4分)
[问题4] 针对系统要求(3),设计测试用例以测试Web应用的安全性。(4分)
参考答案:1、链接测试的目的:用来检验Web 网站提供信息的正确性、准确性和相关性。
测试的主要内容:系统的链接测试主要测试如下3 个方面:
1)每个链接是否能够链接到目标页面
2)被链接的页面是否存在
3)是否存在孤立页面
2、浏览器兼容性测试、操作系统兼容性测试、移动终端浏览测试、打印测试等。
3、Web应用安全体系测试可以从部署与基础结构、输入验证、身份验证、授权、配置管理、敏感数据、会话管理、加密、参数操作、异常管理、审核和日志记录等多个方面进行。
4、SQL注入测试用例:用户名:name’or’a’=’a,密码:password’ or’a’=’a;或者用户名:name’--,密码:password。(name为系统内有或者无的用户名)。
测试SSL:某链接URL的https://换成http://:
内容访问:https://domain/foo/bar/content.doc;(注:域名和路径为应用的域名和路径)
内部URL拷贝:将登录后的某URL拷贝出来,关闭浏览器并重启后将URL粘贴在地址栏访问内部内容。
解析:
第一题答案正确解释了链接测试的目的和主要内容。链接测试是为了检验Web网站提供信息的正确性、准确性和相关性。测试的主要内容是检查链接的有效性、目标页面的存在性以及是否存在孤立页面。这些内容的测试对于确保用户能够正常浏览网站并获取相关信息至关重要。
第二题答案详细描述了为了达到系统要求(2),需要测试的兼容性方面。包括浏览器兼容性、操作系统兼容性、移动终端浏览兼容性以及打印兼容性。答案还提供了在不同环境下进行测试的具体方法,如使用不同的浏览器和操作系统进行测试,以及在移动设备上的浏览器进行测试等。这些都是确保Web应用能够在不同环境下正常运行的重要步骤。
第三题答案正确概述了Web应用安全测试应考虑的方面,包括部署与基础结构、输入验证、身份验证、授权等。答案还强调了设计时修复漏洞的重要性,以及在开发过程中考虑安全策略的重要性。这些方面的测试对于确保Web应用的安全性至关重要。
第四题答案设计了针对Web应用安全性的测试用例。包括SQL注入测试、SSL测试、内容访问测试和内部URL拷贝测试等。这些测试用例旨在测试系统的安全性,确保系统能够抵御外部和内部的攻击,保护用户的数据和隐私。答案中的测试用例设计合理且全面。
4、阅读下列说明,回答下列问题。
[说明] 某企业为防止自身信息资源的非授权访问,建立了如图4-1所示的访问控制系统。
企业访问控制系统
该系统提供的主要安全机制包括:
12认证:管理企业的合法用户,验证用户所宣称身份的合法性,该系统中的认证机制集成了基于口令的认证机制和基于PKI的数字证书认证机制;
13授权:赋予用户访问系统资源的权限,对企业资源的访问请求进行授权决策;
14安全审计:对系统记录与活动进行独立审查,发现访问控制机制中的安全缺陷,提出安全改进建议。
12、[问题1] 对该访问控制系统进行测试时,用户权限控制是其中的一个测试重点。对用户权限控制的测试应包含哪两个主要方面?每个方面具体的测试内容又有哪些?(6分)
13、[问题2] 测试过程中需对该访问控制系统进行模拟攻击试验,以验证其对企业资源非授权访问的防范能力。请给出三种针对该系统的可能攻击,并简要说明模拟攻击的基本原理。(3分)
14、[问题3] 对该系统安全审计功能设计的测试点应包括哪些?(3分)
参考答案:12、两个方面:
①评价用户权限控制的体系合理性,是否采用三层的管理模式即系统管理员、业务领导和操作人员三级分离;
②用户名称基本采用中文和英文两种,对于测试来说,对于用户名称的测试关键在于测试用户名称的唯一性。
用户名称的唯一性体现有哪些方面?
●同时存在的用户名称在不考虑大小的状态下,不能够同名;
●对于关键领域的软件产品和安全要求较高的软件,应当同时保证使用过的用户在用户删除或停用后,保留该用户记录,并且新用户不得与之同名。
13、模拟攻击试验:对于安全测试来说,模拟攻击试验是一组特殊的黑盒测试案例,我们以模拟攻击验证软件或信息的安全防护能力。可采用冒充、重演、消息篡改、服务拒绝、内部攻击、外部攻击、陷阱门、特洛伊木马方法进行测试。
泪滴(teardrop)。泪滴攻击利用那些在TCP/IP堆栈实现中信任IP碎片中的包的标题头所包含的信息实现自己的攻击。IP分段含有指示该分段所包含的是原包的哪一段的信息,某些TCP/IP(包括service pack 4以前的NT)在收到含有重叠偏移的伪造分段时将崩溃。防御措施有服务器应用最新的服务包,或者在设置防火墙时对分段进行重组,而不是转发它们。
口令猜测。一旦黑客识别了一台主机而且发现了基于NetBIOS、Telnet或NFS这样的服务的可利用的用户账号,然后因为使用简单的密码或者没有设密码,导致黑客能很快的将口令猜出。当然事实上用蛮力是可以破解任何密码的,关键是是否迅速,设置的密码是否能导致黑客花很大的时间和效率成本。防御措施有要选用难以猜测的口令,比如词和标点符号的组合。确保像NFS、NetBIOS和Telnet这样可利用的服务不暴露在公共范围。如果该服务支持锁定策略,就进行锁定。
伪造电子邮件。由于SMTP并不对邮件的发送者的身份进行鉴定,因此黑客可以对你的内部客户伪造电子邮件,声称是来自某个客户认识并相信的人,并附带上可安装的特洛伊木马程序,或者是一个引向恶意网站的链接。防御措施有使用PGP等安全工具并安装电子邮件证书。 14、对该系统安全审计功能设计的测试点应包括:
①能否进行系统数据收集,统一存储,集中进行安全审计;
②是否支持基于PKI的应用审计;
③是否支持基于XML的审计数据采集协议;
④是否提供灵活的自定义审计规则。
解析:
<问题12>
用户权限控制是访问控制系统的核心部分,因此在测试时应该重点关注。测试内容主要包括两个方面:一是评价用户权限控制的体系合理性,看其是否采用了三层的管理模式,即系统管理员、业务领导和操作人员三级分离,这有助于实现职责分离和减少潜在的安全风险;二是测试用户名称的唯一性,确保在同一环境下,不考虑大小写的情况下,不会有重复的用户名称,并且已删除或停用的用户记录应被保留,新用户在注册时不得使用已存在的用户名称。
<问题13>
模拟攻击试验是验证访问控制系统对非授权访问防范能力的重要手段。针对该系统的可能攻击及其基本原理包括:泪滴攻击利用TCP/IP协议中的漏洞进行攻击,口令猜测利用简单的密码或没有设置密码的账户进行破解,伪造电子邮件则通过SMTP协议的不鉴定发送者身份特性来实施欺诈行为。每种攻击都有其特定的防御措施。
<问题14>
对于访问控制系统的安全审计功能,测试点应涵盖系统的数据收集、存储和集中审计能力,以及是否支持基于PKI的应用审计、基于XML的审计数据采集协议和自定义审计规则等。这些功能决定了审计系统的效率和准确性,从而影响到整个系统的安全性和可靠性。
5、阅读以下说明,回答下列问题。
[说明]现代软件的飞速发展,使得系统对软件的依赖越来越强,对软件可靠性的要求也越来越来高,因此发展以发现软件可靠性缺陷为目的的可靠性测试技术也日益迫切。
15、[问题1] 一个完整的软件可行性测试如图5-1所示。(5分)
请写出图中(1)~(5)。
16、[问题2] 解释说明软件可靠性测试的目的,并说明狭义和广义软件可靠性测试的区别。(5分)
17、[问题3] 可靠性目标是指客户对软件性能满意程度的期望。通常采用失效严重程度、可靠度、故障强度、平均无故障时间等指标来描述。请分别解释其含义。(2分)
参考答案:15、(1)确定可靠性目标 (2)可靠性数据 (3)分析可靠性的因素 (4)可靠性模型 (5)可靠性评价
16、可靠性测试的目的可归纳为以下三个方面:
①发现软件系统在需求、设计、编码、测试、实施等方面的各种缺陷。 ②为软件的使用和维护提供可靠性数据。
③确认软件是否达到可靠性的定量要求。
广义的软件可靠性测试是指为了每种评价软件系统的可靠性而运用建模、统计、试验、分析、评价等一系列手段对软件系统实施的一种测试。
狭义的软件可靠性测试是指为了获取可靠性数据,按预先确定的测试用例,在软件的预期使用环境中,对软件实施的一种测试。狭义的软件可靠性测试也叫“较件可靠性试验(sottwan: reliability test)”,它是面向缺陷的测试,以用户将要使用的方式来测试软件,每一次测试代表用户将要完成的一组操作,使测试成为最终产品使用的预演。这就使得所获得的测试数据与软件的实际运行数据比较接近,可用于软件可靠性评价。
17、失效严重程度类就是对用户具有相同程度影响的失效集合。
可靠度就是软件系统在规定的条件下,规定的时间内不发生失效的概率。
故障强度是指:以单位运转时间的软件故障停机小时表示停机时间的长短,其表式为:软件故障强度率=100%*软件故障停机小时/软件实际运转时间。
平均无故障时间(MTTF):全称是Mean Time To Failure,即平均失效时间。系统平均能够正常运行多长时间,才发生一次故障。系统的可靠性越高,平均无故障时间越长。
解析:
问题15考查的是软件可靠性测试的基本过程和步骤,包括确定可靠性目标、收集可靠性数据、分析可靠性的因素、建立可靠性模型和进行可靠性评价。
问题16考查的是软件可靠性测试的基本概念,包括其目的以及广义和狭义软件可靠性测试的区别。软件可靠性测试的主要目的是发现软件系统中的缺陷,为软件的使用和维护提供数据,并确认软件是否达到可靠性要求。广义的软件可靠性测试是一种全面的测试,涉及建模、统计、试验、分析和评价等手段;而狭义的软件可靠性测试则更侧重于获取可靠性数据,按照预设的测试用例在软件的预期使用环境中进行测试。
问题17考查的是可靠性目标的指标的基本概念。失效严重程度是对用户受影响程度相同的失效的集合;可靠度是软件在规定条件和时间内不发生失效的概率;故障强度是单位时间内软件系统出现失效的概率;平均无故障时间是系统平均能够正常运行多长时间才发生一次故障,这是衡量系统可靠性的一个重要指标。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!