1. 适用场景
Jmeter工具当前支持的协议或协议所支持的传输方式及传输内容不能满足当前项目的测试要求时,就需要根据实际要求手动编写java测试代码(实现对应的Jmeter规范),以插件方式加载到Jmeter中作为一种自定义的取样器执行测试。
2. 开发步骤
1)新建java工程,引入Jmeter/lib下的jar包及自定义或第三方的jar包到该工程的构建路径中
2)创建一个类并实现JavaSamplerClient接口或继承AbstractJavaSamplerClient类并且覆写以下四个方法:
public Arguments getDefaultParameters() --设置用户需要传入java程序的参数并制定默认值,在Jmeter中会加载定义的参数且显示设定的默认值
如果用户在jmeter java请求界面中输入了新值,代码中通过JavaSamplerContext对象获取
public void setupTest(JavaSamplerContext arg0)--每个线程测试前执行一次做一些初始化工作
public void teardownTest(JavaSamplerContext arg0)--的每个线程测试结束后调用做一些清理工作
public SampleResult runTest(JavaSamplerContext arg0)--开始测试,从arg0可以获取参数值,编写核心业务逻辑--对数据进行处理封装发送,根据获取到的服务端响应结果对监听器写入数据
3)收集服务器返回结果进行校验并将校验结果写入SampleResult对象
SampleResult对象初始化:
必须在runTest方法中初始化,不能放在setupTest中初始化,否则如果线程组中设置循环次数>1时执行测试Jmeter会报错导致测试无法执行
SampleResult数据写入:
sr.setSuccessful(true); --请求的状态(是否成功)
sr.setResponseData(res) --请求的响应数据
4)打包并将此jar包放入$JMETER_HOME\lib\ext下
Eclipse-选择项目右键-Export-Runnable JAR file-Extract require libraries into...-Finish
5)打开Jmeter创建线程组添加java请求,在右侧的java请求页面中字段‘类名称’下拉列表中显示步骤4中导入的jar包的包名及类名
package jmeter.hcb.plugin;
public class PerftestForEncrypt2 extends AbstractJavaSamplerClient {