【最佳实践】MeterSphere 导入JMX注意事项


飞致云 发布于 2023-08-07 / 688 阅读 / 0 评论 /
由于 MeterSphere 与 JMeter 运行环境差异,导致引用文件、扩展包时路径不一致,所以在 MeterSphere 导入 JMX 文件时可能需要手动进行处理,本文对相关情况的操作进行详细地说明。

1 导入条件

目前 MeterSphere v2 最新版本支持 JMeter5.2-5.4版本的 JMX 文件。

接口自动化目前支持等待控制器、事务控制器、循环控制器和条件控制器。如果待导入的JMX文件中包含其他逻辑组件,目前无法兼容。例如,JMX文件使用了吞吐量控制器,导入MeterSphere接口自动化后不适配。

2 MeterSphere 性能测试导入 JMX

2.1 JMX 中引用了文件

MeterSphere性能测试中使用的文件最终都会同步到JMeter容器中的/test目录下,所以在性能测试上传JMX时,需要提前编辑JMX文件,将JMX中的文件路径改成 “/test/文件名”的格式再导入性能测试,然后将用到的资源文件在“性能测试-资源文件”中上传。

以下是资源文件在JMeter容器中位置的示例图。

2.2 JMX BeanShell Pre/PostProcessor 中引用了外部jar包

JMX文件中引用了外部jar包,在上传到性能测试时,需要将jar包上传到性能测试的资源文件中,这样才会把jar包同步到JMeter容器内,否则执行时,将提示jar引用错误信息。

示例:

3 接口自动化导入 JMX

3.1 JMX中引用CSV文件参数化

JMeter中使用CSV文件参数化需要填写文件路径和设置各变量字段名。而MeterSphere接口自动化的场景变量中支持CSV参数化设置,并且无需关注路径,系统自动处理,更加方便。

例如,MeterSphere导入JMX文件前,如果要保留JMter自带的CSV数据文件设置控件,则需要将涉及的CSV文件手动上传到MeterSphere服务器/opt/metersphere/data路径下,然后编辑JMX文件,将其中的CSV文件路径修改为服务器上的文件路径。修改完JMX文件后,再将其导入MeterSphere接口自动化。

更简单的方式是,在MeterSphere导入未修改的JMX文件后,将JMeter自带的CSV 组件删除,然后将CSV文件上传到场景变量即可。在MeterSphere中,CSV表格的列名就是引用时的变量名称。场景变量中显示的CSV变量名实际为文件名。

示例:

3.2 JMX BeanShell Pre/PostProcessor 中引用了外部jar包

JMX  Beanshell前后置处理器中使用了外部jar包,导入接口自动化后,需要在“项目设置-文件管理”中上传jar包,并开启“加载jar包”。

示例:

3.3 JMX 接口请求体中引用了文件

JMX接口请求体中引用了文件,导入MeterSphere接口自动化后,需要删除原来的文件,在请求体中重新上传文件。

示例:

也可以将JMX中引用的文件手动上传到MeterSphere服务器的/opt/metersphere/data路径下,然后编辑JMX文件,将本地文件路径修改为MeterSphere服务器上的文件路径后再上传。

3.4 JMX BeanShell Pre/PostProcessor 中使用了文件

MeterSphere文件默认存储位置是/opt/metersphere/data/中,如果Beanshell前后置中用到了文件,需要手动上传到MeterSphere服务器存储目录下。

4 JMX 中使用了第三方插件

JMeter自带的组件,MeterSphere都可以支持。对于JMeter的拓展插件,比如MQTT取样器、WebSocket取样器等,直接上传到MeterSphere是不支持的,需要对JMeter插件根据MeterSphere官网规范进行改造。目前MeterSphere企业版已改造的的插件包括MQTT、WebSocket、GRPC协议插件等。

例如,在JMX文件中使用了原生的MQTT取样器,需要将JMX导入接口自动化场景,将原生的MQTT请求替换成适配MeterSphere的MQTT插件。

上传和使用MeterSphere企业版插件的方法如下:

5 总结

当 MeterSphere 接口自动化导入 JMX 时,如果JMX中涉及外部文件路径,有两种处理方式。

一种是将外部文件上传到 MeterSphere 服务器 /opt/metersphere/data 路径下,并修改 JMX 文件中的路径,修改完成后再将 JMX 导 入MeterSphere,另一种是在 MeterSphere 导入原 JMX 文件后,在 MeterSphere 页面上将 JMeter 自带的组件删除,使用 MeterSphere 的同等功能实现,例如3.1。



是否对你有帮助?