·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. SQL Server 创建数据库

    创建数据库有两种方式: 方式1-图形化界面创建: 1. 鼠标右击“数据库”,然后点击新建数据库 2.设置常规选项卡 2.1 给数据库命名,一般多个单词要用下划线连接,不建议用空格,如Test_DB. ...

  2. Genome Sequencing of MuseumSpecimens Reveals Rapid Changes in the Genetic Composition of Honey Bees in California

    文章地址:https://academic.oup.com/gbe/article/10/2/458/4810442#supplementary-data Abstract 在自然生态系统和管理生态系 ...

  3. C语言 某数输出二进制的某位

    如题: 输入一个整数,截取它对应的二进制位中从右到左的第8-11位(最右边为第0位). **输入格式要求:"%d" 提示信息:"请输入一个整数:" **输出格式 ...

  4. C# HTTP系列3 HttpWebRequest.ContentType属性

    系列目录     [已更新最新开发文章,点击查看详细] 获取或设置请求的 Content-type HTTP 标头的值.默认值为null. 常见的请求内容类型为以下几种: /// <summar ...

  5. LeetCode题库整理(自学整理)

    1. Two Sum 两数之和       来源:力扣(LeetCode) 题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数.你可以假设每个输入只对应一种答案,且同样的元素不能被重复利 ...

  6. shell 中 贪婪匹配 和 非贪婪匹配

    举个栗子: v=jfedu.shiyiwen.com echo ${v%.*} 一个%为非贪婪匹配,即匹配最短结果.%从右到左进行非贪婪匹配,匹配什么呢? 匹配已 .*的字符. 那么当然是匹配到了.c ...

  7. Oracle Hint用法整理笔记

    目录 1./+ result_cache / 2./+ connect_by_filtering / 3./+ no_unnset / 4./+ index(表别名 索引名) / 5./+ INDEX ...

  8. nginx location笔记

    nginx location笔记= 开头表示精确匹配^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可.nginx不对url做编码,因此请求为/static/20%/aa,可以被规则 ...

  9. 到底如何选择PHP框架?Yii、ThinkPHP、laravel、CI.

    如果你是为了工作和就业,你应该选择框架以工作为目标,看公司里面未来招聘中用的最多的是什么框架.很简单的判断方式 很多朋友都不知道如何去选择框架,选择框架的时候就会很纠结.到底该学什么框架,选择什么框架 ...

  10. Ansible15:文件管理模块及Jinja2过滤器

    目录 常用文件管理模块 1. file 2. synchronize 3. copy 4. fetch 5. lineinfile 6. stat 7. blockinfile Jinja2模板管理 ...