注:本试卷中题目所涉及性能测试工具如无特殊说明则均为 LoadRunner。 一、 填空题(1*17=17 分) 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 三种。 5. QALoad 中 Datapool 支持两种形式,分别为 Central Datapool 和 Local Datapool 。
二、 简答题 1. 客户交付一个性能测试项目,请阐述你的实施流程。 答案: 测试设计阶段: 1)了解被测系统的性能需求,定义测试目标和范围; 2)了解系统的技术信息,如系统架构等; 3)确定测试方案、进度安排,并制定测试计划,场景设置方案,及需要收集的测试数 据; 4)同相关人员协商讨论测试方案; 5)准备数据收集模板;不同项目的性能测试,需要收集的数据不同;针对性的制定 一个模板,更符合需要; 测试环境准备: 1)技术准备;选择性能测试工具;测试方案中涉及到的技术问题;测试数据的收集 方案实现;如:如何监控系统资源等; 2)搭建测试环境; 3)创建初始数据;如虚拟用户使用的账号等; 测试执行阶段: 1)录制脚本; 2)调试脚本; 3)执行场景; 4)收集测试数据,并简单整理; 测试分析阶段: 1)分析测试数据; 提交测试报告。 2. 解释 5 个常用的性能指标的名称与具体含义(5 分) 答案:
� � � � 并发:所有用户在同一时刻对系统执行操作,一般指做同一件事情或操作。 � � � � 在线:所有用户在一段时间内对系统执行操作。 � � � � 请求响应时间 从 client 端发出请求到得到响应的整个时间; 包括:client 端响应时间+网络响应时间+Server 端响应时间。 � � � � 事务请求响应时间 完成相应事务所用的时间;这个是性能测试中重点关注的指标。 � � � � TPS(Transaction Per Second) 每秒钟系统能够处理的交易或事务的数量。它是衡量系统处理能力的重要 指标。TPS 是 LoadRunner 中重要的性能参数指标。 � � � � 点击率(Hit Per Second) 每秒发送的 HTTP 请求的数量;点击率越大对 Server 的压力越大 � � � � 资源利用率 对不同资源的使用程度,如 CPU,I/O,内存,……
3. 3. 3. 3. 写出 5 5 5 5个 Loadrunner Loadrunner Loadrunner Loadrunner中常用函数,并对其中 2 2 2 2个举例说明用法。 答案: 字符串复制 strcpy(str,"Hello ") ; 字符串连接 strcat(str,"World !"); lr_message("str: %s",str); sprintf(s, "%s love %s.", "I", “ocean"); //产生:“I love ocean. " 变量转为参数,将变量 str 的值存到参数 Param 中 lr_save_string(str,"Param"); 参数复制 lr_save_string(lr_eval_string("{Param}"),"Param_1"); 参数转为变量 strcpy(str1,lr_eval_string("{Param_1}"));
4. 4. 4. 4. 简述 LoadRunner LoadRunner LoadRunner LoadRunner的工作原理? 答案:loadrunner 会自动监控指定的 URL 或应用程序所发出的请求及服务器返回的响 应,它做为一个第三方(Agent)监视客户端与服务器端的所有对话,然后把这些对话 记录下来,生成脚本,再次运行时模拟客户端发出的请求,捕获服务器端的响应。
5. LaodRunner 脚本中 action()和 init、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. 如何设置才能让集合点只对一半的用户生效? 答案:在 Loadrunner 中,进入 Controller->Scenario->Rendezvous …->Policy,系统 弹出 Policy 对话框。在该对话框中可以设定集合点执行的策略。 第一项:表示当所有用户数的 X%到达集合点时,开始释放等待的用户并继续执行场 景。 第二项:表示当前正在运行用户数的 X%到达集合点时,开始释放等待的用户并继续 执行场景。 第三项:表示当 X 个用户到达集合点时,开始释放等待的用户并继续执行场景。 其中还有一项 Timeout between Vusers,就 30 秒来说,当第一个用户到达集合点 后,再等待 30 秒,如果在 30 秒内到达的用户数达到指定的数量,就开始继续执行场景。 如果在 30 秒内还没有达到指定的用户数量,就不再等待,开始释放等待的用户并继续 执行场景。 由上可知,将第一项用户数设置成 50%可。 11. 使用 LoadRunner 进行综合场景测试,如何设置能够使被测系统所受压力减轻,请分 别加以说明。 答案:若使被测系统所受压力减轻,可从如下方面进行综合调解: 1) 将测试脚本中 think time 值加大并在控制台中按比例实现,此处 think time 指在 transaction 外部的时间; 2) Controller 中 Run-Time Setting 的 Pacing 设置值加大; 3) 虚拟用户登录时使用递增策略,间隔稍长。 12. 如何用 LoadRunner LoadRunner LoadRunner LoadRunner实现多机联合性能测试。 答案:多机联合测试模型能够有效的提供大负载量进行并行测试,并且具有负载均衡的 能力,将大负载量分配到若干个代理 PC 机上进行联合测试。相较于单个测试 PC 机 进行独立测试所产生的负载量以及消耗的系统资源,多机联合测试模型能够产生规
模更大的测试负载量,而且对每个代理 PC 机而言也大大减少了系统资源的消耗。 具体设置:在控制台中的 load Generator 中添加相应代理 PC 机的 IP 地址,再 测试连通性即可。 13. LoadRunner LoadRunner LoadRunner LoadRunner的 Controller Controller Controller Controller组件中 Pacing Pacing Pacing Pacing参数的作用是什么? 答案: 设置 LoadRunner LoadRunner LoadRunner LoadRunner中事务(trsaction)在每次循环中的间隔时间,系统可以利 用该间隔时间进行相应事务的结束收尾工作的处理。加大 Pacing Pacing Pacing Pacing参数,可使系统压力 减小。 14. 14. 14. 14. LoadRunner LoadRunner LoadRunner LoadRunner中,如果 Web Web Web Web窗体中包含有 JavaScript JavaScript JavaScript JavaScript 脚本,那么在 TreeView TreeView TreeView TreeView 视图 中显示可能会有问题。如何解决这个问题?
答案:可以在“General”选项中进行适当设置。单击“Tools”菜单选择 “General Options”。 进入图所示的设置窗口,切换到“Correlation”选项卡上, 选中“Enable Scripting and Java applets on Snapshots viewer”的复选 框即可。
单击“OK”后,设置完毕。
15. 15. 15. 15. LoadRunner LoadRunner LoadRunner LoadRunner中如何监控 Windows Windows Windows Windows资源? 答案:进入被监视 windows windows windows windows系统,开启以下二个服务:Remote Remote Remote RemoteProcedure Procedure Procedure ProcedureCall(RPC) Call(RPC) Call(RPC) Call(RPC) 和 Remote Remote Remote RemoteRegistry Registry Registry RegistryService Service Service Service;在 controller controller controller controller 中,Windows Windows Windows WindowsResources Resources Resources Resources 窗口中右击鼠标选 择 Add Add Add AddMeasurements Measurements Measurements Measurements,添加被监控 windows windows windows windows的 IP IP IP IP地址,选择所属系统,然后选择需 要监控的指标就可以开始监控。 16. 16. 16. 16. 如果让 QALoad 模拟 LoadRunner 中只对关注的性能点进行迭代测试,你有什么好方 法? 答案:LoadRunner LoadRunner LoadRunner LoadRunner中把关注的性能点(如查询文档)放在脚本的 Action Action Action Action()中运行, 可以实现迭代的方式进行测试。如果使 QALoad QALoad QALoad QALoad 模拟迭代的过程,可以将脚本中 关注的性能点放在循环中实现。如综合场景测试过程要执行 1 1 1 1 小时,则可以在 Qaload Qaload Qaload Qaload的场景执行时间中设置 1 1 1 1小时,在脚本相关处写条件永远为真的循环来实 现。
三、 LoadRunner 工具使用题:(20 分) 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, 为脚本回放成功,需要对字符串中某些字符做一定处理,写出详细实现方法。 答案(概要): 1、 发现文中两个字符串为动态 ID:" RSDP0013425"和" RSDP1203655"; 2、 对动态 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}")); 3 、 在 后 续 代 码 中 如 遇 到 该 动 态 ID 可 由 “ id ” 变 量 代 替 。 替 换 形 式 如 : "Name=outboundFlight", "Value={out}", ENDITEM
四、 【数据库应用】现有 Customers 表和 Sales 表的数据如下:(10 分) 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) select * from Customers where Name = ‘AA’ 2) delete from Sales where SaleID = 234115 3) select SaleID,CustID,Name,Discount,SaleMount from Customers, Sales where Customers.CustID = Sales. CustID
五 QALoad 工具使用题 用 Qaload5.1 录制脚本,无法成功并发执行,部分内容如下: DO_Http("GET http://192.168.107.189/layout/style/style1/icon-bg.gif HTTP/1.0\r\n" "Accept: */*\r\n" "Referer:http://192.168.107.189/shouwencontroller?command=" "GetShouwenhao&businessid="ar0000011199"&instanceid=&snian=&slaiwenl eibie=" "&swenhao=&tasktype=&url=&CLIENT_SYN_ID1=1142480138645&businesstitle=" 。。。。。。(后略) 通过对比,发现上述脚本包含 2 个动态 ID 号:businessid 和 CLIENT_SYN_ID1, 查看对应源文件,有如下内容: input type="hidden" name="businessid" value="ar0000011199"> input type="hidden" name="CLIENT_SYN_ID1" value=1142480138645> 请修改上面脚本,使之能够成功并发执行。 答案: char *businessid; char *clientid; businessid=DO_GetUniqueString("name=\"businessid\" value=\"","\">"); clientid=DO_GetUniqueString("name=\"CLIENT_SYN_ID1\" value=",">"); DO_SetValue("businessidx",businessid); DO_SetValue("clientidx",clientid);
DO_Http("GET http://192.168.107.189/layout/style/style1/icon-bg.gif HTTP/1.0\r\n" "Accept: */*\r\n" "Referer:http://192.168.107.189/shouwencontroller?command=" "GetShouwenhao&businessid={businessidx}&instanceid=&snian=&slaiwenleibi e=" "&swenhao=&tasktype=&url=&CLIENT_SYN_ID1={*clientidx}&businesstitle="
free(businessid); free(clientid);
六、实践题 下面是一个项目的性能测试结果,请分析可能存在的性能问题。
Unix 服务器性能监控(数据库服务器内存 8G,上千万行大量数据)
监控对象 性能参数 说明
内存 Memory
Real Free MBytes 可用自由内存总量,单位是兆字节 Virtual Free MBytes 可用自由虚拟内存总量,单位是兆字 节
网络 Network Interface
Bytes Total/s
网络发送和接收的速率,单位是字节/ 秒
磁盘 Physical Disk
Disk Read KB/s 磁盘读取速率,单位是千字节/秒
Disk Write KB/s 磁盘写入速率,单位是千字节/秒
处理器 Processor
CPU Time% 处理器执行非闲置线程时间的百分比
Wait Time% 处理器执行等待时间的百分比
Linux 服务器性能监控(应用服务器内存 4G)
监控对象 性能参数 说明
内存 Memory
Available Swap MBytes 显示 Swap 空间的剩余量,单位是千字 节 Free Memory MBytes 可用自由内存总量,单位是千字节
网络 Network Interface
Bytes Total/s
网络发送和接收的速率,单位是字节/ 秒
磁盘 Physical Disk
Disk Read KB/s 磁盘读取速率,单位是千字节/秒
Disk Write KB/s 磁盘写入速率,单位是千字节/秒
处理器 Processor
CPU Time% 处理器执行非闲置线程时间的百分比
Wait Time% 处理器执行等待时间的百分比
表 1 单用户执行 XX 查询
时间特性表
测试过程说明
测 试 结 果 (时间单位:秒)
用户数 响应时间
XX 查询 1 51.77
资源特性表 最小值 平均值 最大值
数据 库服 务器 资源 特性
内存 Memory
Real Free MBytes 4474.00 4479.05 4487.40
Virtual Free MBytes 16116.60 16116.60 16116.60
网络 Network Interface
Bytes Total/sec 0.00 11.36 393.00
磁盘 Physical Disk
Disk Read KB/s 0.00 5539.28 8437.50
Disk Write KB/s 0.00 21.99 339.80
处理器 Processor
CPU Time% 0.00 1.78 3.60
Wait Time% 0.00 13.67 17.30
应用 服务 器资 源特 性
内存 Memory
Available Swap KBytes 2045.60 2045.60 2045.60
Free Memory KBytes 49.40 49.44 49.50
网络 Network Interface
Bytes Total/sec 0.00 24.29 807.40
磁盘 Physical Disk
Disk Read KB/s 0.00 0.00 0.00
Disk Write KB/s 0.00 15.25 143.20
处理器 Processor
CPU Time% 0.00 0.26 4.00
Wait Time% 0.00 0.00 0.00
表 2 20 用户并发执行 XX 查询
时间特性表
测试过程说明
测 试 结 果 (时间单位:秒)
并发用 户数
成功 用户 数
最小响 应时间
平均响应 时间
最大响应 时间
90%响应 时间
XX 查询 20 20 82.29 83.15 84.42 83.60
资源特性表 最小值 平均值 最大值
数据 库服 务器 资源 特性
内存 Memory
Real Free MBytes 4430.50 4963.65 6477.20
Virtual Free MBytes 16115.70 16116.97 16120.90
网络 Network Interface
Bytes Total/sec 2.40 175.82 2198.20
磁盘 Physical Disk
Disk Read KB/s 0.00 110732.71 196719.10
Disk Write KB/s 0.00 30.80 441.60
处理器 Processor
CPU Time% 0.10 23.30 59.00
Wait Time% 0.20 39.17 86.60
应用 服务 器资 源特 性
内存 Memory
Available Swap KBytes 2045.60 2045.60 2045.60
Free Memory KBytes 48.00 49.26 49.80
网络 Network Interface
Bytes Total/sec 0.00 494.85 6245.60
磁盘 Physical Disk
Disk Read KB/s 0.00 0.00 0.00
Disk Write KB/s 0.00 19.53 163.20
处理器 Processor
CPU Time% 0.00 2.70 36.80
Wait Time% 0.00 0.00 0.00
表 3 40 用户并发执行 XX 查询
时间特性表
测试过程说明
测 试 结 果 (时间单位:秒)
并发用 户数
成功 用户 数
最小响 应时间
平均响应 时间
最大响应 时间
90%响应 时间
XX 查询 40 40 129.59 135.56 137.92 137.28
资源特性表 最小值 平均值 最大值
数据 库服 务器 资源 特性
内存 Memory
Real Free MBytes 4332.60 4387.76 4518.50
Virtual Free MBytes 16113.90 16114.82 16117.20
网络 Network Interface
Bytes Total/sec 2.20 190.71 2178.50
磁盘 Physical Disk
Disk Read KB/s 0.00 96505.14 197150.20
Disk Write KB/s 0.00 24.63 361.70
处理器 Processor
CPU Time% 0.10 25.05 97.70
Wait Time% 0.00 45.51 89.40
应用 服务 器资 源特 性
内存 Memory
Available Swap KBytes 2045.60 2045.60 2045.60
Free Memory KBytes 48.00 48.74 49.80
网络 Network Interface
Bytes Total/sec 0.00 546.37 7271.00
磁盘 Physical Disk
Disk Read KB/s 0.00 0.00 0.00
Disk Write KB/s 0.00 17.27 254.80
处理器 Processor
CPU Time% 0.00 3.69 74.20
Wait Time% 0.00 0.00 0.00
答案: 1、 单用户查询的响应时间为 51.77 秒,时间过长,表明查询工作量大。建议优化 查询 SQL 语句,尽可能用上合适的索引,明显缩短查询时间; 2、 从资源占用情况来看,应用服务器没有明显压力,数据库服务器存在明显的资 源争用现象; 3、 数据库服务器磁盘读表现明显,20 用户并发执行时磁盘读平均值为 110.73M 字 节/秒,峰值达到 196.71M 字节/秒,这是总体响应时间过长的主要原因; 4、 数据库服务器 CPU 的占用率情况表现正常,但 CPU 的等待率较高,40 用户并发 执行时 CPU 平均等待率为 45.51%,峰值达到 89.40%,表明 CPU 经常处于磁盘 I/O 读入数据的等待之中,这同样能够证明磁盘 I/O 构成当前系统主要性能瓶颈。

posted on 2020-04-21 10:18  璇子的蓝色城堡  阅读(512)  评论(0编辑  收藏  举报