Jmeter通用接口性能测试框架设计思路

本文介绍了一种通用接口调用框架的设计思路,利用JMeter和Java反射技术,简化接口调用过程,提高性能测试效率。通过字符串描述方法,实现灵活配置接口、参数和返回结果验证,支持复杂对象表示与调用,同时解决反射方法的调用、参数传递和返回结果处理等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:企业级j2ee应用中,各系统对外提供的服务,常要在客户端通过Java程序方式调用,对此类接口进行性能测试时,一般使用Jmeter的Java Sampler进行。但各个接口调用时,所写的代码大同小异,如能写一个通用的接口调用框架,避免编码,只需要将远程接口的配置、方法、参数、校验表达式等作为参数传递给Java Sampler即可,那么将大大提升这类接口性能测试的效率。

主要技术:使用反射,接受参数中指定的类名、方法名等,有几个难点之前卡住了,周末花时间一一思考并实验了一下记录下来,初步想法是通过Jmeter中传递字符串的方式来告诉框架想调用的方法、参数以及对返回值的判断等,其余一切工作交给框架,主要难点有四个:

1.如何通过Jmeter所给的字符串描述找到要调用的方法对象

解决方案:Java获取Method对象时,除了方法名,还需要传入参数类型列表,而且参数类型列表是可变参数,不过可变参数可以接受直接传入数组,因此在Jmeter中传入几个参数类型的全路径(如java.lang.String),便可由此可获得准确方法!
2.需要传递的参数用字符串如何表示?如果涉及到Java的复杂对象时呢?

想使用json,但对于复杂对象显然不太好表示,而且接口可能会有许多自定义的对象,感觉不是很容易,想到另一个方案,即使用spring格式的xml片段,表示传入的参数,定义为bean或者list即可,使用XmlBeanFactory初始化,使用ByteArrayResource进行定位字符串(Xml片断从Jmeter获得,而不是文件)并解析,就可以获得需要的参数!以Spring的成熟程度,相信表示任何类型的Java对象都不成问题。
3.拿到方法后,如何对方法进行调用?因为invoke是个可变参数的方法。

invoke是可变参数方法,同理将spring从xml片断中解析到的参数列表作为一个Object数组传入method.invoke方法即可!
4.接口调用后的返回值类型,及断言如何处理?

可以固定考虑,比如ESB的接口返回值类型固定,是可以进行统一处理的!如果要支持其它返回值类型的接口,可以尝试使用Velocity语法的一个字符串表达式作为对返回结果的判断,由此来设置successful。

发现这个框架完全可行,感觉到自己的进步了~~~

只要对于Jmeter要求不是特别高的接口,相信都可以使用这个框架直接进行, 不需要任何Java代码,只需要配置xml片段和参数即可(接口对象的初始化也用xml片段)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值