前言: 这是第一次接触java项目,所以踩了很多很多坑,真是一点一点摸索着过来的,如果能帮到大家,希望给我个赞
介绍
MeterSphere 是一站式开源持续测试平台,涵盖测试跟踪、接口测试、UI 测试和性能测试等,全面兼容 JMeter、Selenium 等主流开源标准,有效助力开发和测试团队在线共享协作,实现端到端的测试管理跟踪可视化、自动化测试、性能测试及融入持续交付 DevOps 体系,并充分利用云弹性进行高度可扩展的自动化测试,从而加速高质量的软件交付,推动中国测试行业整体效率的提升
产品优势
开源:基于开源、兼容开源,按月发布新版本、日均下载安装超过100次、被大量用户验证。
一站式:全面涵盖测试跟踪、接口测试、UI测试、性能测试并打通联动。
全生命周期:满足从测试计划、测试执行到测试报告分析的全生命周期需求。
持续测试:无缝对接 Bug 管理工具和持续集成工具等,将测试融入持续交付和 DevOps 体系。
团队协作:支持团队协作和资产沉淀,无论团队规模如何,总有适合的落地方式。
主要功能
测试跟踪:对接主流项目管理平台,测试过程全链路跟踪管理;列表脑图模式自由切换,用例编写更简单、测试报告更清晰。
接口测试:集 JMeter、PostMan 易用性和功能性于一体; 支持API 管理、Mock 服务、场景编排、扩展协议等。
UI 测试:基于 Selenium 浏览器自动化,高度可复用的测试脚本;无需复杂的代码编写,人人都可开展的低代码自动化测试。
性能测试:兼容 JMeter 的同时补足其分布式、监控与报告以及管理短板;帮助团队实现高并发、分布式的性能压测,完成压测任务的统一调度与管理。
前置环境
- 项目仓库地址: https://gitcode.com/metersphere/metersphere/tree/v2.10
- 依赖包地址: https://github.com/liuruibin/ms-jmeter-core/tree/v2.2
- JDK版本: 17.0.10
- node: 20.9.0
- mysql: 8.0.36
- maven: 3.96
- redis
- zookeeper
- kafka
- IEDA
项目下载
- 项目版本是2.2的,ms-jmeter-core也是V2.2(版本不能下载错,否则打包时会出现依赖错误)
解压打包
- 解压到对应文件夹,使用IDEA打开,同时新窗口打开ms-jmeter-core项目
- 先将ms-jmeter-core项目打包(如果没有配置maven的,记得先去下载配置好)
# 进入终端ms-jmeter-core路径下 执行命令
mvn clean install
在metersphere项目中导入刚打包好的依赖
前端运行
打开终端,进入主目录下的frontend目录,执行命令,安装前端依赖
npm install
完成后执行打包命令,这一步应该会出错,出错是因为node环境太高的问题,按照下图进行修改
npm run build
# 修改
"build-win": "SET NODE_OPTIONS=--max_old_space_size=4096 --openssl-legacy-provider && vue-cli-service build",
# 修改后重新执行
npm run build-win
# 构建成功后执行
npm run serve
配置后端
打开metersphere项目
在终端执行mvn install
在metersphere项目根目录下创建\opt\metersphere\conf\metersphere.properties文件
将下面的代码粘贴进去
# 数据库配置
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=123456
# kafka 配置,node-controller 以及 data-streaming 服务需要使用 kafka 进行测试结果的收集和处理
kafka.partitions=1
kafka.replicas=1
kafka.topic=JMETER_METRICS
kafka.test.topic=JMETER_TESTS
kafka.bootstrap-servers=localhost:9092
kafka.log.topic=JMETER_LOGS
kafka.report.topic=JMETER_REPORTS
# 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=localhost
spring.redis.port=6379
spring.redis.password=123456
# 启动模式,lcoal 表示以本地开发模式启动
run.mode=local
新建\opt\metersphere\bin目录,把backend/src/main/resources/jmeter/bin 目录下的配置文件拷贝到这个目录下
修改Application.java、logback.xml、generatorConfig.xml中的metersphere.properties路径
复制metersphere.properties的绝对路径,在三个文件中修改
修改base.properties文件中jmeter.home,指向/opt/metersphere/bin目录
运行后端
进入到backend目录,输入打包命令.打包完成后,修改运行配置,出现错误请看后面
mvn clean install
按照图片进行勾选
点击绿色箭头,运行项目,出现下面的内容就是运行成功了
打开前端页面,输入用户名.用户名:admin 密码:metersphere 进行登录
bug及解决办法
1.在后端构建时,出现错误
原因:缺少文件夹
解决:先运行前端或者在前端目录下创建dist文件夹
2.在后端构建时,出现错误: 程序包io.metersphere.xpack.ui.dto不存在
原因: xpack是企业包,这里要付费才能使用
解决: 注释掉
3.后端构建时,出现错误
原因:通过观察,这错误是在文件中引入失败的
解决:注释,重新打包
4.运行时出现错误:Public Key Retrieval is not allowed
解决:在\opt\metersphere\conf\metersphere.properties中的spring.datasource.url中添加allowPublicKeyRetrieval=true参数
5.运行时出现错误:Schema metersphere_dev
contains a failed migration to version 68
原因:迁移错误
解决: 可以找到项目路径\backend\src\main\resources\db\migration\V68__modify_api_test_case.sql文件,将其中的sql复制到Navicat(或其他数据库管理软件)中执行,执行成功后将metersphere_version表中对应行的success值改为1
6.前端执行命令:npm run build-win时出现错误: 提示xpack文件夹不存在
解决: 在frontend/src/business/components目录下创建xpack文件夹
7.运行项目,出现错误: 文件名或扩展名过长
解决
方法1:修改系统
修改最大长度限制
打开命令提示符,输入REGEDIT
找到路径:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
修改LongPathsEnabled的值为1,点击确定
重启电脑生效
方法2: 修改命令路径
将文件复制到另一个名称较短的文件夹
方法3: 修改运行配置
编辑运行配置-进行修改选项 - 选择缩短命令行
8.运行项目时,出现错误: Cannot invoke “io.metersphere.base.domain.FileContent.getFile()” becavse “value” is null
原因:数据库迁移时出现的错误,数据表不完整.通过debug错误断点可以看到,是因为file_metadata中没有latest字段,在第130号迁移文件中,有几句SQL语句执行没有生效,数据库中无对应字段,导致报错
解决:把这几句SQL放到数据库客户端软件中手动执行,执行成功后要刷新表
9.运行项目时,正常运行,在打开前端页面,输入用户名/密码登录时,出现错误:sol error happened, please check logs.
原因:检查了数据库和密码,应该是没错的,还是数据库某些字段缺失的问题
解决:导入服务端生成的SQL脚本
导入步骤:
打开DBeaver
找到对应数据库→ 右键 →工具 →执行脚本
导入SQL脚本,点击开始,刷新数据库
10.导入服务端SQL脚本后运行项目,出现错误:invalid stream header: 504B0304
原因: 在file_content中存在原Linux系统的数据,生成的file和windows系统生成的对象输入流不同,无法解析
解决: 删除file_content中的数据,重新生成,同时删除file_metadata表中的关联数据,重新启动
11.有时候构建项目时也会出现包导入的问题,这个要检查maven配置,修改后重新构建