性能测试基础---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控制器来实现。正则表达式

相关文章
相关标签/搜索