软件性能测试模拟笔试题目(一)
注:本试卷中题目所涉及性能测试工具如无特殊说明则均为LoadRunner。
一、 填空题(1*15=15分)
1. 软件性能测试的目的是为了 对软件系统的性能情况给于评价,并发现可能存在的性能问题
2. 常见的性能测试策略有 、 、 、 、 。
答案:基准测试,并发测试,在线测试,场景测试,负载测试,疲劳测试,极限测试,吞吐量测试,大数据量测试,内存泄漏测试等
3. LoadRunner由 Analysis 、 Controller 、 Virtual User Generator 三大模块组成,功能分别为 用于录制脚本 、用于创建运行及监视场景、 用于分析测试结果 。
4. 在用LoadRunner进行性能测试过程中Run-Time Setting的超时设置常用的有HTTP-request connect timeout(sec)、HTTP-request receive timeout(sec) 、 Step download timeout 三种。
二、 简答题(3*15=45分)
1. 客户交付一个性能测试项目,请阐述你的实施流程。
答案:
测试设计阶段:
1)了解被测系统的性能需求,定义测试目标和范围;
2)了解系统的技术信息,如系统架构等;
3)确定测试方案、进度安排,并制定测试计划,进度安排;,测试模块;,场景设置方案;,需要收集的测试数据;
4)同相关人员协商讨论测试方案;
5)准备数据收集模板;不同项目的性能测试,需要收集的数据不同;针对性的制定一个模板,更符合需要;
测试环境准备:
1)技术准备;选择性能测试工具;测试方案中涉及到的技术问题;测试数据的收集方案实现;如:如何监控系统资源等;
2)搭建测试环境;
3)创建初始数据;如虚拟用户使用的账号等;
测试执行阶段:
1)录制脚本;
2)调试脚本;
3)执行场景;
4)收集测试数据,并简单整理;
测试分析阶段:
1)分析测试数据;
提交测试报告:
2. 解释5个常用的性能指标的名称与具体含义。
答案:
l 并发:所有用户在同一时刻对系统执行操作,一般指做同一件事情或操作。
l 在线:所有用户在一段时间内对系统执行操作。
l 请求响应时间
从client端发出请求到得到响应的整个时间;
包括:client端响应时间+网络响应时间+Server端响应时间。
l 事务请求响应时间
完成相应事务所用的时间;这个是性能测试中重点关注的指标。
l 吞吐率
单位时间在网络上传输的数据量,是衡量网络性能的主要指标。
l TPS(Transaction Per Second)
每秒钟系统能够处理的交易或事务的数量。它是衡量系统处理能力的重要指标。TPS是LoadRunner中重要的性能参数指标。
l 点击率(Hit Per Second)
每秒发送的HTTP请求的数量;点击率越大对Server的压力也就越大
l 资源利用率
对不同资源的使用程度CPU,I/O,内存,……
3. 写出5个Loadrunner中常用函数,并对其中2个举例说明用法。
答案: int lrs_save_searched_string (char* s_desc, char* buf_desc, char* param_name,
char* left_boundary, char* right_boundary, int ordinal, int offset,
int param_len );
s_desc: socket连接的名称
buf_desc: 缓冲区名称
param_name: 变量名存储查找到的值
left_boundary 左边界
right_boundary 右边界
ordinal 存储查找到的第几个值
offset 偏移量,相对于左边界的偏移量
param_len 提取数据的长度,没有右边界必需设置。
4. 简述LoadRunner的工作原理?
答案:LR的工作原理是通过用户执行被测程序的客户端,在VuGen中录制被测系统的客户端和服务器的协议交互,生成脚本,然后在Controller中控制Load Generator,按照一定的配置(又称为场景),模拟一定数量的用户,对服务器产生压力,同时对被测系统涉及的操作系统,数据库,中间件等资源进行监控,收集压力情况下的资源信息,测试结束后形成测试结果和监控数据,在结果分析器中进行分析,最后生成测试结果报告。
5. LaodRunner脚本中action()和ini()t、end()除了迭代的区别还有其他吗?
答案:集合点只能插入到Action 部分,vuser_init和vuser_end 中不能插入集合点。action()和init、end()都可以插入事务点。
6. 什么是集合点?设置集合点有什么意义?LoadRunner中设置集合点的函数是哪个?
答案:集合点:是一个并发访问的点,例如在测试计划中,可能会要求系统能够承受1000 人同时提交数据,在LoadRunner 中可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,LoadRunner 就会检查同时有多少用户运行到集合点,如果不到1000 人,LoadRunner 就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到1000 人时,LoadRunner 命令1000 人同时去提交数据,并发访问的目的。
注意:集合点经常和事务结合起来使用,常放在事务的前面,集合点只能插入到Action 部分,vuser_init和vuser_end 中不能插入集合点。集合点函数如下:lr_rendezvous(“SubmitData”)
7. 录制Web脚本时,生成的脚本中存在乱码该如何解决?
答案:录制脚本前,打开录制选项配置对话框Record-Options,进入到Advanced标签,先勾选“Support charset”,然后选择中支持UTF-8再次录制,就不会出现中文乱码问题了。
8. HTML-based script与URL-based script的脚本有什么区别?
答案:使用“HTML-based script”的模式录制脚本,VuGen为用户的每个HTML操作生成单独的步骤,这种脚本看上去比较直观;使用“URL-based script”模式录制脚本时,VuGen可以捕获所有作为用户操作结果而发送到服务器的HTTP请求,然后为用户的每个请求分别生成对应方法。
通常,基于浏览器的Web应用会使用“HTML-based script”模式来录制脚本;而没有基于浏览器的Web应用、Web应用中包含了与服务器进行交互的Java Applet、基于浏览器的应用中包含了向服务器进行通信的JavaScript/VBScript代码、基于浏览器的应用中使用了HTTPS安全协议,这时使用“URL-based script”模式进行录制。
9. network中的speed simulation模拟的是什么带宽?
答案:模拟用户访问速度的带宽自定义带宽(作用到虚拟用户)
10. 如何设置才能让集合点只对一半的用户生效?
答案:对集合点策略进行相应的设置即可。即在controller中,点击Scenario-Rendezvous-policy进行相应的设
11. 使用LoadRunner进行综合场景测试,如何设置能够使被测系统所受压力减轻,请分别加以说明。
答案:若使被测系统所受压力减轻,可从如下方面进行综合调解:
测试脚本中think time值调长,此处think time指在transaction外部的时间;
Controller中Run-Time Setting的Pacing和think time设置值调长;
用户的并发量调整
虚拟用户登录时使用递增策略,间隔稍长。
12. 如何用LoadRunner实现多机联合性能测试?
答案:多机联合测试模型能够有效的提供大负载量进行并行测试,并且具有负载均衡的能力,
将大负载量分配到若干个代理PC 机上进行联合测试。相较于单个测试PC 机进行独立测试所
产生的负载量以及消耗的系统资源,多机联合测试模型能够产生规模更大的测试负载量,而
且对每个代理PC 机而言也大大减少了系统资源的消耗……
13. LoadRunner的Controller组件中Pacing参数的作用是什么?
答案:Pacing:即在场景的两次迭代 (iteration) 之间,加入一个时间间隔(步长)。
作用:降低单个用户启动请求的速度。间歇会减少请求在线程中驻留的时间,从而提供更符合现实的响应时间。
14. LoadRunner中,如果Web窗体中包含有JavaScript 脚本,那么在TreeView 视图中显示可能会有问题。如何解决这个问题?
答案:可以在“General”选项中进行适当设置。单击“Tools”菜单选择“General Options”,如图所示。 进入图所示的设置窗口,切换到“Correlation”选项卡上,选中“Enable Scripting and Java applets on Snapshots viewer”的复选框即可。 单击“OK”后,设置完毕。
选择“General Options”
15. LoadRunner中如何监控Windows资源?
答案:进入被监视windows系统,开启以下二个服务:Remote Procedure Call(RPC)和Remote Registry Service;在controller 中,Windows Resources窗口中右击鼠标选择Add Measurements,添加被监控windows的IP地址,选择所属系统,然后选择需要监控的指标就可以开始监控了。
三、 LoadRunner工具使用题:(8*2=16分)
1. web系统中,username参数表为file类型,表中有12个值,分别A、B、C、D、E、F、G、H、I、J、K、L。测试场景中虚拟并发用户数设为4,迭代次数设为3,参数中Select next row与Update value on分别为(Sequential, Each Iteration)与(Unique, Once)时,写出迭代3次的取值情况。
(Select next row, Update value on) 虚拟用户取值(VUi:迭代时取值)
(Sequential, Each Iteration)
VU1:A,B,C
VU2:A,B,C
VU3:A,B,C
VU4:A,B,C
(Unique, Once)
VU1:A,A,A
VU2:B,B,B
VU3:C,C,C
VU4:D,D,D
2. web系统脚本录制过程中,两次录制同一功能点,在View Tree的Server Response中产生的字符串分别为:
Server Response:name="_id_Node " value=" RSDP0013425" />", ENDITEM,
Server Response:name="_id_Node " value=" RSDP1203655" />", ENDITEM,
为脚本回放成功,需要对字符串中某些字符做一定处理,写出详细实现方法。
答案(概要):发现文中两个字符串为动态ID;对动态ID进行处理,利用下面函数,将动态ID的值取出保存在“id”变量中。
web_reg_save_param("id","LB=Server Response:name=\"_id_Node \" value=\" ","RB=\" \/>\", ENDITEM,",LAST);lr_log_message("%s",lr_eval_string ("{id}"));在后续代码中如遇到该动态ID可由“id”变量代替。
四、 【数据库应用】现有Customers表和Sales表的数据如下:(9分)
Customers表:
CustID Name City Discount
449320 Adapto PortLand 0.05
890003 AA PortLand 0.05
888402 Seaworth Albany 0.04
Sales表:
SaleID CustID SaleMount
234112 499320 8000
234113 888402 6500
234114 499320 5900
234115 890003 4500
要求:
1) 给出查询语句,描述:在Customers表中查询名字为AA的查询语句;
2) 给出删除操作,描述:在Sales表中删除SaleID为234115的语句。
3) 根据以下结果表给出多表查询语句。
SaleID CustID Name Discount SaleMount
234112 499320 Adapto 0.05 8000
234113 888402 Seaworth 0.04 6500
234114 499320 Adapto 0.05 5900
234115 890003 AA 0.05 4500
1)给出查询语句,描述:在Customers表中产讯名字为AA的查询语句;
答案:select * from Customers where Name =‘AA’
2)给出删除操作,描述:在Sales表中删除CustID为234115 的语句。
答案:delete SaleID ,CustID,SaleMount from Sales where CustID = 234115
3)根据以下结果表给出多表查询语句。
SaleID CustID Name Discount SaleMount
234112 499320 Adapto 0.05 8000
234113 888402 Seaworth 0.04 6500
234114 499320 Adapto 0.05 5900
234115 890003 AA 0.05 4500
答案:select SaleID,CustID,Name ,Discount,SaleMount from Customers C ,Sales S
Where S. CustID=C. CustID
五、实践题(15分)
下面是一个项目的性能测试结果,请分析可能存在的性能问题。
答案:
1、单用户查询的响应时间为51.77秒,时间过长,表明查询工作量大。建议优化查询SQL语句,尽可能用上合适的索引,明显缩短查询时间;
2、从资源占用情况来看,应用服务器没有明显压力,数据库服务器存在明显的资源争用现象;
3、磁盘读表现明显,20用户并发执行时磁盘读平均值为108.14M字节/秒,峰值达到192.11M字节/秒,这是总体响应时间过长的主要原因;
4、CPU的占用率情况表现正常,但CPU的等待率较高,40用户并发执行时CPU平均等待率为45.51%,峰值达到89.40%,表明CPU经常处于磁盘I/O读入数据的等待之中,这同样能够证明磁盘I/O构成当前系统主要性能瓶颈。