小白学习LoadRunner,成功完成性能测试

本文档详细介绍了如何使用LoadRunner进行性能测试,包括使用Fiddler录制HTTP/HTTPS交易脚本,处理登录session,创建和分析SOCKET脚本,以及执行基准测试、负载测试和混合测试。此外,还探讨了脚本失败的常见原因和解决策略,提供了资源监控工具nmon的使用方法。

一、背景、目的和工具简介:

1.背景

        23年5月底接到任务:为保障项目6月底准时上线,需要博主6月底前完成行内的性能测试。博主作为开发人员,偶尔有使用jmeter自测接口性能,但是尚未以测试人员角色走完过性能流程的经历,因此体验了一遍流程,也就有了这篇文章。

2.目的:

        针对PC端HTTP、SOCKET交易,快速入手,实现基准测试、负载测试、稳定性测试、异常压力测试、故障测试。

3.工具:

        LoadRunner11(创建场景、录制脚本)、LoadRunner12(录制脚本)、Fiddler(抓包,方便录制脚本)、nmon(监控服务器CPU、内存、IO等)、nmon analyser v55.xlsm(分析nmon输出的nmon文件,转化为.xlsx)。


注:压力机远程桌面安装的是LoadRunner11,小白(博主第一次使用LoadRunner,对得起小白的名号)想先在本地熟悉工具的使用,而本地只有LoadRunner12,于是用LoadRunner12录制脚步。但是发现录制脚本失败,上网查询良久没找到原因,最后找到了其他方法辅助录制脚本,也就是Fiddler,因此工具看起来有点多,别担心都是纸老虎。录制Socket脚本的时候发现LoadRunner11和LoadRunner12语法不一样(socket脚本中变量标识符由<>变成了{}),如果可以的话,建议直接使用LoadRunner11。

二、如何使用Fidder录制PC端基于HTTP/HTTPS交易的脚本?

1.安装软件,略去。。

2.运行Fiddler

        左上角File勾选Capture Traffic,如下图:

3.使用浏览器触发需要录制的交易

        确定要录哪个具体的交易,后台哪个功能菜单包含这个交易,然后通过浏览器打开这个功能菜单,触发交易,本次以交易:getMarketingList为例;

        

4.使用Fiddle生成目的交易的脚本

        打开Fiddle,找到对应的交易,然后右键选择Save->Selected Sessions->in ArchiveZIP...,保存在录制脚本的文件夹中,取名getMarketingList,得到getMarketingList.saz。

5.使用LoadRunner打开脚本

        右键getMarketingList.saz,选择Create VuGen script,自动唤起HP Virtual User Generator,界面如下图;有文件下载的弹窗,是否保存,直接取消。

6.初步运行脚本

        此时点运行按钮,提示“successsful”,那么恭喜你,初版脚本完成了;

7.扩展:把固定IP替换成变量;

       按照图上的操作替换IP

        

 

8.扩展:必须登录才可以成功触发的接口,动态替换session;

        8.1 编辑vuser_init

        目的是调getMarketingList交易前登录,获取session,然后把session动态数据保存起来,以便在getMarketingList请求头加上动态session达到动态替换的目的;

        8.2 开启事务、结束事务

        

        上图的标识1、2分别为开启事务、结束事务。事务是性能测试用来评估性能状况的基本单元;

        8.3 动态数据保存

        上图标识3为动态数据信息保存函数,自左往右参数分别为参数名、参数左边界、参数右边界,LAST是参数列表结束的标示。注意:动态参数userSession会在Action中用到;

        8.4 登录交易

        上图标识4为登录交易,{IP}为前面提到的参数;

        8.5 根据登录结果,判断是否登录成功

        上图标识5含有strcmp函数、lr_eval_string()函数:strcmp函数作用是字符串比较,相等则返回0,strcmp(a,b)==0等同于!strcmp(a,b),lr_eval_string()函数作用是返回脚本中的一个参数当前的值;

        8.6编辑Action

        添加开启事务、结束事务、session动态参数、IP参数

        

        8.7编辑vuser_end,注销登录

        

 9.脚本运行成功的标识

三、如何录制SOCKET交易的脚本?

1.创建socket脚本

        HP Virtual User Generator左上角选择文件-》新建-》选择Windows Sockets协议,创建生成如下结构的目录。如下图(LoadRunner12截图):

2.一般不用处理vususer_init\vuser_end,直接编辑Action

       LoadRuner11 socket脚本如下,可参考此案例编写socket脚本

脚本注释已经很清楚了,主要说明上图标记的地方:

标识1、超时时间,案例中是30秒,可修改;

标识2、服务方的IP和端口,格式:127.0.0.1:10101,以<>符合包括表示变量,注意和前面{}包括表示变量不同;

标识3、4分别表示服务方返回报文中的响应码和返回信息,其中取返回码作为交易成功与否的标识,标识3、4需要修改成真实交易响应报文中响应码和响应信息的标签;

标识5、成功的代码,案例中000000表示成功,修改成对应的成功响应码;

第53行,关闭socket0连接前,应该再追加2行释放资源、链接失效的命令:lrs_free_buffer("socket0");lrs_disable_socket("socket0",DISABLE_SEND_RECV),避免压测过程中大量提示socket0没有缓存空间的错误。

 LoadRuner12 socket脚本如下

注:LoadRunner11 socket脚本以“<>”包括变量,LoadRunner12 socket脚本以“{}”包括变量。

稳定性压测需要加上lrs_free_buffer()参数,以便释放缓存,前几次稳定性压测持续了3个多小时后就因缓存问题大量报错而终止。

3.编辑data.ws

标识6、换成待测socket交易的请求报文;

标识7、2251是含8位数字的请求报文的总长度;

        长度可以在调试的时候试错获取,首先需要开启日志详情:导航栏Vuser(U) -》运行时设置-》常规(General)-》日志(Log),勾选下图标注位置(LoadRunner12截图):

 保存,运行,然后寻找报错信息中的字符串长度,然后减去8就是报文总长度,如下图:

 

总长度:2259-8=2251

4.脚本运行成功的标识

     

四、脚本失败常见原因及分析

  1. 先确保应用服务是否正常启动,数据库、redis、mq等是否正常连接;
  2. 交易路径是否正确;
  3. Socket脚本常见错误是请求报文的长度计算有误,打开详细日志,执行后会输出真实长度,再减去8(案例中是8位数字)就是真实长度。
  4. 打开详细日志步骤:运行时设置-》日志-》详细等级-》拓展日志;
  5. 执行压测的时候,可以根据目标TPS,设置延迟避免TPS太高但成功率不达标 ,操作流程:运行时设置-》步,如参考下图(LoadRunner12截图):1为参考值,并发不是要求很高且接口真实TPS比并发数高的情况下,设置1可以保持和并发数一样的TPS,且报错量较少。
  6. 压测过程中出现报错,引起Vuser不断减少,可以通过设置报错后继续解决,如下图(LoadRunner12截图):
  7. 不想查看报错信息,可以设置取消勾选忽略,如下图(LoadRunner11截图):

  8. 有时压测过程中,TPS突然降低到0,很可能是Vuser的内存分配不合理引起的,可以通过选择按进程运行Vuser。

五、创建场景与压测(LoadRunner11)

1. 基准测试

        1.1 创建场景

        打开HP Virtual User Generator,还是针对getMarketingList交易,导航栏选择工具-》创建Controller场景,设置场景保存目录,如下图。

        

        1.2 设置场景

        基准压测:一个用户连续调100次接口,是后面负载压测等的基础;先设置启动用户为1,如下图;

     

 设置持续时间为完成前一直运行,如下图:

设置迭代次数为1,选中带测交易,右键,然后选择运行时设置,设置迭代次数为100,最好点击运行开关,如下图:

保存后,如下图,点击“运行”按钮:

        1.3 场景运行结果
        1.4 场景保存

        点击保存按钮,弹窗,输入场景的名字,格式一般为压测场景_交易名,如下图:

         

        1.5 报告导出

点击下图按钮,打开分析报告界面,选择添加需要的新图,点击保存即可导出报告,如下图:

        

2. 负载测试

        2.1 创建场景

        同基准测试创建场景一样,略去。

        2.2 设置场景

        根据压测指标设置压测场景,以高峰期处理能力200 TPS为例,设置场景。

        

        2.3 资源监控

        使用nmon工具监控服务器的资源(cpu、内存、磁盘等)使用情况,进入nmon文件夹,执行./nmon验证工具是否可用,执行以下命令可以输出资源监控文件到指定文件夹:./nmon -F  CRM_YXHDLBSSFZ_01_20230613_01.nmon -s 3 -c 630 -t  -m  /home/app/nmon,

CRM_YXHDLBSSFZ_01_20230613_01.nmon为输出文件名称;-s  3 每3秒监控一次数据;-c  630 共监控630次;这3个参数需要根据交易名、压测时长做调整,案例为压测30分钟的设置(3 * 630 = 1890 比 30分钟稍微大一些,给操作预留时间)。

生成.nmon文件后,需要用到nmon analyser v55.xlsm分析.nmon文件,打开使用时注意要启用宏,然后选择.nmon文件最后转化成可以被人读懂的文件。

        2.4 场景运行结果

        

        2.5 场景保存

        同基准测试场景保存一样,略去。

        2.6 报告导出

        同基准测试导出报告一样,略去。

3. 混合测试

        3.1 创建场景

        打开HP LoadRunner Controller,左上角文件-》新建,点击“浏览”,逐步把混合测试需要的交易加到场景中的脚本区域,如下图:

        

点击右下角“确定”按钮,自动打开页面,如下图:

         

3.2 设置场景 

各个交易的并发用户数按百分比设置:场景-》将场景转换为百分比模式(V),选择“是”

 

 按照压测方案里面的要求设置各个交易的比例

         设置运行时的参数,择“击共享RTS”,具体设置参考负载的设置,注意:设置上如果有默认勾选的,需要重新设置,避免默认不生效。

        全局计划,设置并发用户数、运行时间等略去,参考基准测试如何配置。最后把场景保存到制定位置。

3.3资源监控 

        略去,参考负载测试

3.4场景运行

        开始场景如果提示入如下图,点“否”,选择把结果文件另外为指定位置。

 补充说明:

        稳定性测试、异常压力测试、和负载测试差不多,只是全局计划的配置不一样;而故障测试相当于稳定性测试过程中,停止然后再启动一个应用服务节点,观察期间整体交易的TPS、响应时间、服务器资源占用等的变化情况,因此就不做过多赘述了。

        由于认知有限,以上内容可能有不严谨,甚至不正确的地方,欢迎大家指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值