测试步骤之脚本优化(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的移动端性能测试之脚本优化的更多相关文章

  1. loadrunner11的移动端性能测试之脚本录制

    以前使用LR11录制过一个app的登录操作,这里记录一下 测试准备 硬件要求 1,  负载测试机一台(内存8G以上,cpu 1.5GHZ以上,存储空间20G以上)或两台以上(控制机和多个负载机). 2 ...

  2. loadrunner11的移动端性能测试之结果分析

    测试步骤之结果分析器(Analysis) 进入Analysis 当场景停止运行后,可从Controller中进入.点击[Results]—[Analysis Results]见下图: 若想打开一个已保 ...

  3. loadrunner11的移动端性能测试之场景设计

    测试步骤之场景设计(Controller) 进入手工场景 准备好脚本后就可以进行场景设计和执行场景了,从VuGen中进入,见下图: 进入后第一个为目标场景,选择第二个更灵活的手工场景,我的目标人数20 ...

  4. 性能测试之Tomcat优化

    1.Tomcat最大连接数等配置   Tomcat的server.xml中Context元素的以下参数都是什么意思? <Connector port="8080"maxThr ...

  5. web移动端性能调优及16ms优化

    本文只是一个索引,收集了网络上大部分关于调试及优化方面的文章,从中挑选了一些比较好的文章分享给大家. 移动端性能不及桌面浏览器性能的10分之1,特别是在android设备良莠不齐的情况下,性能显得尤为 ...

  6. H5移动端性能优化

    概述 1. PC优化手段在Mobile侧同样适用 2. 在Mobile侧我们提出三秒种渲染完成首屏指标 3. 基于第二点,首屏加载3秒完成或使用Loading 4. 基于联通3G网络平均338KB/s ...

  7. Shell脚本 | 性能测试之启动流量

    安卓应用的流量统计有多种方式,点击「阅读原文」可以看到一篇别人写的文章,关于安卓流量数据的获取,写的挺全的,列举了几种不同方式的优劣.(见文末参考链接) 今天我要分享的是通过脚本一键获取应用的启动流量 ...

  8. Java服务端性能优化

    <Java程序性能优化>说性能优化包含五个层次:设计调优.代码调优.JVM调优.数据库调优.操作系统调优. 常用的几个代码优化方案: 使用单例 对于IO处理.数据库连接.配置文件解析加载等 ...

  9. 5种kafka消费端性能优化方法

    摘要:带你了解基于FusionInsight HD&MRS的5种kafka消费端性能优化方法. 本文分享自华为云社区<FusionInsight HD&MRSkafka消费端性能 ...

随机推荐

  1. makefile--嵌套执行(四)

    原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ 在大一些的项目里面,所有源代码不会只放在同一个目录,一般各个功能模块的源代码都是分开的,各自放在 ...

  2. Leetcode: n-queen, n-queen II

    思路: 题目给出的测试数据范围比较小, 使用回溯就可以AC, 搞的我也没有兴趣去研究高效解法了 总结: 刚开始, 本以为用棋盘问题的状态压缩 DP 就可以解决, 但做完 N-queen 才发现多个皇后 ...

  3. C语言之选择结构

    该章内容:本章我们学习三大结构之一:选择结构,采用选择结构来解决问题称为判断问题,它的求解规则是在不同的条件下进行不同的操作.选择结构比顺序结构要复杂一些.本章是考试的重点章节. 学习方法:先了解选择 ...

  4. SecureCRT 详细使用图文教程(按步骤)

    一.安装和激活 安装 1.在http://www./softs/55471.html下载相关包激活工具,运行scrt622-x86.exe. 2.进入安装向导程序,默认下一步,直到安装完成既可以. 破 ...

  5. mysql concat

    CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式. 第一个参数是其它参数的分隔符.分隔符的位置放在要连接的两个字符串之间. 分隔符可以是一个字符 ...

  6. mysql show processlist 命令检查mysql lock

    processlist命令的输出结果显示了有哪些线程在运行,可以帮助识别出有问题的查询语句,两种方式使用这个命令. 1. 进入mysql/bin目录下输入mysqladmin processlist; ...

  7. HTML5 ShadowDOM & CustomElements

    Web组件由四部分组成 Template Shadow DOM (Chrome Opera支持) Custom Elements Packaging Shadow DOM 组成 Shadow DOM可 ...

  8. PHP MySQL Insert Into

    INSERT INTO 语句用于向数据库表中插入新记录. 向数据库表插入数据 INSERT INTO 语句用于向数据库表添加新记录. 语法 INSERT INTO table_name VALUES ...

  9. 谷歌Volley网络框架讲解——Network及其实现类

    我们看到Network接口只有一个实现类BasicNetwork,而HttpStack有两个实现类. BasicNetwork这个类是toolbox工具箱包里的,实现了Network接口. 先来看下N ...

  10. 【PHP】算法: 获取满足给定值的最优组合

    PHP 获取给定值的最优组合 方法 -   (蓝洛提供,博客地址: www.zhaorui.info) <?php ini_set('error_reporting','E_ALL^E_NOTI ...