性能测试基础---jmeter参数化、关联、事物、检查的等
·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参数化、关联、事物、检查的等的更多相关文章
- 性能测试基础---LR参数化相关
性能测试脚本的增强:·参数化·关联·事务·检查点·思考时间·集合点 ·参数化:模拟不同用户的不同请求. ·为什么要做参数化? ·功能:通常来说,系统的某些业务数据具有唯一性的要求. ·性能:一般来说, ...
- 性能测试基础---jmeter webservice接口测试
·webservice接口测试实现.·SOA:面向服务的体系架构,主要为了应对大型系统的异构需求.典型的实现方式:webservice·微服务:为了对SOA这样的重服务架构进行解耦而存在的.一个or几 ...
- 性能测试基础---jmeter函数二次开发
Jmeter函数的二次开发. ·什么时候需要进行jmeter的自定义函数扩展呢? 一般来说,如果我们要对数据进行处理,而jmeter没有提供相应的功能(函数),此时我们可以自己进行自定义函数的扩展. ...
- 性能测试基础---jmeter入门
·Jmeter入门 ·Jmeter的简介: ·Jmeter是一款基于纯JAVA语言开发的开源的性能测试工具. ·Jmeter的下载: ·最新版:http://jmeter.apache.org/dow ...
- 性能测试基础---jmeter二次开发
·Jmeter的二次开发,常见的有以下几种类型: ·扩展.修改Jmeter已有的组件(源代码) ·扩展.修改Jmeter已有的函数. ·完全自主开发一个新的组件(依赖于Jmeter提供的框架). ·扩 ...
- 性能测试基础---jmeter基础
·Jmeter的脚本构成: Jmeter的脚本是由很多不同的组件构成,在Jmeter中,组件可以分为以下几类: ·测试计划: 是默认存在的组件,所有的Jmeter的组件都是依赖于测试计划的. 在这个组 ...
- JMeter性能测试基础 (1) - 安装及简单使用
Apache JMeter是一款开源性能测试工具,全部功能使用Java编写,可用于进行性能测试.JMeter最初被设计用于Web应用测试,之后被扩展至多个测试领域. Apache jmeter 可以用 ...
- jmeter——参数化、关联、断言
1.jmeter——参数化 三种方式: ${变量名} 1.1用户定义的变量 比如注册,登录都得用到手机号码,那就把手机号码自定义为变量 1)添加一个线程组--注册.登录HTTP请求--察看结果树--用 ...
- Jmeter Web 性能测试入门 (五):Jmeter 参数化 Request
用来参数化的常用方法: 添加配置元件:用户定义的变量 使用函数助手 添加配置元件:CSV Data Set Config 添加前置处理器:BeanShell PreProcessor 添加配置元件:用 ...
随机推荐
- [LeetCode] 314. Binary Tree Vertical Order Traversal 二叉树的竖直遍历
Given a binary tree, return the vertical order traversal of its nodes' values. (ie, from top to bott ...
- [LeetCode] 2. Add Two Numbers 两个数字相加
You are given two non-empty linked lists representing two non-negative integers. The digits are stor ...
- 微信小程序登录那些事
最近团队在开发一款小程序,都是新手,一边看文档,一边开发.在开发中会遇到各种问题,今天把小程序登录这块的流程整理下,做个记录. 小程序的登录跟平时自己APP这种登录验证还不太一样,多了一个角色,那就是 ...
- git合并不同仓库下的分支
1.把lib合并到pro $ git remote -v origin git@192.168.1.1:lib.git (fetch) origin git@192.168.1.1:lib.git ( ...
- Nginx 的 Timeout Wait 解决
1.问题解决办法 查看Nginx并发状态 #netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' TIME_WAIT ...
- Eclipse JAX-RS (REST Web Services) 2.0 requires Java 1.6 or newer
pom.xml文件中添加: <build> <plugins> <plugin> <groupId>org.apache.maven.plugins&l ...
- ABA问题的产生及解决
什么是ABA问题 在CAS算法中,需要取出内存中某时刻的数据(由用户完成),在下一时刻比较并交换(CPU保证原子操作),这个时间差会导致数据的变化. 1.线程1从内存位置V中取出A2.线程2从内存位置 ...
- RecyclerView预览数据
我们在布局文件里定义RecyclerView时,可以使用tools属性预览数据,如下: <android.support.v7.widget.RecyclerView android:layou ...
- SSM基本配置详解
需要查看SSM基本依赖和完整配置文件的到:SSM基本配置及依赖 示例项目:SSMDemo 1 Spring IOC容器配置 1.1 applicationContext.xml 1.1.1 配置数据源 ...
- [原创]SpringSecurity控制授权(鉴权)功能介绍
1.spring security 过滤器链 spring security中的除了用户登录校验相关的过滤器,最后还包含了鉴权功能的过滤器,还有匿名资源访问的过滤器链,相关的图解如下: 2.控制授 ...