JMeter二次开发实现接口测试(二)

JMeter涉及到二次开发,原因总不绕开一些定制内容,比如接口测试存在复杂的上下文关联。“真·二次开发"的优势是基本没有约束地实现自定义内容,当然功力不够会写BUG,也会降低源代码的运行效率。本文主要说说“伪·二次开发”如何处理这类定制需求。

1.开源包jmeter-maven-plugin

通过查看源码,发现这个包的作用是拼接JMeter命令行并运行。这使得用户可以不关心调用细节,配置pom.xml文件的约定内容即可。

(具体配置参见:https://github.com/jmeter-maven-plugin/jmeter-maven-plugin/wiki)

命令行生成逻辑

MAVEN命令触发JMeter的测试管理器,调度执行中会判断是否是生成报表、是否是配置加载和是否运行测试项来获得测试结果。

(注意:jmeter-maven-plugin版本与apache-jmeter有对应关系,官网描述为:The current release of this plugin is 2.8.0, it requires JDK 8 and uses Apache JMeter 5.0.)

2.Plugin项目开发

Plugin项目最后生成的结果是Apache JMeter软件下扩展LIB下的JAR包,作用是通过定制化的JAVA Request请求来处理上下请求间的复杂参数处理,如加解密、调用远程方法计算等。

(1)Java Request

JMeter支持多种协议的请求和响应,比如HTTP请求、FTP请求、JDBC请求、JMS协议、LDAP请求、SMTP协议、TCP协议等等。Java请求为其中的一项,操作灵活度高,可方便处理上下接口的参数。

Java请求定制化实现

(2)上下文参数特殊处理

@Override

public SampleResult runTest(JavaSamplerContext context) {

SampleResult results = new SampleResult();

// Default Success Result

results.setSuccessful(true);

// Start to Record Time

results.sampleStart();

try {

// Load Test Data From DAO

// Call API

// Save Data to DAO

} catch (Throwable e) {

e.printStackTrace();

results.setSuccessful(false);

// Log Exception to JMeter Result

results.setResponseData(toStringStackTrace(e), "utf8");

}

// End to Record Time

results.sampleEnd();

return results;

}

上述代码为具体用例TestCase实现的接口方法runTest(JavaSamplerContext context)。

其中,粗体“Load Test Data From DAO”与“Save Data to DAO”用来负责处理接口参数的调取和存储。调取的参数可以预设,可以结合依赖接口返回值进行加密等复杂操作。

(3)部署测试

Plugin项目完成后,需要放入指定Apache JMeter软件目录生效,比如下图所示的扩展LIB路径。

Plugin项目部署路径

在部署后,在JMeter的GUI界面中可以看到生效的结果。

比如,项目中实现了下述Java Request用例。

Java Request用例

那么在JMeter中,可以选择到指定Java Request用例。

JMeter可见定制用例

在项目真正部署到平台或打包EXE之前,可以通过JMeter图像界面配置和进行综合场景的接口测试。


本文介绍了JMeter Plugin项目的开发和测试流程,稍后会对部署项目进行介绍。

JMeter二次开发实现接口测试(一)

JMeter二次开发实现接口测试(三)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容

  • 公司最近需要测试后台性能,所以学习使用了Jmeter,在此做记录,也分享给更多需要的人。 这篇文章是 JMeter...
    顾顾314阅读 4,244评论 0 10
  • 1.背景 最近部门有接口和性能自动化测试的需求,公司没有现成框架,通过分析,最终尝试了JMeter二次开发来满足需...
    君桦录阅读 8,445评论 0 6
  • “成年人眼里,孩子永远是简单的,他们根本想象不到孩子的诡计多端,哪怕他们自己也曾当过小孩。” 生命的历程,是一个心...
    广告三班郑杨润阅读 1,273评论 0 0
  • 2018秒11月9日星期五晴 亲爱的毛毛,今天我们都决定要让你去幼儿园了。你已经在家里呆了很长时间,待到都不...
    剪烛西窗_d70d阅读 201评论 0 2
  • 失眠了。有好多话想对你说,总是无从说起,更是容易吵架结束。或许是聊天沟通技能下降,或许是对你有太多的应该。电话里总...
    啵妞young阅读 349评论 2 0