性能测试学习第六天-----JMeter拓展应用
一、TCP取样器
服务器名称或IP:填写socket接口的ip
端口号:写socket接口的端口号
Re-use connection:是否重用链接,如果选择,同一个线程执行的所有请求都会使用一个tcp连接
Re-use connection+close connection:每个请求结束后关闭连接
End of line byte value:socket接口返回的数据结尾标识符的ascii码
要发送的文本:发送的数据

二、定时器
Jmeter中的定时器类似于loadrunner中的pacing值和think_time
1)定时器是在每个sampler(采样器)之前执行的,而不是之后
2)定时器是有作用域的;当执行一个sampler之前时,所有当前作用域内的定时器都会被执行。且所有的sampler执行前都会执行定时器
3)如果希望定时器仅应用于其中一个sampler,则把该定时器作为子节点加入
常用的定时器
1,固定定时器:设置一个固定的延迟时间,单位ms
2,同步定时器(synchronizing timer):在该定时器处,使线程等待,一直到指定的线程个数达到后,再一起释放。可以在瞬间制造出很大的压力。它和loadrunner的集合点差不多的功能
3、常量控制器:可以控制每分钟tps的总量,限制最高
三、Jmeter常用的BeanShell: https://www.cnblogs.com/qmfsun/p/5945302.html
◼ 前置处理器:BeanShell PreProcesser 预处理请求参数,例如参数之间有关联,参数a为奇数时,b=5;参数a为偶数时,b=10,如图。又例如:提前生成测试账号
◼ 采样器:BeanShell Sampler
◼ 后置处理器:BeanShell PostProcesser
◼ 断言:BeanShell断言
1.获取内置变量---beanshell脚本中不用定义,可以直接使用的变量,常用的内置变量和方法如下 添加
log:写日志到控制台和jmeter.log,如log.info(“xxxxx”);
vars:操作jmeter变量
vars.get(“ip”); 从jmeter中获取${skuId}变量的值
vars.put(“name”,”test”); 将”test”保存到${name}变量中,可以用于新增变量,修改变量
prev:获取前面sampler返回的信息
getResponseDataAsString(): 获取响应信息
getResponseCode(): 获取响应code

但是不能在脚本中直接引用自定义变量,例如 String i=“1”; String sku=“${__Random(i,100,mysku)}” ,直接引用脚本中自定义的 i 会报错。
2.打印日志、新增或修改参数

3. 引用外部java文件,步骤:
//引用外部java文件
source("D:/md5/Md5Util.java");
//获取出原来的p_opt参数
String str_opt = vars.get("p_opt");
//调用Md5Util类中的getMd5Hex方法,将str_opt加密
String md5_opt = Md5Util.getMd5Hex(str_opt);
//将加密后的参数重新保存为一个mdt_opt参数,并放到vars中
vars.put("md5_opt",md5_opt);

4.引入外部jar包,步骤:
1.“测试计划”里,Add directory or jar to classpath
2.import 所需要的类名
//导入类名
import com.lee.util.Md5Util;
//获取出原来的p_opt参数
String str_opt = vars.get("p_opt");
//调用Md5Util类中的getMd5Hex方法,将str_opt加密
String md5_opt = Md5Util.getMd5Hex(str_opt);
//将加密后的参数重新保存为一个mdt_opt参数,并放到vars中
vars.put("md5_opt",md5_opt);
5.bealshell断言
内置变量
Failure:是否失败,boolean类型
FailureMessage:失败日志,在断言失败时显示
例:
int stock = Integer.parseInt(vars.get("p_stock"));
if (stock > 1500){
Failure = true;
FailureMessage = "库存数量超过了1500";
// ResponseData是服务器返回的byte[]类型的数据,如果想打印,必须转换为String类型的,用new String(ResponseData)
log.info(new String(ResponseData));
//打印当前请求的url, SamplerData是String类型的数据
log.info(SamplerData);
}

四、java请求,例如jdbc连接数据库批量插入数据,步骤:
1.先使用eclipse新建java工程;
2.新建文件夹lib,拖入jmeter中的四个jar包:ApacheJMeter_core.jar、ApacheJMeter_java.jar、slf4j-api-1.7.25.jar、jorphan.jar,分别在E:\apache-jmeter-5.1.1\lib\ext和E:\apache-jmeter-5.1.1\lib目录下;
3.将mysql-connector-java-5.1.22-bin.jar也一并粘贴至lib文件夹下,选中这五个jar包,右键build in path;
4.新建package,在package下新建类,注意新建类时需添加interface,搜索输入JavaSamplerClient,添加后,点击完成,即可看到类文件下已经生成了格式代码;

5. 编写脚本,从之前为loadrunner写的jdbc连接数据库执行脚本中复制内容:setup中粘贴数据库连接等操作,teardown中粘贴关闭数据库连接操作,runtest中粘贴字符串替换 以及sql执行操作;导包和全局变量一并粘贴到前面,根据错误提示,增加try{}catch{}异常处理机制,增加main中传参。运行调试无误后,在public Arguments getDefaultParameters() 中增加与jmeter可识别交互的参数名称 并返回。
6.脚本完成后,在eclipse中选中工程名称,右键,选择export-runnable java file, jar包和依赖包文件,注意下面选项:

7.将导出的jar包和依赖包文件移动到 jmeter中lib\ext\下,重启jmeter;
8.新建java请求,在类名称处就可以看到自己写的类名了,选择后,设置在getDefaultParameters() 中的变量就会识别出来,可以再当作Jmeter参数进行处理了。

五、JMeter图形化可视报告插件应用
使用Jmeter插件可以扩展Jmeter的功能
插件官网: http://jmeter-plugins.org/downloads/all
使用Jmeter插件管理器,可以自动下载并安装插件,更加方便简单
使用方法:
1,下载插件管理器对应的jar包,然后放在Jmeter的lib/ext目录下
2,打开Jmeter,选项-插件管理器
3,勾选对应的插件,等待下载完成,点击apply,等待重启Jmeter,即可使用
4,添加tps监听器:事务控制器→添加→监听器 →jp@gc – Transaction per Second;
5,添加tps监听器:事务控制器→添加→监听器 →jp@gc – Transaction per Second
几个好用的插件:
1> 3 Basic Graph:windows下可用的实时tps和响应时间的插件
2> Custom JMeter Functions
3> Random CSV Data Set Config
4> PerfMon :服务端性能实时监控插件
性能测试学习第六天-----JMeter拓展应用的更多相关文章
- 性能测试学习第六天_loadrunner录制的一些问题
1.录制脚本的两种查看方式(脚本查看和树查看) 2.录制选项 在vugen界面点击开始录制,如下图,点击选项,即进入录制选项界面 重点讨论录制选项下 基于HTML的脚本和基于URL的脚本 注:菜单栏图 ...
- 性能测试学习之路 (一)认识jmeter(性能测试流程 && 性能测试通过标准 &&jmeter体系结构)
性能测试是通过自动化的测试工具模拟多种正常.峰值以及异常负载条件来对系统的各项性能指标进行测试. 1 性能测试技能树 性能测试是一项综合性的工作,致力于暴露性能问题,评估系统性能趋势.性能测试工作实质 ...
- 性能测试分享:Jmeter的api监控工具解决方案
性能测试分享:Jmeter的api监控工具解决方案 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询q ...
- 性能测试分享:jmeter性能监控(一)
性能测试分享:jmeter性能监控(一) poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908 ...
- 性能测试分享: Jmeter的源码分析main函数参数
性能测试分享: Jmeter的源码分析main函数参数 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大 ...
- 性能测试分享:Jmeter多机协作原理
性能测试分享:Jmeter多机协作原理 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:90 ...
- 学习使用Jmeter做压力测试(一)--压力测试基本概念
学习使用Jmeter做压力测试(一)--压力测试基本概念 一.性能测试的概念 性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试.负载测试和压力测试都属于性能测 ...
- (转)学习使用Jmeter做压力测试(一)--压力测试基本概念
一.性能测试的概念 性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试.负载测试和压力测试都属于性能测试,两者可以结合进行. 通过负载测试,确定在各种工作负载下 ...
- 性能测试学习之三—— PV->TPS转换模型&TPS波动模型
PV->TPS转换模型 由上一篇“性能测试学习之二 ——性能测试模型(PV计算模型)“ 得知 TPS = ( (80%*总PV)/(24*60*60*(T/24)))/服务器数量 转换需要注意: ...
随机推荐
- 【模拟】CF409C 【Magnum Opus】-C++
题目背景 愚人节题目,题面似乎是一位名叫Nicolas Flamel的炼金术士用拉丁文写的某种物质的配方,结合谷歌尝试翻译了一下: 吾友: 哲人石所言不虚,人不可貌相,海不可斗量,唯努力得胜万象,亦无 ...
- 看MySQL的参数调优及数据库锁实践有这一篇足够了
史上最强MySQL参数调优及数据库锁实践 1. 应用优化 1.2 减少对MySQL的访问 1.2.1 避免对数据进行重复检索 1.2.2 增加cache层 1.3 负载均衡 1.3.1 利用MySQL ...
- Dubbo服务注册与发现
目录 一.分布式基本理论 1.1.分布式基本定义 1.2 架构发展演变 1.3.RPC简介 二.Dubbo理论简介 三.Dubbo环境搭建 3.1 Zookeeper搭建 3.2 Dubbo管理页面搭 ...
- Shiro授权流程
1,授权中涉及的一些概念 [1]授权:访问控制,即在应用中认证用户能否访问的系统资源(如一个页面,一个按钮等). [2]资源:在Web应用中反应为用户可以访问的URL. ...
- spring配置文件比较全的约束
个人总结:Spring的配置文件applicationContext.xml约束文件.全面约束 <?xml version="1.0" encoding="utf- ...
- 手把手教你破解文件密码、wifi密码、网页密码
手把手教你破解文件密码.wifi密码.网页密码 1.破解文件密码: 有时候我们在网上下载一个压缩包后,必须要关注或者支付一定费用才给你解压密码,实属比较恶心.在这里手把手叫你实现破解文件解压密码. 1 ...
- 并发,并行,线程,进程,GIL锁
1.并发和并行 并发: 同时做某些事,但是强调同一时段做多件事 如:同一路口,发生了车辆要同时通过路面的时间. 并行: 互不干扰的在同一时刻做多件事 如:同一时刻,同时有多辆车在多条车道上跑,即同时发 ...
- 安科 OJ 1190 连接电脑 (并查集)
时间限制:1 s 空间限制:128 M 传送门:https://oj.ahstu.cc/JudgeOnline/problem.php?id=1190 题目描述 机房里有若干台电脑,其中有一些电脑已经 ...
- PhpCms V9中的{date('Y-m-d',$r[inputtime])}问题解决方法
不少朋友会碰到这个问题:在PhpCms V9中的首页或者文章内容页调用发布时间{date('Y-m-d',$r[inputtime])}调用显示1970-01-01,然后尝试用截断的方法也没有成功,应 ...
- Java简单公式计算器
最近给公司开发业务代码时,碰到一个场景,简单描述是这样的: 客户要向咱们公司定制一件产品,这个产品呢,有很多属性,那公司得根据这些属性报价呀,怎么报价呢?公司针对某种类型的产品有一个基准价,在同类产品 ...