·Jmeter脚本增强·性能测试的脚本增强技术:参数化、关联、事务、检查点、思考时间和集合点。

·参数化:在Jmeter中,实现参数化的方式很多。本质上来说,参数化的实现方式有两种:·文件方式:一般建议通过配置元件--CSV DATA SET CONFIG组件来实现。·函数方式:一般通过调用Jmeter内置的、第三方插件、自定义的函数来实现。一般通过函数助手来生成调用的字符串。

·调用方式:在jmeter中,任何鼠标点击可以输入的地方(输入字符串),都可以实现参数化操作,在Jmeter中,参数、变量、函数的调用方式是固定的:${参数名}   ${变量名}   ${函数名}
·CSV DATA SET CONFIG组件详解:·FileName:文件名,即参数文件的名称。可以使用相对地址,也可以使用绝对地址。·File encoding:参数文件的编码,要求和实际编码保持一致。默认为空,对应的文件编码格式为ANSI。PS:建议参数文件使用记事本进行编辑,编码格式采用默认的ANSI。
·Variable Names:参数名称,又叫变量名称。该处可以填写一个or多个参数名,也可以不填写。PS:·如果有多个参数名,则不论参数文件中的值的实际分隔符是什么,参数名之间始终使用逗号进行分隔。·一个参数名只会读取参数文件中的一列值。参数名和值是按顺序一一对应。即第一个参数对应第一列值,第N个参数对应第N列值。·如果该处为空,则Jmeter会读取参数文件中的第一行的值作为参数名,然后从第二行开始取值。不建议留空。
·Ignore first line:表示忽略参数文件的第一行,直接从第二行开始读值。
·Delimiter:分隔符,用来指定参数文件的列的分隔符,要求和实际的分隔符保持一致。·Allow quoted data?:是否允许通过双引号定义块数据。即通过双引号屏蔽值本身所携带的分隔符字符。·Recycle on EOF?:是指没有值的时候,循环读取。
·Stop thread on EOF?:该选项是在循环选项的值为false时才会起效。作用表示没有值的时候,停止线程。
·sharing mode:该选项影响的是Jmeter中的参数的取值方式。可选模式有三种:·All threads:默认方式,所有线程。表示当前的测试计划下的所有线程共用一个参数文件的副本。对于参数值采取先到先拿,顺序获取的方式。如果不设置Recycle on EOF为true,则作用就是唯一取值。
·Current thread group:当前线程组。表示一个线程组中的所有线程共用一个参数文件的副本。如果有多个线程组,则参数文件会生成多个副本。线程组之间相互不影响,独立取值。每一个线程组中,还是采取先到先拿,顺序获取的方式。
·Current thread:当前线程。表示每一个线程都会拥有一个独立的参数文件的副本。线程自己采取顺序获取的方式。线程之间相互不影响。该方式等价于LR中的默认参数取值方式。
PS:CSV DATA SET CONFIG中的变量更新变量值的时机是受到所在作用域的最高循环组件的影响的。

·关联:关联是用来解决请求之间的依赖关系的。在工具层面,工具需要解决的问题其实是两个:·先存:先保存服务器响应的数据·后用:在后续的请求中调用所保存的数据。
在Jmeter中,关联一般都是通过后置处理器组件来实现。常用的是:正则表达式提取器、JSON Extractor。。
·正则表达式提取器:·要检查的字段:默认是主体,即要从响应主体里提取数据。·信息头:是指响应的信息头,目前很多token相关的数据可能是通过响应头来返回的。
·引用名称:即变量名称,由用户自己指定,建议有意义。·正则表达式:该处填写的是用来获取数据的正则表达式。·通常来说,我们截取关联数据的左右固定的字符串,然后将需要关联的数据替换为"(.*?)"即可。   示例:  服务器返回:aaa数据bbbaaa和bbb是固定不变的,即为左右边界,数据是变化的。则最终的正则表达式可以写为aaa(.*?)bbbPS:不论是左右边界还是数据本身包含回车换行的话,则不能用点“.”,要用“[\\s\\S]”替代。·模板:该处可以填写的内容有两种:字符串常量、位置变量$N$,当然也可以是组合。·字符串常量:不是位置变量格式的都是字符串常量。表示将字符串常量的值直接赋值给引用变量。·位置变量$N$:N表示将正则表达式第N对括号所对应匹配的值赋值给变量。PS:一般来说,我们的正则表达式只有一对括号,所以模板很多时候就写$1$即可。
·匹配数字:该处可以填写的数字有三种:正整数N,数字0,负数。·正整数N:表示将第N次匹配到的值赋值给变量。·数字0:表示将所有匹配到的值随机取一个赋值给变量。·负数:通常填写-1,表示将所有匹配到的值以类似数组的方式存入参数数组。效果为:ParamName_1=Value_1,ParamName_2=Value_2,...,ParamName_N=Value_N.并且会自动生成一个参数叫ParamName_matchNr=N,用来存储匹配到的值的个数。

·如果要全部拼装为一个特定的格式,则需要继续添加后置处理器--BeanShell PostProcessor
示例代码:int num = Integer.parseInt(vars.get("pa_matchNr"));String outstr="";for(int i=1;i<num;i++){String index="pa_"+i;outstr=outstr+vars.get(index)+",";}String index="pa_"+num;outstr=outstr+vars.get(index);vars.put("str",outstr);

·如果要遍历,或者部分遍历,则可以通过逻辑控制器--foreach控制器来实现。

性能测试基础---jmeter参数化、关联、事物、检查的等的更多相关文章

  1. 性能测试基础---LR参数化相关

    性能测试脚本的增强:·参数化·关联·事务·检查点·思考时间·集合点 ·参数化:模拟不同用户的不同请求. ·为什么要做参数化? ·功能:通常来说,系统的某些业务数据具有唯一性的要求. ·性能:一般来说, ...

  2. 性能测试基础---jmeter webservice接口测试

    ·webservice接口测试实现.·SOA:面向服务的体系架构,主要为了应对大型系统的异构需求.典型的实现方式:webservice·微服务:为了对SOA这样的重服务架构进行解耦而存在的.一个or几 ...

  3. 性能测试基础---jmeter函数二次开发

    Jmeter函数的二次开发. ·什么时候需要进行jmeter的自定义函数扩展呢? 一般来说,如果我们要对数据进行处理,而jmeter没有提供相应的功能(函数),此时我们可以自己进行自定义函数的扩展. ...

  4. 性能测试基础---jmeter入门

    ·Jmeter入门 ·Jmeter的简介: ·Jmeter是一款基于纯JAVA语言开发的开源的性能测试工具. ·Jmeter的下载: ·最新版:http://jmeter.apache.org/dow ...

  5. 性能测试基础---jmeter二次开发

    ·Jmeter的二次开发,常见的有以下几种类型: ·扩展.修改Jmeter已有的组件(源代码) ·扩展.修改Jmeter已有的函数. ·完全自主开发一个新的组件(依赖于Jmeter提供的框架). ·扩 ...

  6. 性能测试基础---jmeter基础

    ·Jmeter的脚本构成: Jmeter的脚本是由很多不同的组件构成,在Jmeter中,组件可以分为以下几类: ·测试计划: 是默认存在的组件,所有的Jmeter的组件都是依赖于测试计划的. 在这个组 ...

  7. JMeter性能测试基础 (1) - 安装及简单使用

    Apache JMeter是一款开源性能测试工具,全部功能使用Java编写,可用于进行性能测试.JMeter最初被设计用于Web应用测试,之后被扩展至多个测试领域. Apache jmeter 可以用 ...

  8. jmeter——参数化、关联、断言

    1.jmeter——参数化 三种方式: ${变量名} 1.1用户定义的变量 比如注册,登录都得用到手机号码,那就把手机号码自定义为变量 1)添加一个线程组--注册.登录HTTP请求--察看结果树--用 ...

  9. Jmeter Web 性能测试入门 (五):Jmeter 参数化 Request

    用来参数化的常用方法: 添加配置元件:用户定义的变量 使用函数助手 添加配置元件:CSV Data Set Config 添加前置处理器:BeanShell PreProcessor 添加配置元件:用 ...

随机推荐

  1. [RN] react-native FlatList 实现列表选中的最佳方式(刷新指定Item)

    效果如下: 核心思路就是往数据源里面 给每条数据加一个选中状态. 如图在网络请求完成之后,给每条数据添加一个select的状态: data.list.forEach(item => item.s ...

  2. Linux性能优化实战学习笔记:第十五讲

    一.内存映射 内存管理也是操作系统最核心的功能之一,内存主要用来存储系统和应用程序的指令.数据.缓存等 1.我们通说的内存指的是物理内存还是虚拟内存? 我们通常说的内存容量,其实这指的是物理内存,物理 ...

  3. [LeetCode] 277. Find the Celebrity 寻找名人

    Suppose you are at a party with n people (labeled from 0 to n - 1) and among them, there may exist o ...

  4. 计时任务之StopWatch

    StopWatch对应的中文名称为秒表,经常我们对一段代码耗时检测的代码如下: long startTime = System.currentTimeMillis(); // 业务处理代码 doSom ...

  5. Qt 窗口操作函数(置顶、全屏,最大化最小化按钮设置等)

    一.窗口置顶 与 取消置顶 void MainWindow::on_windowTopButton_clicked() { if (m_flags == NULL) { m_flags = windo ...

  6. phpredis可视化工具RedisDesktopManager

    phpredis可视化工具RedisDesktopManager这个管理phpredis还不错下载地址https://redisdesktop.com/download刷新数据可以右键db0 relo ...

  7. Vue双向绑定原理(我尽量写的。简洁)

    先问自己两个问题: 1.app.message修改数据的时候,Vue内部是如何监听message数据发生改变的 使用Object.defineProperty ->监听对象属性的改变 2.当数据 ...

  8. HTML+css基础 Text文本属性

    Text文本属性: 1.颜色  color color:red 2.文本缩进 text-indent 属性值 数字+px: text-indent:10px: 3.文本修饰 text-decorati ...

  9. Sitecore A / B测试

    测试您的Web内容非常重要.这是查看页面中的页面和组件是否达到预期效果的好方法.测试还可以让您放心,您的内容足够吸引人,以增加转化次数并最大限度地提高增长率. 测试如何运作? 测试通过向访问者随机显示 ...

  10. 乘法器——booth编码

    博主最近在学习加法器.乘法器.IEEE的浮点数标准,作为数字IC的基础.当看到booth编码的乘法器时,对booth编码不是很理解,然后在网上找各种理解,终于豁然开朗.现将一个很好的解释分享给大家,希 ...