性能测试学习之路-Jmter工具学习(基础)

这里省略了安装及配置,一般都知道jmeter是免安装的,配置也是根据个人需要进行配置,从而方便通过命令快速启动,有需要同学自行查询相关文章一下哈,后面就是博主学习的一些随笔,也不是很系统的,姑且将就看看吧,哈哈

基本介绍

一、线程组

线程组:负载发生器,用多线程或者多进程的方式来模拟用户的使用行为。jmeter是以线程的方式来进行模拟用户的并发访问的。
线程数:设置多少个线程(虚拟用户)
循环次数:一个线程执行多少次
Ramp-up 时间:设置多少秒内把线程加载完毕,设置10就是10s
调度器:执行脚本的时间设置


image.png

二、逻辑控制器--if控制器

jmeter(5.3)版本:
if控制器:借助其他模块或者函数将需要进行判断的表达式(如 {ifRun}== 1)转换成true或false,判断才能生效,直接将{ifRun}== 1这样的表达式写入Expression中是无效的。
可以借助__jexl3或者__groovy函数来计算表达式的值:{__jexl3({ifRun}==1,)}
或者 直接不勾选“Interpret Condition as Variable Expression?”

image.png

三、添加配置原件--JDBC connection configuration

这里添加数据库配置原件,一定要有变了名称,例如demo,“jdbc:mysql”表示这个是链接mysql数据库,后面是数据地址+端口好,“inventory”是数据名字,也可不写或写mysql,不写的数据库时,在写sql时,指定对应的数据即可;“serverTimeZone=UTC”这个是设置查询时区,在做数据库查询时,数据库如果没有设置统一时区,可能会报错,数据库设置好了,此处可省略。


image.png

添加完数据库配置,开是写sql,需要添加一个JDBC Request,然后把数据库源文件名称写入,就可以进行数据可查询了。


image.png

image.png

四、jmeter实现请求预处理

前置处理器:用于在实际的请求发出之前对即将发出的请求进行特殊处理,例如用户参数,可以在实际发送请求之前来定义变量,可以在后边的事假请求中进行使用。
1、用户参数:添加变量,并在控制台打印变量
2、BeanShell Sampler ----可以编写脚本文件

image.png

五、jmeter集合点、定时并发

定时器:用于操作与操作中间设置的等待时间。等待时间是性能测试中常用的控制客户端QPS的手段。类似与LoadRunner里面的“思考时间”


image.png

六、jmeter实现各种请求的发送

Sampler:取样器,是性能测试中像服务器发送请求,记录相应信息,记录响应时间的最小单元,jmeter原生支持多种不同的Sampler.
例如:
1、BeanShell:可以自己写代码 应用jia包
2、DeBugSampler:协助进行调试工作
3、JAVA请求:自定义代码
4、HTTP请求:写http接口

七、jmeter实现关联

后置处理器:(关联概念的应用器)用于对对Sampler发出请求后得到的服务器相应进行处理。一般用来提取相应中的特定数据
正则表达式提取器和BeanShell取样器截取的字符串包含中文,在表达式括号内使用双引号包起来就能表示截取的是字符串
System.out.println("${title}")


image.png
image.png
image.png

八、jmeter实现数据预判

jmeter实现数据预判
断言:断言用于检查测试汇总得到的相应数据是否符合预期。断言一般用来设置检查点,用于保证性能测试过程中数据交互是否与预期一致


image.png

九、jmeter监控数据可视化

jmeter监控数据可视化
监听器:这个监听器不是用来监听系统资源的组件,他是用来对测试结果数据进行处理和可视化展示的一系列组件,例如查看结果树,聚合报告


image.png

十、jmeter函数助手

代表性的函数:
1、随机数:(__Random)


image.png
image.png

2、参数化助手:(__CSVRead)读取CSV文件的值,应用到性能测试脚本中
新建一个csv文件,tetsCsv.csv,数据为:


image.png
image.png
image.png
image.png
image.png
image.png

System.out.println("{__CSVRead(/Users/Documents/Performance/testCsv.csv,1)}"); System.out.println("{__CSVRead(/Users/Documents/Performance/testCsv.csv,0)}");

3、计数器:(__counter)


image.png
image.png
image.png
image.png

"System.out.println("Flase= "+{__counter(FALSE,counter)}); 线程*循环,全局的”, “System.out.println("True= "+{__counter(TRUE,counter)}); 仅循环,每个用户自己的循环计数”
4、唯一数:(__UUID)

image.png

image.png

十一、jmeter实现分布式并发

大并发量的时候,一般在1000以上就可以考虑分分布式了,关键步骤:

1.master在jmeter.properties中添加remote_hosts;(主压力机)
2.slave在jmeter.properties中添加server_port;(从压力机)
3.slave启动jmeter-server
注意:关闭防火墙
操作过程中遇到的问题:
1、直接启动远程服务时,
提示:Exception creating connection to: 127.0.0.1; nested exception is:
java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
找不到对应文件
解决:修改jmeter.properties文件,将中找到server.rmi.ssl.disable内容改为:server.rmi.ssl.disable=true并去掉注释,重新启动jmeter


image.png

2、在启动时,问题就变成了视频中提到的拒绝访问
Connection refused to host: 127.0.0.1; nested exception is:
java.net.ConnectException: Connection refused (Connection refused)
解决:要先安装虚拟机,或者有服务器,自己来测试

由于目前没有部署服务,所以么有进行测试。

本文出自慕课网培训视频,不可用于商业用途,转载请注明出处:https://coding.imooc.com/lesson/142.html#mid=7147

时隔很多年,终于还是决定放出来

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容