性能测试工具--Jmeter

JMeter有严格作用域。

Jmeter中所有登录都需要在HTTP请求前加上HTTP cookie管理器。

全局变量,作用于全局。用${}进行调用。

1.参数化

1) 随机值:选项→函数助手对话框(Random、Random_String)

2) 固定值:HTTP请求→添加→配置元件→CSV Data Set Config(值的传递 ${})

Sharing mode:参数化取值策略

All threads 唯一+每次迭代

Current thread group 基于每个线程组下的唯一+迭代取值(不同线程组是顺序取值,一个线程组是唯一取值)

Current thread 顺序+每次迭代

如果多线程之间值是重复的,那么就是顺序,每个线程之间没有重复,就是唯一。

  1. jmeter手动停止,最后一些请求会出现失败。

一定是这样,因为一些请求是在发送状态,还没有收到请求的响应,按停了,就没有办法收到响应了。

2.关联:放在请求后

左右边界是中文的略过。

正则表达式的元符号:

.* 匹配前面的子表达式0次或多次,基本上如果左右边界取的没问题,那么用.*一定能匹配到。

.+ 匹配前面的子表达式1次或多次

.? 匹配前面的子表达式0次或者1次,取一次没有取到,就不取了。

3.断言(检查点)

线程组→添加→断言→响应断言

模式匹配规则,默认选择包括即可。

测试过程一定要加断言,检查请求是否成功。

断言结果:可以知道断言结果是成功还是失败

4.思考时间

添加→定时器

添加→定时器→高斯随机定时器

5.集合点,放在操作之前

添加→定时器→Synchronizing Timer

6.事务

线程组→添加→逻辑控制器→事务控制器

7.响应时间RT

线程组→添加→聚合报告

Jmeter只有单个请求的响应时间,加了事务控制器,把多个请求放在同一个事务控制器下,统计出多个事物的平均响应时间。

8.重定向

自动重定向:只记录最后跳转请求,不记录cookie和header;

跟随重定向:会记录跳转请求的cookie和header,记录整个过程,过程请求为sub-sampler

1)DB

主从库读写分离 主库(所有写操作在主库) 从库(所有读操作在主库) 主从数据同步(二进制日志文件进行同步)

主从库解决不了大数据问题,故目前的技术是拆库分表(主从结构)一个库拆成多个库,一张表拆成多张表,还是读写分离的模式,只是数据拆分到了不同的表里。

9.JAVA请求总是有一些不稳定现象。

1) 比如一个买入操作,在页面上通过F12看买入成功的时间,通过LR模拟买操作。。。两者响应时间不一样是什么原因,LR两秒多,页面不到一秒?单用户操作时有可能加入思考时间,或者加入其它请求时间并发时间是平均值时间。这样是不正常的,有可能LR把其它的请求时间也加进去了,但是不会超过一倍的。如果不包括思考时间和其它请求时间,应该是一样的。这里只的是单用户操作的时候。

2) Jmeter和LR哪个比较靠谱些。。。。。两种软件发请求。。。他俩最后得到的数据差别大不大

3) LoadRunner结果靠谱,正常来说lr的响应时间一定会比jmeter时间短些,因为LR是C写的,jmeter是用java写的,java有一个java虚拟机,Java虚拟机是java的一个核心,jvmjmeter内存满了以后,jmeter会回收内存。会把不要的内存回收掉,这样才能让新的请求不断运行,因为新的请求会产生新的对象,新的对象要往内存里面放,如果内存满了会放不进去,在垃圾回收的时候,GC会占用jmeter的线程。

4) 小规模并发的时候jmeter时间会短一些,怀疑是有些请求没有成功,所以在以后测试时一定要加检查点,用来判断有没有成功。大规模并发的时候jmeter比LR响应时间会长

原文地址:https://www.cnblogs.com/wangguoyuan-09/p/7832428.html