·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. springboot模板(Freemarker与Thymeleaf)

    Thymeleaf模板 Thymeleaf就是html页面 导入pom依赖 <dependency> <groupId>org.springframework.boot< ...

  2. ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于(Wi-Fi模块AT指令TCP透传方式),MQTT通信控制升级

    实现功能概要 前面的版本都是,定时访问云端的程序版本,如果版本不一致,然后下载最新的升级文件,实现升级. 这一节,在用户程序里面加入MQTT通信,执行用户程序的时候,通过接收MQTT的升级命令实现升级 ...

  3. docker--发布docker镜像

    前戏 前面我们自己做了个docker镜像,我们可以上传到docker hub,别人就可以下载使用了 发布到docker hub 我们前面使用docker search 查找的镜像都是从docker h ...

  4. Linux基于FPM制作RPM包(以Nginx为例)

    1.搭建Epel  Yum源  安装在线yum源 [root@localhost ~]# rpm -ivh epel-release-latest-.noarch.rpm //安装扩展源 [root@ ...

  5. 快速挖pi币

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  6. Linux挖矿程序kworkerds分析

    0×00 背景概述 近日,同伴的一台Linux服务器中了kworkerds挖矿程序,随即对挖矿程序进行了处理与分析. 0×01服务器现状 进入服务器之后通过top命令,没有发现有占用CPU资源过高的进 ...

  7. 雅礼集训 2017 Day4 编码(2-sat)

    题意 题目链接:https://loj.ac/problem/6036 思路 ​ 首先,有前缀关系的串不能同时存在,不难看出这是一个 2-sat 问题.先假设所有串都带问号,那么每一个字符串,我们可以 ...

  8. Django-查询优化

    表数据: from django.db import models class Province(models.Model): name = models.CharField(max_length=1 ...

  9. NodeJS添加Jquery依赖

    NodeJS使用时有时候需要JQuery依赖. 新版正确的依赖方式 var jsdom = require('jsdom'); const {JSDOM} = jsdom; const {docume ...

  10. MongoDB学习笔记(五)

    MongoDB 查看执行计划 MongoDB 中的 explain() 函数可以帮助我们查看查询相关的信息,这有助于我们快速查找到搜索瓶颈进而解决它,本文我们就来看看 explain() 的一些用法及 ...