最近了解到在 github 上比较🔥的一个一站式开源测试平台https://github.com/metersphere/metersphere,一看还是 JAVA 写的,并且还是开源的,看了下官网文档,覆盖测试管理、接口测试、UI 测试和性能测试等众多功能,所以就想本地跑起来试试。
查看官网的文档,有很详细的步骤,如果第一次启动一定要仔细看清楚了。
https://metersphere.io/docs/v2.x/dev_manual/
首先了解一下基础的架构:
整体看下来,前端是 Vue,后端是 SpringBoot, 数据库是 Mysql,缓存 Redis 等。
参考官网:https://metersphere.io/docs/v2.x/dev_manual/
metersphere :(主要应用启动,包含前后端代码)
ms-jmeter-core:(主要核心依赖)
找到代码中启动类,创建对应的文件目录。内容如下(参考官网): windows 需要更改指定路径。
# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/metersphere_dev?autoReconnect=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
# kafka 配置,node-controller 以及 data-streaming 服务需要使用 kafka 进行测试结果的收集和处理
kafka.partitions=1
kafka.replicas=1
kafka.topic=JMETER_METRICS
kafka.test.topic=JMETER_TESTS
kafka.bootstrap-servers={KAFKA_IP}:19092
kafka.log.topic=JMETER_LOGS
kafka.report.topic=JMETER_REPORT
# node-controller 所使用的 jmeter 镜像版本
jmeter.image=registry.fit2cloud.com/metersphere/jmeter-master:0.0.6
# TCP Mock 端口范围
tcp.mock.port=10000-10010
# Redis 配置
spring.redis.host={REDIS_IP}
spring.redis.port=6379
spring.redis.password=Password123@redis
# 启动模式,lcoal 表示以本地开发模式启动
run.mode=local
修改以上配置为自己本地的配置即可。
类似这样的,找不到某个类,这种错误大多都是因为依赖的问题。找到对应的类,看看是哪个依赖没有依赖进来。
解决方案统一都为:
也是找不到对应的类,但是这个类看路径是 xpack 里面,xpack 是啥?这个是 MS 企业版的包,需要支付 RMB 才行呢。不过现在 MS 好像有活动,可以免费申请企业版的使用: https://www.fit2cloud.com/metersphere/enterprise.html
这种解决方案很简单:直接注释掉对应的依赖即可。然后注释相对应的引用。
还有就是启动项目的时候,出现依赖 bean 的问题,这种问题截图没保存,就简单描述一下吧。
问题:启动项目的时候,出现 bean 依赖的问题,找不到对应的 bean 注入,或者调用某个方法,找不到对应的类.
解决:这种问题相信大多数有经验的开发人员会经常遇到,遇到问题,找到对应的类,排查问题,解决问题,因为问题不统一,所以不在明确怎么解决。需要这种问题的,善用百度。
看到这个日志,说明我们后台服务已经起来了,接下来我们启动前端。
前端服务启动是需要在对应项目下面启动的。执行 npm run serve(没安装 npm 的 自行看上面的安装。)
执行之后,我们会看到正在编译的日志信息...
注意:这里发现首页图片加载失败,F12 之后,也没有找到对应的路径,这里解决方案:把整个项目给 package 一下,然后在进行启动就好了。
至此,本地启动成功,可以愉快的开始测试之旅啦 ~~
Metersphere 发起压力测试->Node-controller 拉起 Jmeter 执行性能测试->kafka->Data-Streaming 从 kafka 获取数据进行计算->存放到 Mysql 中。
作为压测服务:需要拉起 jmeter 进行性能测试
项目地址:https://github.com/metersphere/node-controller.git
需要修改一下自己 Jmeter 路径。
还需要注意自己本地做性能测试的话需要安装 docker 环境的。因为 node-controller 是通过 docker 拉起 jmeter 容器做的性能测试。
如果拉取不成功检查自己的网路是否通外网。或者自己先去 docker pull 一下镜像。
作为数据解析服务: 从 kafka 获取数据计算之后放入到 mysql 中。
项目地址:https://github.com/metersphere/data-streaming.git
所以这个服务主要是看自己的 kafka 是否启动。
我本地是通过 docker 镜像起来的 kafka
修改自己的 metersphere.properties 文件即可
上面操作都完成之后 也记着 mvn clean install
Noce-Controller
Data-Streaming
看到以上信息说明启动成功。
然后我们在启动 metersphere 的 backend 和 frontend
添加自己的本地的 node-controller 服务的地址和端口。
这边有两个:通过 JMX 和引用接口自动化场景
我们直接引用接口那边模拟百度的请求。
(方式二)还可以直接在接口自动化那边一键转化成性能测试。这个功能很赞!!!
简单说明了下配置
其他的参数说明参考官网:https://metersphere.io/docs/v2.x/user_manual/load_test/load_test/
看状态已经完成,然后我们查看报告
可以看到成功执行。 报告页面的功能还是很多的,值得研究一下,可以参考官网:https://metersphere.io/docs/v2.x/user_manual/load_test/test_report/
以上就是本地启动并且执行性能的简单分享,如果有误,欢迎指正。
最后,在我们研究新东西的过程中难免会发生各种问题,这个时候善用文档,善用百度。
看到 Metersphere 的官网文档上东西还是挺全面的,希望有心的小伙伴多多研究一下,会解决 80% 的问题的。
https://metersphere.io/docs/v2.x/faq/installation/
如果是在解决不了,有社区群,可以到里面去咨询。