loadrunner11的移动端性能测试之脚本优化
测试步骤之脚本优化(Script)
看到这里,是不是疑惑录制好的脚本还需要优化吗,答案是肯定的。
优化概要
脚本优化包括插入注释(Comment),插入事务(Transaction),插入检查点(Check),插入集合点(Rendezvous),脚本参数化(Parameter),关联技术(Correlation)等等。
打开VuGen,相关设置如下

进入到脚本页(顶部的Script按钮),就能看到录制到action部分的脚本了,如下图所示

上面是我录制优化的登陆模块脚本,学过编程语言就大概能知道,LR脚本里都是些函数组成的,lr_output_message(日志中打印输出,类似C中printf函数),web_custom_request(请求函数,就是模拟用户点击按钮操作,点击一次就提交一次这种请求),web_reg_save_param_ex(注册函数,通俗点就是在服务器返回数据中查找并保存特定的数据)等。
不管怎样,录制成功后,首先得回放脚本一下,看看有没有问题,没问题就根据需求,真实环境进行脚本优化。
插入注释(Comment)
插入注释为了使脚本方便易懂,很简单,单行在前面加上//即可,多行注释用/* ....(此处是脚本).....*/。

插入事务(Transaction)
插入事务也很快,就是判断一段操作的时间,记住事务插入在集合点之后并且是成对出现的,如lr_start_transaction("登录")和lr_end_transaction("登录",LR_AUTO),事物名要相同,一般情况下结束事物的LR_AUTO为自动判断事物是否成功,没遇到报错的页面基本都是成功的,所以需要通过检查点加以判断。

插入集合点(Rendezvous)
插入集合点(lr_rendezvous),一般做并发测试是需要集合点的,如做并发登陆,插入后可在场景设计中设置,当设置的虚拟用户数全部运行至集合点后,再同时运行,脚本如下图:

插入检查点(Check)
上面说过事物需要检查点来加以判断,拿登录来说,一般登录成功就会在首页显示“欢迎你,XX用户”,是不是找到"欢迎你"三个字就说明登录成功了呢,于是检查点就这么来了。自动添加我就不说了,手动插入如下:
web_reg_find(
"Text=\"respCode\": \"0\"",
"SaveCount=Ok_Count",
LAST);
web_custom_request(
………… //内容省略
LAST);
lr_output_message(lr_eval_string ("Ok_count查找respCode值并计数"));
if(atoi(lr_eval_string("{Ok_Count}"))>0)
lr_output_message("-----------------------------成功登录!-----------------------------",LR_PASS);
else
lr_output_message("-----------------------------登录失败!------------------------------",LR_FAIL);
检查点常用函数:web_reg_find,从服务器返回的数据查找,Text是查找的内容,SaveCount是计数变量名,此处判断SaveCount的值是否大于0,大于0就表示找到了返回值,执行LR_PASS,事物成功,即表示登录成功。
注:lr_eval_string("{Ok_Count}")获取返回参数Ok_Count的值,类型为char,atoi(lr_eval_string("{Ok_Count}"))把字符型转换成整型。
手动关联(Correlation)
在回放脚本总是不成功,查找原因,是登录验证码的问题,这个是服务器返回过来的,错了就不能登录了。不能自己输,开发又不能屏蔽,该怎么处理呢?对于服务器返回的动态数据,进行查找并保存在一个参数中,就叫关联技术。同样的自动关联就不说了,手动关联如下:
web_reg_save_param_ex(
"ParamName=CSRule_1",
"LB=\"code\":",
"RB=}}}",
"Ordinal=1",
"SaveOffset=1",
"SaveLen=6",
SEARCH_FILTERS,
LAST);
查看响应日志如下:"mobileRespHeader": {"respCode": "2000","respDesc": "鎴愬姛"},"mobileRespBody": {"data": {"code":"MKLJ39"}}}
查找的结果为CSRule_1= MKLJ39,后面就用CSRule_1代替验证码了。

常用关联函数:web_reg_save_param_ex,CSRule_1就是自定义的参数名,LB,RB为左边界和右边界,用于定位查找的那个数据,Ordinal指第几次内容出现的位置,SaveOffset指从找到的字符串中第几个开始截取,SaveLen指取多少长度的值,其他就算固定的格式了,注意!!!冒号 ” 前需要加反斜杠“\”
脚本参数化(Parameter)
此处是对登录账号进行的参数化,直接在账号处点右键—Replace with a parameter 输入名称即可,类型可以参照资料,一般是File。

参数化的数据可以手动输入,也可以导入dat文件,还可以从数据库导入。
对账号参数化后,点击右键—Parameter Properties… 进入参数化设置界面,具体参数参考资料,要注意图中标注的取值顺序和策略设置,组合起来共有9种方式。

只要记住Select next row行是针对场景运行的虚拟用户设置的,VuGen回放不起作用,选择Sequential,每个用户都从第一行参数开始顺序去;Update Value on行是针对脚本的参数设置的,选择Each iteration,单个用户的参数在同一次迭代中取值是相同的,不管你有相同的几个参数。
以上就是脚本优化的大概流程,写的不算仔细,可供参考,最后保存前不要忘记再回放一下脚本哦!
loadrunner11的移动端性能测试之脚本优化的更多相关文章
- loadrunner11的移动端性能测试之脚本录制
以前使用LR11录制过一个app的登录操作,这里记录一下 测试准备 硬件要求 1, 负载测试机一台(内存8G以上,cpu 1.5GHZ以上,存储空间20G以上)或两台以上(控制机和多个负载机). 2 ...
- loadrunner11的移动端性能测试之结果分析
测试步骤之结果分析器(Analysis) 进入Analysis 当场景停止运行后,可从Controller中进入.点击[Results]—[Analysis Results]见下图: 若想打开一个已保 ...
- loadrunner11的移动端性能测试之场景设计
测试步骤之场景设计(Controller) 进入手工场景 准备好脚本后就可以进行场景设计和执行场景了,从VuGen中进入,见下图: 进入后第一个为目标场景,选择第二个更灵活的手工场景,我的目标人数20 ...
- 性能测试之Tomcat优化
1.Tomcat最大连接数等配置 Tomcat的server.xml中Context元素的以下参数都是什么意思? <Connector port="8080"maxThr ...
- web移动端性能调优及16ms优化
本文只是一个索引,收集了网络上大部分关于调试及优化方面的文章,从中挑选了一些比较好的文章分享给大家. 移动端性能不及桌面浏览器性能的10分之1,特别是在android设备良莠不齐的情况下,性能显得尤为 ...
- H5移动端性能优化
概述 1. PC优化手段在Mobile侧同样适用 2. 在Mobile侧我们提出三秒种渲染完成首屏指标 3. 基于第二点,首屏加载3秒完成或使用Loading 4. 基于联通3G网络平均338KB/s ...
- Shell脚本 | 性能测试之启动流量
安卓应用的流量统计有多种方式,点击「阅读原文」可以看到一篇别人写的文章,关于安卓流量数据的获取,写的挺全的,列举了几种不同方式的优劣.(见文末参考链接) 今天我要分享的是通过脚本一键获取应用的启动流量 ...
- Java服务端性能优化
<Java程序性能优化>说性能优化包含五个层次:设计调优.代码调优.JVM调优.数据库调优.操作系统调优. 常用的几个代码优化方案: 使用单例 对于IO处理.数据库连接.配置文件解析加载等 ...
- 5种kafka消费端性能优化方法
摘要:带你了解基于FusionInsight HD&MRS的5种kafka消费端性能优化方法. 本文分享自华为云社区<FusionInsight HD&MRSkafka消费端性能 ...
随机推荐
- 记XX2013届优秀毕业生评选(请重视在公司展现自己,重视业绩參评过程,非技术贴)
本文不是什么技术贴.仅仅是作为一名码农,在公司发展中遇到"參评"中的一个分享,希望对大家有帮助.毕竟,升职加薪这样的事情,你须要自己去争取,须要获得领导和同事的认可.. . .考虑 ...
- 实例教程Unity3D单例模式(二)自我包括法
unity3d 里的单例模式自我包括法 有一次玩Trench Run game,我意识到我的场景类里存在很多的GameObject.所以,我开发了自我包括的单例.假设没找找到实例,就会创建它自己的Ga ...
- ios开发之--pop到指定页面
1 推出到根视图控制器 [self.navigationController popToRootViewControllerAnimated:YES]; 2 推出到指定的视图控制器 for (UIVi ...
- ch6-定制数据对象(打包代码和数据)
为了看出数据属于哪个选手,教练向各个选手的数据文件中添加了标识数据:选手全名,出生日期,计时数据. 例如:sarah文件的数据更新为: Sarah Sweeney,2002-6-17,2:58,2.5 ...
- 《C++ Primer Plus》第7章 函数——C++的编程模块 学习笔记
函数是C++的编程模块.要使用函数,必须提供定义和原型,并调用该函数.函数定义是实现函数功能的代码:函数原型描述了函数的接口:传递给函数的值的书目和种类以及函数的返回类型.函数调用使得程序将参数传递给 ...
- Spring学习笔记--通过构造方法创建Bean
如果一个bean没有默认的构造函数,那么可以通过工厂方法来构造一个bean.Spring通过<bean>元素的factory-method属性来装配工厂创建的Bean.下面例子中的Stag ...
- 如何理解精通PHP ?
「精通 PHP」可以理解为以下三个: 精通「PHP 解析器 精通「PHP 语法.函数(这门语言) 精通「PHP 项目开发 1 精通「PHP 解析器」 可以从这里开始学习: PHP核心:骇客指南 :ht ...
- cookie带来的致命危险
1.危险:当记录了过多的cookie时,可能导致http header过大,进而导致服务器端发生错误,导致用户无法打开页面. 2.cookie限制: 各浏览器对单cookie键的限制基本都在4kb左右 ...
- linux 中 ll 命令显示 的大小 是什么单位的啊?
ll显示的是字节,可以使用-h参数来提高文件大小的可读性,另外ll不是命令,是ls -l的别名 ls -al 是以字节单位显示文件或者文件夹大小: 字节b,千字节kb, 1G=1024M=1024 ...
- Spring MVC 框架学习
一.spirng的简介 Spring是一个开源框架,它由Rod Johnson创建.它是为了解决企业应用开发的复杂性而创建的.Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情. ...