• Metersphere 源码启动并做性能测试


    一、背景

    最近了解到在github上比较🔥的一个一站式开源测试平台https://github.com/metersphere/metersphere,一看还是JAVA写的,并且还是开源的,看了下官网文档,覆盖测试管理、接口测试、UI 测试和性能测试等众多功能,所以就想本地跑起来试试。

    二、本地启动

    查看官网的文档,有很详细的步骤,如果第一次启动一定要仔细看清楚了。
    https://metersphere.io/docs/v2.x/dev_manual/

    2.1 基本架构

    首先了解一下基础的架构:
    image.png

    组件说明

    • Frontend: MeterSphere 的前端工程, 基于 Vue.js 进行开发。
    • Backend: MeterSphere 的后端工程, 基于 Spring Boot 进行开发, 为 MeterSphere 的功能主体。
    • Chrome Plugin: 浏览器插件, 录制 Web 访问请求生成 JMeter 脚本并导入到 MeterSphere 中用于接口测试及性能测试。
    • Jenkins Plugin: Jenkins 插件,在 Jenkins 中安装该插件后可将 Jenkins 任务中添加 MeterSphere 构建环节,用户在该构建环节中配置 MeterSphere 平台的认证信息后,可选择指定项目下的接口/性能测试进行触发执行。
    • Node Controller: 为性能测试提供独立节点类型的测试资源池, 接收来自系统的性能测试任务, 动态的启动 JMeter容器完成性能测试。
    • MySQL: MeterSphere 项目的主要数据均存储在 MySQL。
    • Redis: MeterSphere 项目登录用户的Session存储在 Redis。
    • Kafka: 接收 JMeter 产生的接口测试或者性能测试的结果数据。
    • Prometheus: 收集压力机及被测系统的监控数据。
    • Data Streaming: 从 Kafka 中获取接口测试或者性能测试结果数据进行处理后存入 MySQL 数据库。
    • Docker Engine: 为 Node Controller 提供 JMeter 容器运行环境。

    整体看下来,前端是Vue,后端是SpringBoot, 数据库是Mysql,缓存Redis等。

    2.2 环境准备&启动项目

    2.2.1 本地启动MS项目需要准备的环境。

    参考官网:https://metersphere.io/docs/v2.x/dev_manual/

    2.2.2 拉取项目

    • 先把代码跑起来:

    metersphere : (主要应用启动,包含前后端代码)
    ms-jmeter-core: (主要核心依赖)

    • 代码拉取下来之后,更改自己的maven环境和jdk环境信息,metersphere和ms-jmeter-core都需要配置。

    image.png

    image.png

    • ms-jmeter-core 打包: mvn clean install
    • 启动项目之前 我们需要配置基础的配置

    image.png
    找到代码中启动类,创建对应的文件目录。内容如下(参考官网): 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    修改以上配置为自己本地的配置即可。

    • 项目介绍

    image.png

    2.2.3 启动时经常发生的错误:

    • 错误一:

    image.png
    类似这样的,找不到某个类,这种错误大多都是因为依赖的问题。找到对应的类,看看是哪个依赖没有依赖进来。
    解决方案统一都为:

    1. 重新 mvn clean install 这个 ms-jmeter-core 项目。(大多数都是因为依赖的问题,注意版本要对应。)
    2. 如果还不行,清理一下idea 的缓存,File->Invaildate Caches…
    • 错误二:

    image.png
    也是找不到对应的类,但是这个类看路径是xpack里面,xpack是啥?这个是MS企业版的包,需要支付RMB才行呢。不过现在MS好像有活动,可以免费申请企业版的使用: https://www.fit2cloud.com/metersphere/enterprise.html
    这种解决方案很简单:直接注释掉对应的依赖即可。然后注释相对应的引用。

    • 错误三:

    还有就是启动项目的时候,出现依赖bean的问题,这种问题截图没保存,就简单描述一下吧。
    问题:启动项目的时候,出现bean依赖的问题,找不到对应的bean注入,或者调用某个方法,找不到对应的类.
    解决:这种问题相信大多数有经验的开发人员会经常遇到,遇到问题,找到对应的类,排查问题,解决问题,因为问题不统一,所以不在明确怎么解决。需要这种问题的,善用百度。

    2.2.4 后端启动成功

    image.png
    看到这个日志,说明我们后台服务已经起来了,接下来我们启动前端。

    2.2.5 前端启动成功

    前端服务启动是需要在对应项目下面启动的。执行 npm run serve (没安装npm的 自行看上面的安装。)
    image.png
    执行之后,我们会看到正在编译的日志信息…
    image.png

    看到以上信息,表示已经启动成功了,接下来我们浏览器访问下。

    2.2.6 访问http://localhost8080

    image.png
    注意:这里发现首页图片加载失败,F12之后,也没有找到对应的路径,这里解决方案:把整个项目给package一下,然后在进行启动就好了

    image.png

    至此,本地启动成功,可以愉快的开始测试之旅啦 ~~

    三、执行性能测试

    3.1 启动准备

    1. 根据官方提供的这个图来看。做性能测试需要准备node-controller和Data-streaming

    image.png

    3.1.1. 性能测试路径

    Metersphere发起压力测试->Node-controller拉起Jmeter执行性能测试->kafka->Data-Streaming从kafka获取数据进行计算->存放到Mysql中。

    3.2 拉取Node-Controller项目

    作为压测服务:需要拉起jmeter进行性能测试
    项目地址:https://github.com/metersphere/node-controller.git

    image.png
    需要修改一下自己Jmeter路径。
    还需要注意自己本地做性能测试的话需要安装docker环境的。因为node-controller是通过docker拉起jmeter容器做的性能测试。
    如果拉取不成功检查自己的网路是否通外网。或者自己先去docker pull 一下镜像。

    image.png
    image.png

    然后 mven clean install 一下

    3.3 拉取Data-Streaming

    作为数据解析服务: 从kafka获取数据计算之后放入到mysql中。
    项目地址:https://github.com/metersphere/data-streaming.git

    image.png

    所以这个服务主要是看自己的kafka是否启动。
    我本地是通过docker镜像起来的kafka
    image.png
    修改自己的metersphere.properties文件即可
    image.png

    上面操作都完成之后 也记着 mvn clean install

    3.4 分别启动 Noce-Controller 和 Data-Streaming

    Noce-Controller
    image.png

    Data-Streaming
    image.png

    看到以上信息说明启动成功。
    然后我们在启动metersphere的backend和frontend

    3.4.1 配置压测资源池

    image.png
    image.png
    添加自己的本地的node-controller服务的地址和端口。

    3.5 开始性能测试

    上面所有工作都完成之后,我们开始进行性能测试。

    3.5.1 创建性能测试

    image.png
    这边有两个:通过JMX和引用接口自动化场景
    我们直接引用接口那边模拟百度的请求。

    image.png

    (方式二)还可以直接在接口自动化那边一键转化成性能测试。这个功能很赞!!!
    image.png

    3.5.2 配置压力配置

    image.png
    简单说明了下配置
    其他的参数说明参考官网:https://metersphere.io/docs/v2.x/user_manual/load_test/load_test/

    3.5.3 保存执行

    image.png
    image.png
    image.png
    看状态已经完成,然后我们查看报告
    image.png
    可以看到成功执行。 报告页面的功能还是很多的,值得研究一下,可以参考官网:https://metersphere.io/docs/v2.x/user_manual/load_test/test_report/

    四、 放在最后

    以上就是本地启动并且执行性能的简单分享,如果有误,欢迎指正。
    最后,在我们研究新东西的过程中难免会发生各种问题,这个时候善用文档,善用百度。
    看到Metersphere的官网文档上东西还是挺全面的,希望有心的小伙伴多多研究一下,会解决80%的问题的。
    https://metersphere.io/docs/v2.x/faq/installation/
    如果是在解决不了,有社区群,可以到里面去咨询。

  • 相关阅读:
    待看12313132
    【C++数据结构】性能测量
    暑假超越计划练习题(4)
    从零安装Redis
    【数据结构与算法-初阶】顺序表和链表
    WhatsApp自动营销软件是真实的吗?对做外贸有帮助吗?
    蓝牙模块传输音频出现卡顿原因分析
    Linux系统如何查看服务器带宽及网络使用情况
    CY3/CY5/CY7标记牛血清白蛋白/人血清白蛋白,CY3/CY5/CY7-BSA/HSA
    CNN进展:AlexNet、VGGNet、ResNet 和 Inception
  • 原文地址:https://blog.csdn.net/hao65103940/article/details/126887786