zoukankan      html  css  js  c++  java
  • loadrunner参数化和关联

    请求不报错,不代表业务成功,Tools下面有个General Options,下面有个Display标签,勾上Show run_time viewer,回放的时候会出现右边的浏览器,如果输入的参数在某个场景时错误会把错误的信息打印出来,通过下图设置可以把参数化或关联的值打印出来,参数里的输入项一般需要进行参数化,非输入项一般需要关联

    loadrunner代理录制脚本(如果正常可以录制到脚本就不用代理录制):

    第一步是在Options里Network->Port Mapping,点击New Entry,配置如下图:

    第二步是在Program to record中输入wplus_init_wsock.exe,URL Address可以不输入,等打开浏览器的时候输入也可以

    第三步是在IE浏览器里配置代理,端口和loadrunner刚才配置的端口保持一致(端口不能被占用,这个是代理ip,lr里的ip是被测系统的ip),如下图:

    通过这三步解决了浏览器打不开,没有events的情况,解决浏览器版本问题,点击Start Recording对话框的OK按钮就会弹出代理,如下图:

    双击IE浏览器,输入URL Address,这里只能访问设置的lr中ip的地址,录制完成后关闭代理,点击Shutdown,然后点击停止按钮就会生成脚本,生成的脚本都是服务器相应的请求

     

    如何避免参数化:1、数据库不做唯一性校验 2、关闭数据库查询缓存,命令是set global query_cache_type 0,开启是1,然后重启mysql

    参数化的目的:为了完成业务逻辑,模拟真实压力,将服务器返回的动态值保存为一个参数,供后面的数据使用

    为什么要参数化:1、应用程序或数据库对提交的值做唯一性校验 2、为了避免数据库缓存带来的性能测试结果的失真

    参数化的步骤就是选中要参数化的值右键Replace with a Parameter,弹出下面的Select or Create Parameter框,改名如username,点击OK,admin就完成紫色的{username}

    再点击P按钮,再Edit with Notepad,输入值,然后就从这个list中取值就可以了,如下图:

    参数化的名称首先要和Parameter List里的名称保持一致,然后看它下面的文件就是参数化的值,如下图username就是pwd.dat里的值

    By number是取第一列的值,触发值的变更条件是(Update value on),Update value on下面有Each iteration,Each occurrence,Once,取值怎么取(Select next row),Select next row下面有Sequential,Random,Unique

    循环两次,迭代两次

    Sequential +Each iteration:第一次迭代,循环两次,值没有触发,第二次迭代,循环两次,值触发了顺序取值,并发时每个用户都是一个独立的个体,运行相同的脚本,相同的参数化文件,相同的取值策略

    Sequential +Each occurrence:每次出现值触发了,每个值按照顺序取值

    Sequential +Once:这种参数化策略只取一个值,相当于写死了,用不到 

    Random+Each iteration:只有迭代时才会重新取值,循环时值是一样的

    Random+Each occurrence:每次出现值触发了,每个值按照顺序取值

    Random+Once:每次取值都一样

    Unique+Each iteration:唯一的第一个意思是这个值只能使用一次,第二个意思是这个值属于用户a,就不会属于用户b,为每个用户分配值,这样就不会重复,在压测的过程中选择这种策略,增加vu的时候会报错,报值不够的错误

    Unique+Each occurrence:选择Unique时会弹出When out of values,有三种方式,第一种是报错,终止虚拟用户,第二种是循环取值,第三种是用最后一个值

    Unique+Once:

    10个用户,运行10分钟,每个用户的tps是10,该使用什么参数化策略和为每个虚拟用户分配多少值

    1(秒)*10(tps)*10(用户)=100个请求/秒*10*60(秒)=60000/10(用户)=6000,实际上要分配6000+,因为有的用户跑的快,Each iteration和Each occurrence都行

    10个用户,运行10分钟,每个用户的tps是10,服务器的最大tps是50,该使用什么参数化策略和为每个虚拟用户分配多少值

    1(秒)*10(tps)*10(用户)=100个请求,服务器最大tps是50,处理不过来,按照50来计算,50/秒*10*60(秒)=30000/10(用户)=3000,实际上要分配3000+,因为有的用户跑的快

    九中参数化策略中使用最多的是Unique+Each iteration和Unique+Each occurrence

    下面这三个用的比较多

    关联就是将服务器返回的动态的变化的一个值保存为一个参数,以供后面需要用到该值的请求进行使用,如果后面没有用到就不用关联

    关联五种方式:

    1、在Tree视图里HTTP View->Raw Data->Response,找到要关联的值,然后右键Create Parameter,就会在正确的位置出现关联函数,这是最简单的方式

    2、在需要关联的位置右键Insert->New Step,在Add Step对话框里输入关联的函数名称web_reg_save_param,找到双击或点击OK,在弹出的对话框里输入关联的参数名称、左边界和右边界,点击OK即可看到关联函数,如果Tree视图里没有Response,可以通过扩展日志服务器返回结果取到左右边界值,手写关联,Log->Extended log->Data returned by server

    3、通过抓包获取关联左右边界,手写关联函数

    4、通过获取源文件获取关联左右边界,手写关联函数

    5、找到需要关联的那一串不规则数字,粘贴到记事本中,在脚本里手写关联函数web_reg_save_param("formhash ","LB=name="formhash" value="","RB=" />",LAST);,formhash是关联函数的名字,LB是左边界,RB是右边界,用Ctrl+c和Ctrl+v来提取左右边界,有双引号的地一定要在前面放一个,来进行转义,然后用{formhash}取代脚本中要做关联的一串数字,替换成功后不会有颜色的变化,最关键的是关联函数的位置也很重要,放在请求函数的前面

    web_reg是预注册,预先声明在使用,注释脚本是Ctrl+Alt+c,取消注释是Ctrl+Alt+u

  • 相关阅读:
    C# 谈谈代码重构
    收藏.NET 技术社区
    步步为营 .NET三层架构解析 四、Model设计(四种设计方式)
    C# 谈谈abstract用法 和一个简单abstract factory
    步步为营 .NET三层架构解析 一、什么是三层架构
    用户登陆的验证码的制作
    控制部分字体的颜色
    回发或回调参数无效。在配置中使用 <pages enableEventValidation= "true "/> 或在页面中使用 <%@ Page EnableEventValidation= "true " %> 启用了事件验证
    实习记2
    sniffer攻击
  • 原文地址:https://www.cnblogs.com/laosun0204/p/8677889.html
Copyright © 2011-2022 走看看