Loadrunner性能测试小总结_第1页
Loadrunner性能测试小总结_第2页
Loadrunner性能测试小总结_第3页
Loadrunner性能测试小总结_第4页
Loadrunner性能测试小总结_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Loadrunner性能测试总结目录Loadrunner性能测试总结11.性能测试简介12.性能测试分类12.1.负载测试22.2.压力测试22.3.配置测试32.4.可靠性测试32.5.基准测试32.Loadrunner性能测试流程43.性能需求分析43.1.性能需求分析目标43.2.性能需求分析方法43.3.性能需求输出54.性能测试方案制定54.1.性能测试方案制定的依据54.2.性能测试方案的内容54.3.性能测试方案模板65.性能测试用例65.1.性能测试用例编写依据65.2.性能测试用例内容65.3.性能测试用例模板66性能测试脚本生成76.1.性能测试脚本生成准备76.2.性能脚

2、本录制76.3.性能测试脚本回放76.4.性能测试脚本完善87场景设计98场景监控99. 问题诊断及分析910.数据搜集及分析911.性能调优方向及方法912.性能测试报告的编写1012.1.性能测试报告的依据1012.2.性能测试报告的内容1012.3.性能测试报告的模板1113.常见问题及注意事项111. 性能测试简介性能定义是软件质量的一种特性,性能包括软件的时间特性和资源的消耗。可以通过性能测试,可以搜集吞吐量、平均事务影响时间、TPS、点击率、资源(CPU、内存、磁盘等)利用率、性能计数器等性能指标数据,了解² 软件最大可支持的并发数² 软件的最大处理能力

3、8; 软件在最大并发情况下,最长并发时间² 软件在最大并发情况下的处理错误能力² 软件在最大并发情况下软件和硬件的最优配置² 软件性能瓶颈² 软件调优方向通过发现软件性能缺陷,对软件进行调优(包括硬件、软件及服务器等的最优配置),确保软件运行的稳定性,提高客户使用软件的满意度,最终从性能方面保证软件的质量。2. 性能测试分类性能测试根据不同的测试方法(比如根据不同的测试场景)和性能测试目标进行划分负载测试、压力测试、配置测试、可靠性测试和基准测试。2.1. 负载测试1. 负载的定义:负载即系统可承受的并发数(服务器可处理的客户端的请求数);2. 负载测试

4、的定义:负载测试是通过不断加压,直到系统超过预定指标(比如平均事务响应时间超过预定目标)或者部分资源已经达到饱和(比如服务器CPU利用率超高等),系统不能再加压为止;3. 负载测试的目标:获取系统的最大负载能力(获取系统的最大吞吐量-服务器正确处理客户端最大请求数);4. 负载测试环境:在特定的场景中执行性能测试脚本;5. 负载测试方法:对系统不断加压,直至系统超过预定指标或者部分资源已经达到饱和。2.2. 压力测试1. 压力测试的定义:压力测试就是系统已经达到一定饱和程度,使系统持续运行一段时间不报错的测试;2. 压力测试目标:获取系统饱和程度下,系统稳定运行的最长时间;3. 压力测试方法:

5、在最大负载下,不断延长持续时间,直至系统超过预定指标或者报错等。2.3. 配置测试1. 配置测试的定义:通过调整系统的软硬件环境,了解各种环境对系统性能的影响,从而找到系统的最优配置;2. 配置测试的目标:获取系统的软硬件环境的最优配置;3. 配置测试的方法:在不同的测试环境下运行系统,通过对比分析,获取最优配置。2.4. 可靠性测试1. 可靠性测试的定义:系统在高并发情况下的容错能力的测试;2. 可靠性测试的目标:系统在高并发情况下的容错能力;3. 可靠性测试的方法:系统在高并发情况下,实时监控,报错后,系统的是否可以恢复运行。2.5. 基准测试1. 基准测试的定义:系统在一定的软硬件及网络

6、环境下,模拟一定虚拟用户进行并发测试,记录测试结果打为基线和真实场景下的性能结果进行对比,查看是否达到性能调优效果;2. 基准测试的目标:系统性能调优效果的验证;3. 基准测试的方法:虚拟用户并发的性能结果和真实场景下的性能结果进行对比分析。2.Loadrunner性能测试流程3.性能需求分析3.1.性能需求分析目标通过分析系统的业务框架和及技术框架,获取² 系统运行的软硬件环境² 系统运行的高频率业务服务器吞吐量² 客户可接受的系统中各业务的响应时间3.2. 性能需求分析方法l 类比法:如果该系统没有上线,就参照类似项目或者产品的性能需求指标;l 历史数据参考:

7、如果系统已经上线,就参照历史数据建模,推算未来一段时间时间运行的性能指标;l 推算:系统试运行一段时间后,根据运行推广的数据进行推测性能指标;l 调研:直接向客户或者有经验的人士调研,获取性能需求指标;l 综合分析法:实际项目中,都是综合以上各种方法,获取系统运行的性能指标。3.3. 性能需求输出性能测试工程师进行性能分析后,需要编写性能需求规格说明书。4. 性能测试方案制定4.1.性能测试方案制定的依据性能测试工程师根据性能测试需求,制定合理的性能测试方案。4.2. 性能测试方案的内容u 项目简介u 项目性能需求指标u 性能工具的选择u 性能测试计划u 性能测试环境u 性能测试方法u 性能测

8、试内容4.3. 性能测试方案模板性能测试模板见文档超链接:5. 性能测试用例5.1. 性能测试用例编写依据性能测试工程师根据性能需求规格说明书,编写性能测试用例。5.2. 性能测试用例内容u 用例编号u 用例名称u 用例范围u 测试前置条件u 测试步骤u 预期目标u 测试执行情况5.3. 性能测试用例模板性能测试用例模板见文档超链接6性能测试脚本生成6.1.性能测试脚本生成准备1. 选择脚本协议:通过Virtual User Generator自带的协议分析工具或者httpwatch等其他工具获取系统使用的协议,或者开发人员或技术文档(概要设计说明书、详细设计说明书等)中获取系统使用的协议,在

9、脚本录制前,选择合适的协议进行录制;2. 修改脚本录制设置:可以修改的内容为脚本语言、脚本格式、脚本属性、脚本数据格式扩展、网络端口映射和HTTP属性;3. 分析系统架构:通过技术文档或者和开发工程师确认分析系统是B/S架构还是C/S架构;4. 浏览器的选择:选择系统支持的浏览器,并设置为默认浏览器;5. 选择脚本生成的部分:脚本有init、action和end三个部分,录制脚本时分段切换进行录取。6.2.性能脚本录制根据性能脚本录制向导进行录制脚本,把事务、集合点和检查点录制在脚本的action部分,init和end部分在脚本迭代执行时仅执行一次,仅做action迭代,故在脚本init和en

10、d部分不插入事务、集合点和检查点。6.3.性能测试脚本回放1. 回放的目的:² 验证脚本录制的是否成功² 完善脚本2. 回放失败的原因:² 脚本录制失败² 脚本中含有动态参数,需要参数化或者关联:因性能测试脚本录制时是截取浏览器和服务器交互的过程,而脚本回放或运行脚本是模拟浏览器和服务器进行交互,当再次按照原交互信息进行访问时,可能会因为服务器返回的动态信息不同服务器验证或者其他原因,导致回放失败。6.4.性能测试脚本完善u 参数化:为了更好的模拟真实业务场景,可以对一些业务等动态数据设置参数,参数类型多种,可以是文件格式也可以通过sql工具载入,为了方

11、便管理,参数文件和脚本文件分离;u 关联:因再次访问服务器时,因服务器返回的ID或者其他一些动态数据,需要通过手动关联或者自动关联方式进行完善脚本;u 增加性能函数:通过loadrunner自带的一些脚本函数进行完善脚本;u 通过编程语言自定义:通过loadrunner可以支持的C语言、.NET语言或者java语言等来完善脚本。7场景设计根据性能需求规格说明书和性能测试用例,设计脚本运行的各种场景。8场景监控运行场景前,需要在controller中添加性能计数器,比如服务器、数据库服务器或者负载客户端等性能监控器进行实时监控和根据运行日志进行事后监控。也可以通过其他监控工具进行监控系统部分资源

12、的性能情况。9. 问题诊断及分析场景运行过程中,如果有报错信息,及时记录,并根据运行日志并做相应分析10.数据搜集及分析借助analysis分析工具对各场景运行结果进行交叉、关联综合分析,也可借助运行日志信息,定位系统性能瓶颈,并给出性能指标。11.性能调优方向及方法根据定位的系统瓶颈,综合分析,确定系统性能的调优方向及方法。12.性能测试报告的编写12.1.性能测试报告的依据根据controller在不同场景下的运行结果,利用analysis分析工具对数据和运行环境进行对比分析,自动生成loadrunner自带的性能测试报告。12.2.性能测试报告的内容u 项目背景u 项目概述u 性能测试目

13、标u 性能测试人员u 性能测试工具u 性能测试需求u 性能测试方法u 性能测试场景u 性能测试结果u 性能测试数据分析u 性能测试结论u 性能测试调优建议u 性能测试附录-脚本、场景、日志和运行结果文件12.3.性能测试报告的模板性能测试模板见文档超链接13.常见问题及注意事项1. loadrunner的安装流程及注意事项1) 先安装英文版的loadrunner11;2) 汉化;3) 破解4) 清空并输入最新的license;5) 打开loadrunner中的controller验证是否成功破解;2. 录制脚本时如何选择协议² 通过loadrunner自带的协议分析软件²

14、通过httpwatch等工具² 通过分析技术框架,向开发工程师确认² 通过技术文档查询3. 脚本的组成部分及注意事项² 组成部分:init、action和end三个部分;² 注意事项:init和end部分中不能插入事务、集合点和检查点,仅允许在action中插入事务、集合点和检查点。4. 如何解决录制脚本为空的情况把录制时选择的浏览器设置为默认浏览器。5. 录制脚本形式的选择根据业务含义进行选择,一般选择html格式的脚本。6. 如何建立事务根据性能测试用例,定义事务,并在录制脚本的过程中或者完善脚本的过程中插入事务,并结束事务,以事务为单位记录系统的相

15、应时间。7. 集合点的设置及策略的选择² 在录制脚本的过程中插入集合点² 在完善脚本的过程中可插入集合点² 集合点插入的位置在插入事务的前面² 在controller中选择集合策略8. 检查点的设置及含义² 检查点在录制脚本的时候可以插入² 检查点在完善脚本的时候可以插入² 检查点在录制脚本的时候可以选择,自动生成检查点函数web_reg_find,比如生成页标题检查点函数或者子帧检查点函数² 插入检查点后,可以更好的验证事务是否操作成功,因为事务的结束并不意味着事务操作成功,为更好的记录事务影响时间²

16、检查点在事务结束函数之前插入9. 回放脚本注意事项² 注意选择虚拟用户的运行方式,比如是线程运行还是进程运行² 注意脚本的思考时间的设置² 迭代次数的设置² http超时设置10. 参数的设置及应用u 应用情况:当录制的脚本有动态数据产生(可以录制两个不同的脚本进行对比分析)时,可以把有些动态数据定义为变量,比如用户名,密码,新增时,各业务动态数据等,变量值在参数列表中展示,取值方式,在参数列表中设定。u 参数类型:(1)file;(2)BPT;(3)custom;(4)Date/Time;(5)Group Name;(6)Iteration Numbe

17、r;(7)Random Number;(8)Load Generator Name;(9)Table;(10)Unique Number;(11)User Defined Function;(12)User ID;(13)XML。u 语法格式:在参数列表中定义参数名称,选择参数类型,创建参数文件,设置取值方式,在脚本中用参数名称替换动态数据值。u 应用:在脚本中设定参数后,在脚本多次迭代运行时,虚拟用户可以从参数列表中获取不同的数值,尽可能真实地模拟虚拟用户的并发数据,也可以有效地避免唯一校验等各种问题。11. 关联的使用场景、方式u 使用场景:当录制的脚本包含类似服务器返回ID等动态数据时,

18、需要使用关联函数,先截取动态数据的值,再用截取的值,进行请求等交互性操作。一般情况下,客户端发起请求后,服务器会随机产生唯一标识的ID(适用于session),作为唯一性身份验证,再次发起请求,服务器会产生另外的ID,同一,session的ID相同,不同session不同,产生类似服务器返回的session的ID的动态数据时,就需要借助关联函数,否则,回放脚本再次发起会话请求时,就会因为服务器校验而报错。u 方式:l 手动关联:² 录制两个不同的脚本;² 用loadrunner自带的WDIFF工具进行比对两个脚本,找出动态数据,根据实际业务场景决定是否需要关联;²

19、 在录制的脚本日志中或者用httpwatch等插件,找出动态数据的值及返回的左右边界;² 在动态数据产生之前位置手动插入关联函数web_reg_save_param(),并严格定义各参数的值,比如左右边界值(需要转义的地方,注意转义字符的使用),参数值的长度等;² 在脚本中把动态数据值用参数名进行替换;² 回放脚本,进行验证。l 录制中关联:录制脚本前在录制选项中设置选择系统自带的关联规则或者自定义关联规则。l 录制后关联:脚本录制完成后,自动扫描脚本中的关联,建立需要的关联规则。12. 优化脚本常用的函数说明² web_set_max_html_par

20、am_len("256");² lr_save_datetime("%Y-%m-%d %H:%M:%S",DATE_NOW+TIME_NOW,"ts");² lr_output_message(lr_eval_string("Now is ts");*/² web_save_timestamp_param("ts", LAST); ² lr_output_message("%s",lr_eval_string("ts"

21、;);13. 场景的选择及设置(1) 依据:根据性能需求说明书和性能测试用例选择合适的场景;(2) 设置:选择场景模式(选择用户组Vuser组模式-自动分配负载组虚拟用户或者百分比模式-适合负载均衡),设置虚拟用户数、初始化方式、起始方式、持续时间和停止方式等,其中包含场景中的计划、也包括组的计划;² 方式:² 手动创建场景:根据不同的性能需求需要,手动创建需要的场景(根据场景创建向导);² 目标场景:根据性能需求和场景创建向导,选择脚本,编辑场景目标,创建目标场景。14. 负载生成器的应用可以通过负载生成器实现同一个controller控制多个不同的负载生成器(

22、load generator),可以是多个客户端的load generator,也可以是通过IP欺骗生成本机的多个虚拟负载。15. 负载均衡的原理及设置利用百分比模型,在多个客户端创建负载,用一个controller控制实现,均匀分配负载。16. 如何用一个controller控制多个负载生成器(可在多台机器上配置)及注意事项(1) 在controller上添加多个负载生成器,负载生成器的名称是客户端IP的名称,必须连接成功,才可以实现;(2) 必须确保多个负载生成器网络是畅通的,controller所在的机器可以访问共享C盘,在运行窗口输入:IP地址$C。17. IP欺骗原理及设置²

23、; 原理:因同一IP多次访问服务器,防火墙会阻止,所以在运行脚本时,要启用IP欺骗。² 设置:(1) 先设置IP欺骗,增加IP段,重启电脑,在cmd>dos模式下进行验证虚拟IP是否生效(ipconfig -all);(2) 在controller中启用专家模式和IP欺骗即可;(3) 使用完成后,在设置中释放虚拟IP,并重启电脑,在DOS环境下进行验证。18. 如何添加度量在controller中选择相应的图,双击打开,在右侧的图中,选中图,右键,添加相应度量。19. 执行测试脚本的注意事项² 检查脚本运行设置;² 检查负载生成器是否连接成功;²

24、检查运行的场景是否正确。20. 监控注意事项及各指标² 注意事项:(1) 注意添加需要的性能指标;(2) 注意实时监控,有重要报错信息时,停止脚本的运行,分析错误;(3) 注意修改结果的路径。² 各指标:l 判断CPU瓶颈(1) %processor time 平均值大于95(2)processor queue length大于2 (大于处理器个数+1).可以确定CPU瓶颈(3) CPU空闲时间为零(zero percent idle CPU)(4)过高的用户占用CPU时间(%User Time)(5)过高的系统占用CPU时间(%Priviliaged

25、Time:长期大于90%或者95%)备注: %User time(processor_total)表示耗费CPU的数据库操作,如排序,执行aggregate functions等。如果该值很高,可考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值如果发现processor queue length显示的队列长度超过2,而处理器的利用率却一直很低,或许更应该去解决处理器阻塞问题,这里处理器一般不是瓶颈。l 判断内存瓶颈与内存泄漏(1)如果发生了内存泄漏,processprivate bytes计数器和processworking set 计数器的值往往会升高,

26、同时avaiable bytes的值会降低。(2)如果Available Mbytes(剩余物理内存数)的值很小(4 MB 或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存。l 定位磁盘瓶颈(1)% Disk Time 和Avg.Disk Queue Length 的值 (应不大于组成物理磁盘的主轴数的 1.5 到2倍) 很高,而Page Reads/sec页面读取操作速率很低,则可能存在磁盘瓶径。(2)Physical Disk Disk Reads/sec and Disk Writes/sec 大于20 ms,则有可能磁盘瓶颈(3)Avg.Di

27、sk sec/Transfer  盘中写入数据的平均时间,单位是秒,一般来说,定义该值小于15ms最为优异,介于15-30ms之间为良好,30-60ms之间为可以接受,超过60ms则需要考虑更换硬盘或硬盘的RAID方式了(4)Disk Transfers/sec 指在此盘上读取/写入操作速率。正常值<(Disk Bytes/sec)/3,此值过大表示系统要求的IO速度已接近硬盘的最大速度,要更换更快的硬盘。 备注: 如果使用 RAID 设备,% Disk Time 计数器会指示大于 100% 的值。l 定位网络瓶颈 Byte Total/sec&#

28、160;表示网络中接受和发送字节的速度,可以用该计数器来判断网络是否存在瓶颈(参考值:该计数器和网络带宽相除,<50%) l SQL Server 相关(1) SQLServer:CacheManage ->Cache Hit Ratio 显示在高速缓存中找到数据的命中率。如果数值持续小于 85%, 则表示内存有问题。(2) SQLServer:Locks->Lock Waits/sec 显示在当前进程完成之前强制其他进程等待的每秒锁定请求的数量。如果该值始终大于 0, 则表示事务有问题。(3)SQLServer:Databa

29、ses->Transactions/sec 每秒为数据库启动的事务数。² 综合判断:(1) 处理器队列堵塞判断方法:如果Processor queue length大于2,而处理器利用率一直很低,则存在处理器堵塞。(2) 处理器瓶颈判断方法:排除内存因素后,如果%processor time持续大于90%,并且%interrupt time的值持续大于15%,同时网卡和硬盘的值比较低,可以断定处理器负荷过重,无法满足业务增长需要,处理器是系统瓶颈点。(3)监视内存不足的状况,可以通过 page/sec,Available Mbytes、page read/sec、pa

30、ge faults/sec等计数器的指标进行监控,还可以通过使用“页面交换”的频率来衡量。 “页面交换”是使用称为“页面”的单位,将固定大小的代码和数据块从RAM移动到磁盘的过程,从而释放暂时不使用的空间,这些页面文件就是操作系统用来虚拟内存的硬盘空面。操作系统对于虚拟内存主要设置两点,即内存页面文件的大小和页面文件存放的位置,内存页面文件的大小就是设置虚拟内存最小和最大空间量,而页面位置则是设置虚拟内存使用哪个分区中的硬盘空间。频繁的页面交换将降低系统性能,如果系统“页交换”频繁,说明内存不足。通过调优配置减少页交换,将显著提高系统响应速度。(4)通过pages/sec指标判断是否存在内存问

31、题,如果pages/sec持续高于几百,则有可能需要增加内存,以减少换页的需求,此时还应该进一步研究页交换活动。如果pages/sec指标过高(几百),而硬盘数据流量不高(几百kb/s)则可确定是内存不足问题,如果pages/sec指标较高(几百),而此时硬盘数据流量也很高(几千KB /S),则可以判定是磁盘问题。(5)通过 available mbytes来判断是否存在严重内存泄漏问题,如果该值很小(<4M),则说明计算机上总的内存可能不足,或者某个程序始终占用而没有释放内存,系统存在严重的内存泄漏问题。(6)如果页面读取操作速率page reads/sec指标的值很低,同时%disk

32、 time和avg.disk queue length的值却很高,则确定为磁盘瓶颈,但如果Avg.sidk queue length增加的同时page reads/sec页面读取速率指标并未降低,则确定为内存21. 各虚拟用户的状态汇总及含义u 状态:(1) 关闭:Vuser用户处于关闭状态;(2) 挂起:Vuser用户已经准备好,可以进行初始化,正在将脚本传送至load generator;(3) 初始化:Vuser正在进行初始化,执行脚本的init部分;(4) 就绪:脚本已经完成初始化操作,可以运行action脚本部分了;(5) 正在运行:Vuser的action脚本正在运行;(6) 集合点:Vuser已经达到集合点,正在等待满足

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论