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片段)。
主要技术:使用反射,接受参数中指定的类名、方法名等,有几个难点之前卡住了,周末花时间一一思考并实验了一下记录下来,初步想法是通过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片段)。
相关文章推荐
- 基于jmeter,jenkins,ANT接口,性能测试框架
- jmeter性能测试,基于scf框架的"java请求"接口封装、环境配置与测试
- 性能测试方案设计的方法和思路
- 自动化测试框架设计思路
- 利用jmeter+JAVA对RPC的单接口(dubbo接口等)进行性能测试,零基础(2)
- 一个通用的单元测试框架的思考和设计06-实现篇-自动管理测试数据-如何临时关闭数据外键约束
- Jmeter jdbc和接口性能测试
- 基于python的接口测试框架设计(三)接口测试的框架
- Jmeter实现WebSocket协议的接口和性能测试方法
- Jmeter做接口性能测试
- 性能测试培训:Ajax接口级性能测试之jmeter版
- 接口测试 [分享] 自动化测试与持续集成方案--Jmeter 测试接口及性能
- 使用Jmeter对观影券查询接口做性能测试
- 使用Jmeter进行http接口性能测试
- 一个通用的单元测试框架的思考和设计06-实现篇-自动管理测试数据-如何临时关闭数据外键约束
- 接口性能测试(Jmeter)操作总结
- Jmeter进阶学习笔记(对性能、接口测试的进阶学习)
- 自动化测试与持续集成方案--Jmeter 测试接口及性能
- Jenkins + Jmeter 构建接口、性能测试 (Windows平台)
- 接口测试 Http 接口测试框架 (思路 + 实现中 + 开源 + 可能难产)