您的位置:首页 > 其它

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

2011-08-06 17:19 615 查看
问题:企业级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片段)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: