今天来介绍一下Jmeter的Java自定义脚本功能和在项目中的实际例子,因为是实际项目,所以有的接口不可避免的屏蔽掉
背景知识:
在实际写之前,我们需要有jmeter自定义脚本的大概步骤,无非就是这几个步骤:
0.在eclpse导入两个jmeter的库,ApacheJMeter_core.jar和ApacheJMeter_java.jar
1.新建一个类,继承AbstractJavaSamplerClient,编写完成后生成jar包
2.把jar包到lib/ext目录下
3.在jmeter中生成一个java请求的取样器,然后选择第一步编写的自定义的java类
好了,步骤就是这么多了,下面我们开始具体实现
第一步:明确业务流程和阅读阿里云官方上传文档
那么这篇的文章实例是用Jmeter实现一个上传的业务接口插件
我们最终的实现效果是下面这幅图
需求的来源是项目的接口文档和上传阿里云的java sdk参考文档
那么根据接口文档我们整理出上传的流程:
- 请求upload key
- 上传规定的资源到服务器地址
- 生成上传分享的url链接
那么流程就是上面这些了,看起来是比较简单的,但是往往实际项目中的各种数据处理和需求会使写起来就复杂的多了。
我们项目用的是阿里云服务,所以上传资源用的是标准的官方文档,由于是安卓项目,用的是android端的sdk,但是我们jmeter是基于java的,所以无法复用android端的封装,只能自己封装。
https://help.aliyun.com/document_detail/32013.html?spm=5176.doc32014.6.660.REFePo
在参考了阿里云的文档后,我们可以找到一个通用的写法:
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
PutObjectRequest request = new PutObjectRequest(bucket, objectKey, file);
ossClient.putObject(request);
ossClient.shutdown();
第二步:开始编写自定义脚本
目前笔者的自定义脚本已经整合成一个java项目一个jar包,方便管理,如下图:
这个大的项目除了包含自定义脚本,也有一些自定义函数,主要是用在beanshell脚本中,比如计算目md5、获取时间这些。
图中标红的两个类是实现好的上传接口类,不做多说,真正需要的看的是jmeter自定义脚本规定的实现类:
这个类也是jmeter会去自动加载的自定义类
之后开始编写代码:
根据上面分析的接口文档,我们知道了输入是key+uploadPath+localPath这三部分:
也就是我们说的输入部分,接下来,我们需要把这几个参数传入自定义脚本,然后用阿里云的上传接口实现上传,开始阅读一下AbstractJavaSamplerClient这个类提供给我们的两个最重要的方法:
@Override
public Arguments getDefaultParameters() {
// TODO Auto-generated method stub
Arguments arguments = new Arguments();