LoadRunner 参数化

为什么需要参数化?

大众理解:为了更加真实的模拟用户操作

底层原理: 1,应用服务,数据库会校验该值的唯一性(unique key)

2,为了避免数据库的查询缓存对性能测试结果的影响

  LoadRunner 关联

一、为什么需要做关联?

1,回放的时候业务没有成功

2,服务器返回一个动态变化的值,并且下次请求时需要用到这个动态变化的值

3,提交请求的时候,服务器会校验这些值的合法性;它们之间有依赖关系

二、关联步骤:

1,找到服务器返回的动态变化的值

2,保存为一个参数

3,替换

三、哪些值需要做关联?

1, 服务器返回的动态变化的值,然后提交的时候校验该值的合法性(跟数据不打交道)

A,验证码(图片验证码、手机/短信验证码、邮箱验证码)

图片验证码 关联不到里面的字符串(需要知道字符串从哪个jsp 里取出来的)

手机/短信验证码、邮箱验证码  验证码都是加密以后的

解决方法:1,让开发设置万能验证码;2,去掉验证码(一般不建议)

B,Session ,token

C,时间戳

D,看起来没有任何意义的特殊字符串,还出现在你的请求里并且还不是你自己输入的字符串

2, 跟数据库打交道的(增删改查)

A.Insert  插入的值跟其他数据有关联关系-通过一系列ID 建立这种关系

特征: 自增主键   Xxid   int 类型

Insert into 帖子表 values (uid,title,msg,posttime,fid)

Insert into 回帖表 values(tid,uid,msg,posttime,fid)

B.Delete  补全where id 类条件

Delete from table where xxid = ?? and xxid =?? And

In  (,,)

Not in (,,)

between < >

C. Update 补全where 后面的 id类条件

Update table   set      where  同上

D .  select  补全where 后面的 id 类条件

select  字段 from 表 where 同上

实操: 淘宝网注册-> 登录-> 绑定收件信息->修改昵称->删除一条收件地址->浏览商品->添加到购物车->支付->查看订单-> 取消订单-> 撤销申请-> 确认收货->评论-> 追加评论

注册:参数化 手机号 (唯一性校验)关联:手机验证,session/token

登录:参数化 手机号(唯一性校验)关联:session /token

绑定收件信息:关联uid

修改昵称: 关联uid

删除一条收件地址:关联uid ,收件信息id

浏览商品:参数化 商品id

添加到购物车:关联uid, 商品id 店铺 id

支付:关联uid ,订单id

查看订单: 关联uid ,订单id

取消订单: 关联uid ,订单id

撤销申请: 关联uid ,id(订单id 或者工单id )

确认收货:关联uid ,订单id

评论:关联uid,订单id ,店铺id,商品id

追加评论:关联uid , 订单id ,评论id

四、关联函数的位置

关联函数放在哪个函数的前面,只会作用于它的下一个请求,所以关联函数的位置很重要

Insert  操作后紧接一条select 操作,将id 查出来以便后续操作--关联参数放在insert 之前

五、关联函数的写法

A,response 右键直接关联 (位置一定对)

B, insert -new step

C,Data returned by server (tree 视图中没有内容的时候)

D, 页面源代码

E,抓包

Fiddler 4 操作

Fiddler hide if url contains :REGEX:\.(js|css|js|png|gif|ico|gif\?.*|css\?.*|js\?.*|png\?.*)$

Any process  点击拖拽到浏览器上,则只记录该浏览器上的操作

脚本精简:跟实现业务无关的请求都可以去掉,但是关联的依赖请求不能去掉

完善脚本

一、插入事务

事务:是一切脚本的基础

是成对出现的,start end 中名字需一模一样

事务需定义准确,不要包含与被测接口无关的请求

事务中不包含集合的、思考时间

为了保持请求的干净及事务响应时间的准确性

二、模拟用户思考时间

Think Time : 等待多长时间再执行下面的请求

底层作用:控制请求的发送频率,以达到控制服务器压力的目的

能影响事务的响应时间及tps

Tps:1s 钟的时间能处理几个事务

三、插入检查点

检查点:会影响性能

为了调试用的;一般压测过程中去掉检查点

Web_reg_find  预注册函数,放在请求前

Web_find ,web_image_check 等函数性能不好,不建议使用

注意事项:文本检查点函数需要注意位置;图片检查点需要开启run-time settings 里的设置

数据库写操作可以不加检查点

Select 操作时才需要加检查点

四、插入集合点

集合点:

是反映服务器的瞬时压力

集合点只是在某些特殊场景中需要验证严格并发是否能够通过,比如秒杀

集合点不能添加到事务中,要放在事务外,否则事务的统计会把集合点的等待时间也统计进去

进程、线程:默认勾选线程,进程资源消耗太多,一般没那么多执行机资源的

实践经验:如果跑场景是出现乱七八糟的事务,run-time settings  中miscellaneous 中先勾选 automatic transactions 下的两个选项,

点击【保存】->再次打开run-time settings ,取消勾选这两项,点击【保存】即可

其他协议脚本

一、Webservice 实例

第一个是检查点,第二、三个是关联

两关联是一模一样,只是结果稍有不同。工作中任选

对应的函数分别为:

Lr_xml_get_values()

Lr_xml_find()

Lr_xml_extract()

二、WindowsSocket 协议:

选择windowsSocket协议,点击录制

相关函数:

Lrs_receive_ex

Lrs_receive

Lrs_save_param

Loadrunner常用操作的更多相关文章

  1. LoadRunner常用函数列表

    LoadRunner常用函数列表 Web相关函数 函 数 功  能  描  述 web_custom_request 用户可以通过该函数自行创建一个HTTP请求的函数 web_image 模拟用户单击 ...

  2. Loadrunner常用分析点

    Loadrunner常用的分析点 一.在Vuser(虚拟用户状态)中 1.Running Vusers:提供了生产负载的虚拟用户运行状态的相关信息,可以帮助我们了解负载生成的结果.(即用户在几分钟左右 ...

  3. 【三】用Markdown写blog的常用操作

    本系列有五篇:分别是 [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面 [二]jekyll 的使用 :主要是jekyll的配置 [三]Markdown+ ...

  4. php模拟数据库常用操作效果

    test.php <?php header("Content-type:text/html;charset='utf8'"); error_reporting(E_ALL); ...

  5. Mac OS X常用操作入门指南

    前两天入手一个Macbook air,在装软件过程中摸索了一些基本操作,现就常用操作进行总结, 1关于触控板: 按下(不区分左右)            =鼠标左键 control+按下        ...

  6. mysql常用操作语句

    mysql常用操作语句 1.mysql -u root -p   2.mysql -h localhost -u root -p database_name 2.列出数据库: 1.show datab ...

  7. nodejs配置及cmd常用操作

    一.cmd常用操作 1.返回根目录cd\ 2.返回上层目录cd .. 3.查找当前目录下的所有文件dir 4.查找下层目录cd window 二.nodejs配置 Node.js安装包及源码下载地址为 ...

  8. Oracle常用操作——创建表空间、临时表空间、创建表分区、创建索引、锁表处理

    摘要:Oracle数据库的库表常用操作:创建与添加表空间.临时表空间.创建表分区.创建索引.锁表处理 1.表空间 ■  详细查看表空间使用状况,包括总大小,使用空间,使用率,剩余空间 --详细查看表空 ...

  9. python 异常处理、文件常用操作

    异常处理 http://www.jb51.net/article/95033.htm 文件常用操作 http://www.jb51.net/article/92946.htm

随机推荐

  1. Spring Boot 中 Controller 使用

    1.属性配置 2.Controller使用 2.@PathVariable 与 @RequestParam 的区别 (1)@PathVariable (2)@RequestParam 3.@GetMa ...

  2. eclipse 图片预览插件

      eclipse 图片预览插件 CreateTime--2018年4月22日22:59:55 Author:Marydon 下载地址:eclipse 图片预览插件 将插件文件夹直接拷贝到eclips ...

  3. 【Docker】拉取Oracle 11g镜像配置

    以下是基于阿里云服务器Centos 7操作 1.拉取Oracle11g镜像 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_1 ...

  4. Linux磁盘分区及链接文件的特点

    系统分区 传统的分区fdisk 最大支持2T的硬盘分区 对存储,多分区使用的parted 主分区:最多只能有4个 扩展分区 最多只能有1个 主分区加扩展分区最多有4个 不能写入数据,只能包含逻辑分区 ...

  5. 利用cURL会话获取一个网页

    1.curl_init 作用:     初始化一个新的会话.返回一个cURL句柄,供curl_setopt(), curl_exec()和curl_close() 函数使用. 格式:    curl_ ...

  6. 微信小程序+PHP:动态显示项目倒计时(格式:4天7小时58分钟39秒)

    1.一般我们说的显示秒杀都是指的单条数据,循环我没做. 效果: 2.wxml代码: <p class="endtime_act">距报名截止还有: <block ...

  7. HDUOJ----4501小明系列故事——买年货(三维背包)

    小明系列故事——买年货 Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  8. c语言格式大整理

    1.C语言中,非零值为真,真用1表示:零值为假,假用0表示. 2.转义字符参考: \a 蜂鸣,响铃 \b 回退:向后退一格 \f 换页 \n 换行 \r 回车,光标到本行行首 \t 水平制表 \v 垂 ...

  9. 如何用python的装饰器定义一个像C++一样的强类型函数

        Python作为一个动态的脚本语言,其函数在定义时是不需要指出参数的类型,也不需要指出函数是否有返回值.本文将介绍如何使用python的装饰器来定义一个像C++那样的强类型函数.接下去,先介绍 ...

  10. [Creating an image format with an unknown type is an error] on cordova, ios 10

    在 iOS 10  调用 了 获取  相册的 可编辑 的  照片后,会出现 [Creating an image format with an unknown type is an error] 这个 ...