分类: Java
2014-11-19 17:36:25
jmeter工具包含:
(1)负载发生器:产生负载,通常以多线程方式模拟用户行为。
(2)用户运行器:通常是个脚本运行引擎,它附加在线程或进程上,根据脚本要求模拟指定的用户行为。
(3)资源生成器:生成测试过程中服务器、负载机的资源数据。
(4)报表生成器:根据测试中获得的数据生成报表
setup thread group:执行预测试操作,初始化环境的初始化脚本
tearddown thread group:执行测试后动作,测试完毕后对应的清楚信息的脚本块
Test Fragment:测试片段,是控制器上特殊线程组,在测试树上与线程组处于同一级,除非它是模块控制器或是被控制器所引用时才会被执行
控制器:
Sampler 取样器 性能测试中向服务器发送请求,记录响应信息
Logic Controller 逻辑控制器 :
用于控制测试计划中sampler节点发送请求的逻辑顺序的控制器
组织可控制的sampler节点
配置元件 Config Element 用于配置静态数据(CVS Data Set Config可将本地数据文件形成数据池)
定时器 Timer:用于操作之间等待时间(常用于性能测试)
前置处理器:在请求发出之前对即将发出的请求进行特殊处理
如:HTTP URL修复符可实现URL重写
后置处理器:用于对Sampler发出请求后得到的服务器响应进行处理
监听器:对测试结果数据进行处理和可视化展示一系列元件
测试计划下的多个线程组死同时被初始化并同时执行线程组下的Sampler
使用镜像服务器:HTTP Mirror Server可启动一个镜像服务器,它将所有接收到的请求原封不动地返回,即可看到发出请求的具体内容。
当需要模拟数千计的并发用户时,使用单台机器模拟所有并发用户可能会引起JAVA内存溢出错误。所以采用多台机器多台机器同时产生机制(分布式测试):通过单个jmeter客户端可控制多个远程的jmeter服务器,使它们同步的对服务器进行压力测试。
特性:可将测试采样数据保存到本机
通过单个机器管理多个jmeter引擎
不需将测试计划复制到每一台机器上,jmeter GUI客户端会将它发往每一台jmeter 服务器
每一台jmeter远程服务器都执行相同的测试计划,它不会在执行期间做负载均衡,每 一台服务器都会完整的运行测试计划
使多台机器产生负载操作步骤:
1) 在所有期望运行jmeter作为负载生成器的机器上安装jmeter,并确定其中一台机器作为controller,其他的机器作为agent,然后运行所有agent机器上的jmeter-server文件(假定使用机器192.168.12.156作为agent)
2) 在controller机器的jmeter的bin目录下,编辑jmeter.properties文件,将remote_hosts=127.0.0.1改为remote_hosts=192.168.12.156:1099
注意:测试时,关闭agent机器上的防火墙
3) 启动controller机器上的jmeter应用,选择运行-->远程启动分别启动agent,或“远程全部启动”将所有的agent启动。
参数设置:
① 利用选项-->函数助手进行参数化设置
② 利用配置元件中CSV Data Set Config进行参数化设置
动态数据关联--正则表达式提取器
在http请求中会遇到一些参数的值是从服务器相应的动态数据,他们需要进行关联才能使每一次请求都能成功地被服务器接受
执行Jmeter脚本:Jmeter -n -t 脚本文件名 -l 保存执行结果的文件名
-n 告知jmeter采用非图形化执行jmeter脚本
-t 指定要执行的脚本文件
-l 指定保存结果的文件
注意:执行命令前检查当前目录是否是%Jmeter_Home%\bin目录
利用jmeter制作自动化性能测试框架:
执行流程:利用Jenkins的CI(持续集成)功能,实时检查脚本库,若有变更便调用jmeter来执行脚本,并将测试结果通过邮件或其他方式通知相关人员。
Maven执行Jmeter:
部署maven/jmeter环境
增加pom.xml依赖:
拷贝jmeter/bin下文件upgrade.properties到工程bin目录下
创建jmx文件,放到maven项目的src\test\jmeter目录下
执行命令mvn jmeter:jmeter或mvn verify生成xml报告
对Java程序进行测试
1.创建一个Java工程;
2.将JMeter的lib目录下的jar文件添加进此工程的Build Path;
3.创建一个类并实现JavaSamplerClient接口或继承AbstractJavaSamplerClient,并重写;
public Arguments getDefaultParameters();设置可用参数及的默认值;
public void setupTest(JavaSamplerContext arg0):每个线程测试前执行一次,做一些初始化工作;public SampleResult runTest(JavaSamplerContext arg0):开始测试,从arg0参数可以获得参数值;public void teardownTest(JavaSamplerContext arg0):测试结束时调用;
4.Export为Runnable Jar File;
5.将此jar包放入JMETER_HOME\lib\ext目录;
6.以管理员身份打开JMeter;
7.创建线程组、Java Request、查看结果树,进行测试;