性能测试题库讲义

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

性能测试题库答案
一、低难度类:
1、理论类
选择类
1)通过疲劳强度测试,最容易发现问题的问题是:B
A.并发用户数
B.内存泄露
C.系统安全性
D.功能错误
2)如下那些工具不属于压力测试工具:D
A.LoadRunner
B.Logiscope(嵌入式测试工具)
C.
D.
3)
A.恢复测试
B.疲劳强度测试
C.大数据量测试
D.并发性能测试
4)LINUX下,解压缩文件的命令为:B
A. tar zxvf 文件名
B. unzip 文件名
C. CAT 文件名
D. VI 文件名
5)对abcd文件赋予所有者和组许可的读和执行权限,命令正确的是:B
A. chmod 033 abcd
B. chmod 550 abcd
C. chmod 770 abcd
D. chmod u+rx abcd
6)在软件性能测试中,下列指标中哪个不是软件性能的指标D
A)响应时间B)吞吐量 C)资源利用率 D)并发进程数7)下列关于软件性能测试的说法中,正确的是B
A)性能测试的目的不是为了发现软件缺陷
B)压力测试与负载测试的目的都是为了探测软件在满足预定性能需求的情况下所能负担的最大压力
C)性能测试通常要对测试结果进行分析才能获得测试结论
D)在性能下降曲线上,最大建议用户数通常处于性能轻微下降区与性能急剧下降区的交界处
8)下列关于软件可靠性测试的说法中,错误的是A
A)发现软件缺陷是软件可靠性测试的主要目的
B)软件可靠性测试通常用于有可靠性要求的软件
C)在一次软件可靠性测试中,执行的测试用例必须完全符合所定义的软件运行剖面
D)可靠性测试通常要对测试结果进行分析才能获得测试结论
问答类
1)什么是性能测试,其应用领域分别是什么?
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的
各项性能指标进行测试,应用领域有四个:能力验证、能力规划、性能调优、缺陷发
现。

2)什么是负载测试?
负载测试:通过被测试系统不断增加压力,直到性能指标超过预期值或者某种资源达到饱和状态;
3)可靠性测试、可用性测试的定义,有什么区别?
可靠性测试:通过在有使用代表性的环境中执行软件,以证实软件需求是否正确实现。

为进行软件可靠性估计采集准确的数据。

估计软件可靠性一般可分为四个步骤,即数据采集、模型选择、模型拟合以及软件可靠性评估。

可用性测试:故名思议是测试设计方案或者产品在一定的环境下的可用性水平。

4)性能测试包含了哪些测试(至少举出3种)?
压力测试、负载测试、并发测试、疲劳强度测试、大数据量测试;
5)什么时候可以开始执行性能测试?
在产品相对比较稳定,功能测试完成后;
6)Web服务器指标指标有哪些?
* Avg Rps: 平均每秒钟响应次数=总请求时间/ 秒数;
* Successful Rounds:成功的请求;(成功回合)
* Failed Rounds :失败的请求;
* Successful Hits(点击):成功的点击次数;
* Failed Hits :失败的点击次数;
* Hits Per每Second秒:每秒点击次数;
* Successful Hits Per Second :每秒成功的点击次数;
* Failed Hits Per Second :每秒失败的点击次数;
* Attempted Connections :尝试链接数;
2、工具类
问答类
1)LoadRunner由哪些部件组成?
virtual user generator、contorller、running contorller、analysis;
2)简述使用Loadrunner的步骤:
脚本录制设置—录制脚本—调试脚本—场景设置—结果分析;
3)什么是关联?
关联:很多构架用sessionid等方法标识不同任务和数据,应用在每次运行时方式发送数据
不完全相同,需要利用的机制对录制的脚本进行处理,这种机制叫做关联(服务端发送到客
户端)
4)什么是think time?
思考时间是真实用户在action之间等待的时间。

例如:当一个用户从服务器接收到数据时,
用户可能需要在响应之前等待几分钟回顾数据,这种推迟被称为思考时间
5)场景设置有哪几种方法?
目标场景和手工场景
6)性能测试工具有哪些?
LR、Jmeter、OpenSTA(WEB测试工具)、DBMonster(数据库测试工具)、TPTEST、Web Application
Load Simulator(负载模拟器)等
7)用IP欺骗能对外网进行测试吗?
关于IP欺骗一般只用在内网,不管你在内网如何欺骗,经过网络地址转换后到了外网上的
IP地址表现就是你的公网的IP,除非你一开始就设置成公网的IP地址,但这个一般不可能。

二、中难度类:
1、理论类
选择类
1)以下哪一个选项按顺序包括了OSI模型的各个层次:B
A. 物理层,数据链路层,网络层,传输层,会话层,表示层和应用层
B. 物理层,数据链路层,网络层,传输层,系统层,表示层和应用层
C. 物理层,数据链路层,网络层,转换层,会话层,表示层和应用层
D. 表示层,数据链路层,网络层,传输层,会话层,物理层和应用层
2)在网络应用测试中,网络延迟是一个重要指标。

以下关于网络延迟的理解,正确的是:D
A.指响应时间
B.指报文从客户端发出到客户端接收到服务器响应的间隔时间
C.指报文在网络上的传输时间
D.指从报文开始进入网络到它开始离开网络之间的时间
问答类
1)简述性能测试的步骤:
计划测试—测试设计—创建脚本—创建场景—分析结果;
2)响应时间和吞吐量之间的关系是什么
吞吐量图显示的是虚拟用户每秒钟从服务器接收到的字节数。

当和响应时间比较时,可以发现随着吞吐量的降低,响应时间也降低,同样的,吞吐量的峰值和最大响应时间差不多在同时出现.
3)您认为性能测试工作的目的是什么?
目的:是验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,优化软件,最后起到优化系统的目的。

寻找瓶颈:受控的负荷可以被增加到一个极端的水平,并突破它,从而修复体系的瓶颈或薄弱的地方。

系统调优:重复运行测试,验证调整系统的活动得到了预期的结果,从而改进性能。

检测软件中的问题:长时间的测试执行可导致程序发生由于内存泄露引起的失败,揭示程序中的隐含的问题或冲突。

验证稳定性和可靠性:在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的唯一方法。

4)请问您是如何得到性能测试需求?怎样针对需求设计、分析是否达到需求?
在查看需求文档,从中提取性能测试需求,与用户交流,了解实际使用情况。

结合业务信息设计操作场景总结出需测试的性能关键指标。

执行用例后根据提取关键性能指标来分析是否满足性能需求
5)性能测试数据如何准备?
能测试数据分成两部分:业务数据+基础数据。

业务数据是符合业务逻辑规则的数据,常见的如表和表中相关联的数据。

一旦缺少某个环节,
页面就无法打开,即便打开也会报错;相应的性能测试脚本执行过程中,服务器端也会报错。

两方面,一是构造业务数据,需要工程师熟悉业务逻辑;基础数据不一定要符合业务逻辑规
则。

它们的存在,是为了将表中数据量占用率到某种程度,以验证SQL语句的执行效率、索
引创建的合理性和正确性,数据库相关参数设置是否合理等。

二是,构造基础数据,不需要
工程师熟悉业务逻辑,但需要工程师具备编写高效存储过程或者高效SQL语句的能力。

6)cookie和session什么意思,有什么区别
Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务
器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空
间。

而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将
这一SessionID提交到服务器端,来存取Session数据。

这一过程,是不用开发人员干预
的。

所以一旦客户端禁用Cookie,那么Session也会失效。

服务器也可以通过URL重写的
方式来传递SessionID的值,因此不是完全依赖Cookie。

如果客户端Cookie禁用,则服务
器可以自动通过重写URL的方式来保存Session的值,并且这个过程对程序员透明。

可以
试一下,即使不写Cookie,在使用request.getCookies();取出的Cookie数组的长度也是1,
而这个Cookie的名字就是JSESSIONID,还有一个很长的二进制的字符串,是SessionID
的值。

Cookie是客户端的存储空间,由浏览器来维持。

7)路由器,集线器,交换机的区别?
路由器的作用是用于连接不同网段并且找到网络中数据传输最合适的路径。

集线器的作用是将一些pc机连起来组成一个局域网。

交换机的作用与集线器的相似,区别在于集线器采用的是共享带宽的方式,交换机是独享带
宽。

2、工具类
问答类
1)什么是集合点?设置集合点有什么意义?Loadrunner中设置集合点的函数是哪个?
集合点:设置多个用户到达某个用户数量点集合,同时触发一个事务,以达到模拟真实环境
下同时多个用户操作,同时模拟负载,实现性能测试的最终目的,LR_rendezvous(“集合点
名称”)
2)什么是场景?场景的重要性有哪些?如何设置场景
场景:模拟真实环境中,用户运行状况。

场景的重要性是
1.通过场景来模拟实际用户的操作,性能测试结果才具有代表性
2.在运行过程中也需要关注场景性能测试值,测试过程是否正常;
设置场景的步骤:
选择场景中需要的脚本,选择为目标场景,还是指定的手工场景,设置用户数、设置产生负
载的设备,设置执行策略;
3)请解释一下如何录制web脚本?
LR通过转发请求,来捕获数据包,来形成脚本;
4)如何调试LoadRunner脚本
在Run Step by Step 命令和断点(breakpoints)设置插入断点。

在Option对话框中的调试设置(Debug setting)项,可以确定在场景执行过程中执行轨
迹范围。

可以用lr_set_debug_messag函数在脚本中手工设置信息类型,调试信息写在output
窗口。

5)当你需要在出错时停止执行脚本,你怎么做?
lr_abort函数放弃虚拟用户脚本的执行。

说明虚拟用户停止Action的执行,直接执行
vuser_end 然后结束执行。

在出现错误情况下想手工放弃脚本的执行,这个函数是有用的。

用这个函数停止脚本时,Vuser被指定为“Stopped”状态。

为了这个函数起作用,开始时
候就不能选择Run-Time Settings中的Continue on error选项。

6)说明一下如何在LR中配置系统计数器?
通过Web资源监视器,利用这些监控器可以分析web服务器的吞吐量、点击率、每秒http
响应数以及每秒下载的页面数
7)标准日志和扩展日志的区别是什么?
Standard Log Option:选择标准日志时,就会在脚本执行过程中,生成函数的标准日志
并且输出信息,供调试用,扩展日志包括警告和其他信息。

用扩展日志选项,可以指定哪些
附加信息需要加到扩展日志中
三、高难度类:
1、理论类
问答类
1)执行性能测试的基本原则是什么?
原则一:测试前,要确认系统级的关键参数已经基本配置正确(例如:数据库、WEB容器、线程池、JDBC连接池、对象池、JVM、操作系统、应用系统等配置);
原则二:测试前,要确保测试脚本的业务功能运行正确;
原则三:测试前,清空所有应用日志、调高错误日志的输出级别(Error级),必要时在每次测试前重启应用服务和数据库应用服务;
原则四:调整系统参数时,一次只调整一个,不要同时调整多个,并记录调整前后的系统变化;
原则五:优先测试基线案例
2)性能问题分析原则是什么?
原则一:把事实与推测分开,总是用实际的证据来证明你的推测;
原则二:在没有足够证据之前,不对程序进行优化;
原则三:优先验证简单的假设;
原则四:日志文件中没有错误不代表真的没有错误;
原则五:从系统到应用、从外到内进行层层剥离,缩小范围;
原则六:范围缩小后,再分割成多个小单元,对每个小单元进行轮番压力测试,来证明或者否定是那个单元引起性能问题
3)调优的原则是什么?
原则一:在应用系统的设计、开发过程中,应始终把性能放在考虑的范围内;
原则二:清晰明确的性能目标;
原则三:必须保证调优后的程序运行正确;
原则四:性能更大程度是取决于良好的设计,调优技巧只是一个辅助手段;
原则五:调优过程是叠代渐进的过程,每次调优的结果要反馈到后续的代码开发中去;
原则六:性能调优不能以牺牲代码的可读性和维护性为代价;
4)调优的基本步骤是什么?
一、确定清晰的性能目标,并按优先级排列;
二、利用科学的测试工具对应用程序进行测试,并记录测试结果;
三、把分布式系统拆分成组件:Web层、业务层、集成层、以及网络传输时间,分别进行调
优;
四、有系统的科学调优:遵循一定的程序:测试性能→找出瓶颈→假设造成瓶颈的因素→测
试假设是否成立→修改应用→再次测试性能,
五、确定影响性能的因素:CPU、Memory还是IO,找出主要的瓶颈,首先解决最容易的,
再重复测试,一次修改一个瓶颈,不要对不需要的地方进行调优,
六、提高CPU性能:更快的代码、SQL,更好的算法,减少短期生存的对象,
七、提高内存性能:减少或减小长期生存的对象,
八、提高IO性能:重新设计应用,减少IO的交互;
九、优化完成之后,进行QA测试;
十、在代码中记录优化的地方,并对旧代码进行注释
5)1台客户端有300客户与300客户端有300客户对服务器施压,有什么区别?
a)300个用户在一个客户端上,会占用客户机更多的资源,而影响测试的结果。

b)线程之间可能发生干扰,而产生一些异常。

c)300个用户在一个客户端上,需要更大的带宽。

d)IP地址的问题,可能需要使用IP Spoof来绕过服务器对于单一IP地址最大连接数的限
制。

6)基于SOA 的性能测试方法有哪些?
基于SOA 应用程序的性能测试包括了基准测试、容量测试和浸泡测试三个主要测试阶段;
基于SOA 的性能测试第一阶段是基准测试,基准测试是用来确定被测应用程序是否存在性能衰退,并且收集可重复性能测试结果以作为性能基准。

基准测试的最好方法是每
次测试只改变一个参数。

基准测试包括了相应时间驱动的测试和吞吐量驱动的测试,容量测试的目标是要看被测应用在一定测试环境下能够达到的最大处理能力。

容量测试将模拟更加接近真实用户使用的环境,并且用更为真实的用户负载来测试SOA 应用程
序的容量测试。

具体地说,一般容量测试是为了检测在达到一定响应时间或吞吐量的前提
下被测应用能够支持的并发用户数。

浸泡测试是在一个稳定的并发用户上进行的long run 测试,用来测试SOA 应用程序的健壮性。

通过浸泡测试往往可以发现内存泄露,频繁GC 等严重性能问题。

进行浸
泡测试需要注意以下两点:浸泡测试需要在一定适中的用户负载量下进行,最好低于应
用支持最大的负载量,在执行long run 测试时,采用几种不同用户组,并且每个用户组
织性不同的业务流程浸泡测试实际上比较简单的性能测试,测试最好能够运行几天,以真
正得到一个健壮的应用。

确保应用测试是贴近真实世界, 尽量与实际使用情况接近。

2、工具类
问答类
1)以线程方式运行的虚拟用户有哪些优点
如果是以进程的方式跑虚拟用户,为每个用户加载相同的驱动程序到内存中,因此占用了
大量的内存。

这就限制了在单个生成器上能跑的虚拟用户数。

但如果按线程运行,给定的所有虚拟用户数(比如100)只是加载一个驱动程序实例到内
存里。

每个线程共用父驱动程序的内存,因此在每个生成器上可以跑更多的虚拟用户。

2)典型的应用数据库问题有哪些,解决办法分别是什么
典型应用数据库问题的三个类型:过量的数据库调用、数据库连接池问题、SQL语句及其索引或锁定属性问题。

过量的数据库调用,从数据库中大批取得所要求的数据,避免应用程序反复回调数据库;
数据库连接池问题,仔细分析程序代码,是否没有close()连接?或者遗漏了finally 块?或者尽管有close()但并没有成功或者调整连接池大小;SQL语句及其索引或锁定属性问题,优化SQL语句及其索引或锁定属性。

3)在搜索引擎中输入汉字就可以解析到对应的域名,请问如何用LoadRunner进行测试?
a)建立测试计划,确定测试标准和测试范围
b)设计典型场景的测试用例,覆盖常用业务流程和不常用的业务流程等
c)根据测试用例,开发自动测试脚本和场景:
i.录制测试脚本
1.新建一个脚本(Web/HTML协议)
2.点击录制按钮,在弹出的对话框的URL中输入”about:blank”。

3.在打开的浏览器中进行正常操作流程后,结束录制。

4.调试脚本并保存。

可能要注意到字符集的关联。

ii.设置测试场景
1.针对性能设置测试场景,主要判断在正常情况下,系统的平均事务响应时间
是否达标
2.针对压力负载设置测试场景,主要判断在长时间处于满负荷或者超出系统承
载能力的条件下,系统是否会崩溃。

iii.执行测试,获取测试结果,分析测试结果
4)解释以下函数及他们的不同之处:
Lr_debug_message、Lr_output_message、Lr_error_message:
lr_debug_message 函数在指定的消息级别,处于活动状态时发送一条调试消息。

如果指定的,消息级别未处于活动状态,则不发出消息;
Lr_output_message:要发送不是特定错误消息的特殊通知;
Lr_error_message:函数将错误消息发送到,输出窗口和Vuser 日志文件
5)根据以下表,回答问题1-5
Student 表如下:
SNO SNAME SS SAGE SDEPT
----- -------------------- -- ---------- ---------------
95001 李勇男20 计算机系
95002 刘晨女19 信息系
95003 王名女18 数学系
95004 张立男19 信息系
Sc表如下:
SNO CNAME GRADE
---------- -------------------- ----------
95001 数据库92
95001 英语85
95001 操作系统88
95002 数据库90
95002 操作系统80
95003 英语87
95004 数学45
1.添加学生王五,学号为95005,性别是男,年龄是23。

insert into student values('95005','王五','男',23,'');
2. 将student表中的sdept字段改为dept
alter table student rename column sdept to dept;
3.查询student表中的姓名和年龄情况,分别以“姓名”,“年龄”作为别名。

select sname 姓名,sage 年龄from student;
4.显示sc的表结构
desc sc;
5.在student表上对学生名称建立索引,索引名为snameindex
create index snameindex on student(sname);
6.用一个语句将的李勇数据库成绩更换为刘晨的操作系统成绩
update sc set grade=(select grade from sc c,student s where s.sno=c.sno and s.sname='刘晨' and
ame='操作系统') where sno=( select sno from student where sname='李勇') and cname='数据库';
6)阅读下列说明,回答问题 1 至问题 5。

信息系统测试中,系统的时间特性、资源利用性等是衡量其效率的重要指标。

在软
件测试中我们通常会借助于自动化负载压力测试考核系统在一定的大用户量访问、长时间运行、大数据量处理的使用场景下系统的性能是否满足需求,在不满足的情况下通过故障诊断和性能调优的手段,获得系统性能的提升。

下图是某网上报名系统的负载压力测试拓扑图,主要包括数据库服务器、应用服务
器、网络设备、负载均衡设备以及测试用机。

测试环境网络带宽 100M,应用服务器选择Apache Tomcat 5.0,数据库服务器选择 Oracle 10G,两类服务器操作系统都采用 Windows 2000 Server(SP4)。

负载压力测试中模拟大量考生通过此系统执行网上报名,主要测试用例包括“考生注册”和“预定座位”,报名操作的顺序是先执行“考生注册”,再执行“预定座位”。

系统性能要求能够承受10000 用户并发访问,业务执行成功率保持在80%以上。

下表是测试结果数据,其中数据库服务器资源利用属合理范围,网络带宽足够,未在结果中描述。

[问题1]
衡量系统执行效率的时间特性指标中通常会包括:业务执行响应时间和吞吐量,请
描述上述两个指标的概念。

业务执行响应时间:是系统完事事务执行准备后所采集的时间戳和系统完成待执行事务所采集的时间戳之间的时间间隔,是衡量特定类型应用事务性能的重要指标,标志用户执行一项操作大致需要多长时间。

吞吐量:每分钟执行的业务数,或系统服务器每分钟能够处理的交易数。

[问题2]
简述此系统测试环境中负载均衡设备的作用。

作用1:将客户端的负载均匀分摊到不同的应用服务器上,达到最佳的服务器群性能。

作用2: 当某台应用服务器出现错误时,错误信息将会返回到负载均衡器上,然后会将客户的访问指向另一台应用服务器。

[问题3]
简述测试用机中负载压力测试工具主控台、负载压力测试工具负载生成器的作用, 并论述此项目中采用分布式部署负载生成器的原因。

负载压力测试工具主控台:管理负载生成器,并收集测试数据。

负载压力测试工具负载生成器的作用:模拟客户端执行负载压力测试。

此项目中采用分布式部署负载生成器的原因包括:
1)负载生成器测试用机硬件资源(CPU、内存)有限,不能模拟10000用户并发的负载。

2)测试执行会产生大量的业务流。

若采用一台测试机作为负载生成器,测试机的网卡宽带会成为测试瓶颈。

[问题4]请分析测试结果中的交易执行情况数据,陈述随并发用户数递增,交易执行成功率降低的可能原因。

分析测试结果中的应用服务器资源利用数据,判断服务器资源利用是否有瓶颈存在。

随并发用户数递增,交易执行成功率降低的可能原因是
1)服务器端架构设计不合理。

2)服务器端参数设置不合理。

3)软件系统实现存在问题。

应用服务器资源利用不存在瓶颈。

[问题5]若系统的性能不能满足需求,有哪些调优措施?
系统的性能不能满足需求调优措施包括:
1)检查软件设计,软件开发是否正确。

2)检查软件参数设置是否合理。

3)评估服务器端和数据库服务器的匹配是否满足系统性能需求。

相关文档
最新文档