·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. 获取客户端IP地址的三个HTTP请求头的区别

    一.没有使用代理服务器的情况: REMOTE_ADDR = 您的 IP HTTP_VIA = 没数值或不显示 HTTP_X_FORWARDED_FOR = 没数值或不显示 二.使用透明代理服务器的情况 ...

  2. [LeetCode] 633. Sum of Square Numbers 平方数之和

    Given a non-negative integer c, your task is to decide whether there're two integers a and b such th ...

  3. mac 下使用shell 命令 jq 解析json

    官网 https://stedolan.github.io/jq/download/ 安装 brew install jq 创建json文件,file.json { , "msg" ...

  4. gcc编译的时候报错 error trying to exec 'cc1plus': execvp 解决方法

    sudo apt install --reinstall build-essential -y

  5. JavaScript 正则表达式匹配成功后的返回结果

    原文地址:https://blog.csdn.net/liupeifeng3514/article/details/79005604 使用正则表达式EDIT 正则表达式可以被用于RegExp的exec ...

  6. 23 Maven工程module的移除和重新导入

    1.移除module 移除后: 点击右侧的maven projects: 2.重新导入刚才移除的module (1)方法1 (2)方法2 Ctrl+Shift+ALT+S的快捷键 选择modules ...

  7. Https通信原理及Android中实用总结

    一.背景 Http俨然已经成为互联网上最广泛使用的应用层协议,随着应用形态的不断演进,传统的Http在安全性上开始面临挑战,Http主要安全问题体现在: 1,信息内容透明传输. 2,通信对方的身份不可 ...

  8. 虚拟机Ubuntu18.04 root下 连接 windows 中 winScp

    先查看自己虚拟机中是否有 ssh服务 如果没有的话先安装 apt-get install openssh-server 安装完之后 先手动开启一下服务 /etc/init.d/ssh restart ...

  9. 05 .NET CORE 2.2 使用OCELOT -- NLog

    加入NLog 按照官网的文档 https://github.com/NLog/NLog/wiki/Getting-started-with-ASP.NET-Core-2 一步一步操作下来,即可设置好. ...

  10. python 进程和线程-线程和线程变量ThreadLocal

    线程 线程是由若干个进程组成的,所以一个进程至少包含一个线程:并且线程是操作系统直接支持的执行单元.多任务可以由多进程完成,也可由一个进程的多个线程来完成 Python的线程是真正的Posix Thr ...