jmeter的使用
jmeter解压后,如果在bin目录里找不到jmeter.bat,通过控制面板->外观和个性化->文件资源管理器选项->查看,去掉隐藏已知文件类型的扩展名的√,如下图:
jmeter常见的三种协议:http,jdbc和soap,jmeter默认端口1099
JDBC请求不要用loadrunner,loadrunner请求每次都要创建和关闭,影响性能,用jmeter,SOAP和webservice请求也要用jmeter,loadrunner对于那种非标准的SOAP报文,SOAP协议不支持
jmeter的线程数相当于loadrunner的VU,key自定义的全局变量,TestPlan下可以添加多个线程组,在TestPlan页面点击添加,会弹出一个用户定义的变量的页面,点击添加可以添加一个key和value,key可以在下面多个线程组使用,用${key}的形式即可
独立运行每个线程组,如果勾选上,查看结果树里会依次执行每个线程组,如果没有勾选,线程组是并行的,每个线程组里有多个迭代的话,查看结果树里的请求的交叉进行,如果下一个线程组用到上一个线程组的数据要勾选上
Run tearDown Thread Groups after shutdown of main threads的意思是在测试计划下面在增加一个tearDown Thread Group,在上个线程组在取样器错误后要执行的动作选择停止测试,在查看结果树里线程组的请求是错误的,如果没有勾选Run tearDown Thread Groups after shutdown of main threads,tearDown Thread Group里的请求不会执行,如果勾选了Run tearDown Thread Groups after shutdown of main threads,tearDown Thread Group里的请求会执行
1、继续,如果勾选这个就是线程出现错误继续运行
2、Start Next Thread Loop,3个线程,循环次数是2,如果第1次迭代出问题了,第二次迭代就不执行,直接执行第3个线程
3、停止线程,线程数是3,循环次数是2,如果第2个线程出问题了,这个线程和循环都不跑了,执行从第3个线程开始
4、停止测试,整个测试全部停止,停止当前整个线程组,别的线程组不受影响
5、Stop Test Now,是立刻马上停止,停止当前整个线程组,别的线程组不受影响,这个基本不用
4.0版本里没有启动时间和结束时间,必须勾选调度器才能在下面的文本框里输入时间,如果输入持续时间,必须勾选永远,输入循环次数没有意义
延迟启动3秒,3秒后查看结果树里才会有请求出现,持续时间5秒,一共运行8秒,8秒后自动停止
添加jar文件,或添加到lib库中
右键线程组,添加->逻辑控制器->事务控制器,把两个http请求放到事务控制器下面,就可以了,就是一个事务
固定定时器相当于思考时间,添加成功后在线程延迟这里输入延迟多少毫秒,也可以添加高斯随机定时器,偏差如100毫秒,固定延迟偏移300毫秒,思考时间是200-400毫秒
Synchronizing Timer相当于loadrunner中的集合点,测试计划右键添加->定时器->Synchronizing Timer,就添加成功了,如下图:
第一个红框是里多少个虚拟用户数的等待,第二个红框是超时时间,输入0是永远等待的意思
开发说为什么我看到的响应时间比你看到的响应时间小很多?
开发看到的时间是3+4+5+6,省略了1,2,7,8
开发看时间在日志里看,看接口,打点end-start
1、测试工具的差异性 2、测试脚本的差异性(事务定义不一样导致测试结果不一样、思考时间的位置不一样) 3、测试版本 4、测试环境(硬件,软件,数据),硬件是整个架构的所有硬件,软件是指数据库的配置,redis的配置,nginx的配置,数据量大小测试结果也不一样 5、人为原因(压测时别人也在操作服务器,对服务器压测)
jmeter本身内存溢出、垃圾回收或服务器挂了,tps没有变化,请求没有发出去,响应也没有返回来